Firedac Stan Eval 100 hatası

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Gumiho309
Üye
Mesajlar: 35
Kayıt: 01 Eyl 2020 03:01

Firedac Stan Eval 100 hatası

Mesaj gönderen Gumiho309 »

Merhabalar, iki sütun değerini karşılaştırmak için kullandığım koddan [ FireDac] [Stan] [Eval]-100 columns or function [oturan] is not found. Hint: if the name is function name, than add FireDac.Stan.ExprFuncs to uses clause. Uyarısı alıyorum. İpucu olarak eklemem önerilen şey zaten mevcut. Sorunu nasıl çözebilirim aynı sorunla karşılan ya da fikri olan varsa yardımcı olursa şimdiden çok teşekkür ederim. Yazdığım kodu aşagıya bırakıyorum.

Kod: Tümünü seç

var
daireNo: variant;
begin
while not DataModule8.Qaidat.Eof do
begin
  daireNo:=DataModule8.Qdaire.Lookup('Oturan', DataModule8.Qaidat.fieldByName('Açıklama').AsString.ToLower, 'DaireNo');
  if not(VarIsNull (daireNo)) then
  begin
   DataModule8.Qaidat.FieldByName('DaireNo').AsString:=daireNo[0];
    DataModule8.Qaidat.Post;
  end;
  DataModule8.Qaidat.Next;
end;
end;
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: Firedac Stan Eval 100 hatası

Mesaj gönderen ertank »

Merhaba,

Hata mesajına bakılır ise "oturan" kolonu Qdaire sorgusu içinde yok.
Gumiho309
Üye
Mesajlar: 35
Kayıt: 01 Eyl 2020 03:01

Re: Firedac Stan Eval 100 hatası

Mesaj gönderen Gumiho309 »

ertank yazdı: 25 Eyl 2020 09:11 Merhaba,

Hata mesajına bakılır ise "oturan" kolonu Qdaire sorgusu içinde yok.
Bende öyle düşünmüştüm fakat var. Emin olmak için de o tabloyu aktardım oturan kolonunun verileri sorunsuz bir şekilde geliyorda.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: Firedac Stan Eval 100 hatası

Mesaj gönderen freeman35 »

Tasarımın hatalı,
- "Oturan" field isimleri, ya hepsi küçük harf olsun, yada buyük harf
- tabloların arasında ki ilişkileri, string ler üzerinden uygulama. en kaba anlatımla, her tabloya ki "ID" isim en kullanılandır, bir sayı (satır numarası )tanımla ve bunu PrimaryKey tanımla, tabloları bunlarla ilişkilendir. ( master-detail )
- İngilizce olmayan ve rakamlar haricindeki karakterleri field isminde kullanma "Açıklama" gibi
- .EOF den önce .First Kullanmanı tavsiye ederim, bu procedure ü 2. kez çalıştırdığında döngün çalışmayacaktır.
- Umarım 8 ve daha fazla dataModule yoktur programinda :)
- Qdaire nin "Oturan" alanında, Qaidat ın "Açıklama" alını arttırıp, bulduğu Qdaire nin DaireNo alanını alıp, Qaidat ın DaireNo suna "Qaidat.Edit;" demeden post edeceksin?????
- Neden Qaidat a veri girdiğin yede, DaireNo alanına DBLookupcomboBox ile kaydetmiyorsun?
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Gumiho309
Üye
Mesajlar: 35
Kayıt: 01 Eyl 2020 03:01

Re: Firedac Stan Eval 100 hatası

Mesaj gönderen Gumiho309 »

freeman35 yazdı: 26 Eyl 2020 10:28 Tasarımın hatalı,
- "Oturan" field isimleri, ya hepsi küçük harf olsun, yada buyük harf
- tabloların arasında ki ilişkileri, string ler üzerinden uygulama. en kaba anlatımla, her tabloya ki "ID" isim en kullanılandır, bir sayı (satır numarası )tanımla ve bunu PrimaryKey tanımla, tabloları bunlarla ilişkilendir. ( master-detail )
- İngilizce olmayan ve rakamlar haricindeki karakterleri field isminde kullanma "Açıklama" gibi
- .EOF den önce .First Kullanmanı tavsiye ederim, bu procedure ü 2. kez çalıştırdığında döngün çalışmayacaktır.
- Umarım 8 ve daha fazla dataModule yoktur programinda :)
- Qdaire nin "Oturan" alanında, Qaidat ın "Açıklama" alını arttırıp, bulduğu Qdaire nin DaireNo alanını alıp, Qaidat ın DaireNo suna "Qaidat.Edit;" demeden post edeceksin?????
- Neden Qaidat a veri girdiğin yede, DaireNo alanına DBLookupcomboBox ile kaydetmiyorsun?
Kolay gele
Çok teşekkür ederim hepsini deniyeceğim.
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: Firedac Stan Eval 100 hatası

Mesaj gönderen ertank »

Gumiho309 yazdı: 25 Eyl 2020 09:16 Bende öyle düşünmüştüm fakat var. Emin olmak için de o tabloyu aktardım oturan kolonunun verileri sorunsuz bir şekilde geliyorda.
O zaman oturan kolonu tabloda nasıl oluşturulmuş incelemek lazım. Çift tırnak içinde (isim zorunlu bir şekilde bu olsun) olarak oluşturulmış ise tablo oluşturmada nasıl yazıldı ise birebir yanı şekilde refere edilmesi gerekebilir.

Kod: Tümünü seç

create table ornektablo (
"oturan" varchar(50),
alan2 varchar(20),
alan3 integer
);
Yukarıdaki örnek FirebirdSQL veritabanı içinde çalıştırılır ise oturan küçük harfli bir alan adı olacaktır. alan2 ve alan3 ise büyük harfe çevrilecektir (FirebirdSQL nesne isimlerini standart büyük harf kullanır)

Aynı örnek SQL Server veritabanı içinde çalıştırılır ise bütün alanlar yazıldığı şekilde alan adı oluşturulacaktır. Ancak Oturan gibi ilk harfi büyük veya OTURAN gibi bir sql çalıştırırsanız sorun yaşam ihtimaliniz vardır. (İçinde Türkçe karakter olmadığı için bu örnekte sorun çıkmayabilir. Ancak özellikle küçük "i" harfi içeren alanlar soruna yol açacaktır)

SQLite veritabanında da yukarıdaki örnek çalıştırıldığı zaman yine tüm alanlar yazıldığı gibi oluşturulacaktır. Ancak sorgu çalıştırdığınızda oturan kolonu nesne olarak sürekli küçük harfli şekilde sonuçlar içine eklenecektir.

FireDAC kullanmıyorum ve alan eşleştirmesini nasıl yaptığını bilmiyorum. Bu noktada Qdaire sorgusunu bir DBGrid içinde görüp alan adlarını kontrol etmeli ve birebir aynı karakterler ile fonksiyonu kullanmayı denemelisiniz.
Gumiho309
Üye
Mesajlar: 35
Kayıt: 01 Eyl 2020 03:01

Re: Firedac Stan Eval 100 hatası

Mesaj gönderen Gumiho309 »

ertank yazdı: 26 Eyl 2020 03:12
Gumiho309 yazdı: 25 Eyl 2020 09:16 Bende öyle düşünmüştüm fakat var. Emin olmak için de o tabloyu aktardım oturan kolonunun verileri sorunsuz bir şekilde geliyorda.
O zaman oturan kolonu tabloda nasıl oluşturulmuş incelemek lazım. Çift tırnak içinde (isim zorunlu bir şekilde bu olsun) olarak oluşturulmış ise tablo oluşturmada nasıl yazıldı ise birebir yanı şekilde refere edilmesi gerekebilir.

Kod: Tümünü seç

create table ornektablo (
"oturan" varchar(50),
alan2 varchar(20),
alan3 integer
);
Yukarıdaki örnek FirebirdSQL veritabanı içinde çalıştırılır ise oturan küçük harfli bir alan adı olacaktır. alan2 ve alan3 ise büyük harfe çevrilecektir (FirebirdSQL nesne isimlerini standart büyük harf kullanır)

Aynı örnek SQL Server veritabanı içinde çalıştırılır ise bütün alanlar yazıldığı şekilde alan adı oluşturulacaktır. Ancak Oturan gibi ilk harfi büyük veya OTURAN gibi bir sql çalıştırırsanız sorun yaşam ihtimaliniz vardır. (İçinde Türkçe karakter olmadığı için bu örnekte sorun çıkmayabilir. Ancak özellikle küçük "i" harfi içeren alanlar soruna yol açacaktır)

SQLite veritabanında da yukarıdaki örnek çalıştırıldığı zaman yine tüm alanlar yazıldığı gibi oluşturulacaktır. Ancak sorgu çalıştırdığınızda oturan kolonu nesne olarak sürekli küçük harfli şekilde sonuçlar içine eklenecektir.

FireDAC kullanmıyorum ve alan eşleştirmesini nasıl yaptığını bilmiyorum. Bu noktada Qdaire sorgusunu bir DBGrid içinde görüp alan adlarını kontrol etmeli ve birebir aynı karakterler ile fonksiyonu kullanmayı denemelisiniz.
Çok teşekkür ederim sorunuma çözüm buldum. Kodlarda eksiğim olduğu için çalışmıyor fakat aynı sorunla karşılaşanlar için tablo isimlerini sadece büyük harf olarak değiştirdiğimde hata vermeyi bıraktı.
Gumiho309
Üye
Mesajlar: 35
Kayıt: 01 Eyl 2020 03:01

Re: Firedac Stan Eval 100 hatası

Mesaj gönderen Gumiho309 »

freeman35 yazdı: 26 Eyl 2020 10:28 Tasarımın hatalı,
- "Oturan" field isimleri, ya hepsi küçük harf olsun, yada buyük harf
- tabloların arasında ki ilişkileri, string ler üzerinden uygulama. en kaba anlatımla, her tabloya ki "ID" isim en kullanılandır, bir sayı (satır numarası )tanımla ve bunu PrimaryKey tanımla, tabloları bunlarla ilişkilendir. ( master-detail )
- İngilizce olmayan ve rakamlar haricindeki karakterleri field isminde kullanma "Açıklama" gibi
- .EOF den önce .First Kullanmanı tavsiye ederim, bu procedure ü 2. kez çalıştırdığında döngün çalışmayacaktır.
- Umarım 8 ve daha fazla dataModule yoktur programinda :)
- Qdaire nin "Oturan" alanında, Qaidat ın "Açıklama" alını arttırıp, bulduğu Qdaire nin DaireNo alanını alıp, Qaidat ın DaireNo suna "Qaidat.Edit;" demeden post edeceksin?????
- Neden Qaidat a veri girdiğin yede, DaireNo alanına DBLookupcomboBox ile kaydetmiyorsun?
Kolay gele
İkinci madde de dediğiniz master detail bağlantıyı yapmayı deniyorum. İki tablomda da ID alanı var normalde. Master tablo olarak daireyi seçip detail içinde aidat tablosunu seçtim. Aidattaki qurydeki alana DaireId integer diye bir alan tanımladım. Bu alanı aidatın indexfield name kısmında seçmem gerekiyor normalde fakat bu alan o kısımda gözükmüyor nerede hata yapıyorum. Master detail bağlantı hiç yapmadım araştırdığım kadarıyla yapmaya çalışıyorum. Bu soruyu başka başlık açarak sormam gerekiyor mu bilmiyorum ama öyleyse silip yeni başlık açabilirim. Şimdiden teşekkür ederim.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: Firedac Stan Eval 100 hatası

Mesaj gönderen freeman35 »

Arama yapıldığında bulmak ve anlaşılmak adına, evet yeni başlık açman uygun olur, soru sormadan önce arama yapın diye bu yüzden ısrarcıyız.
Soru sorarken, biz yanında değiliz, ve herkes kendi işiyle uğraşırken, yazılanları hemen kafasında canlandırması mümkün değil, ne kadar detaylı yazarsan sorunun çözülme hızı da artacaktır. Veritabanın ne ? mesela "detail içinde aidat tablosunu seçtim." ?????
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Gumiho309
Üye
Mesajlar: 35
Kayıt: 01 Eyl 2020 03:01

Re: Firedac Stan Eval 100 hatası

Mesaj gönderen Gumiho309 »

freeman35 yazdı: 27 Eyl 2020 08:26 Arama yapıldığında bulmak ve anlaşılmak adına, evet yeni başlık açman uygun olur, soru sormadan önce arama yapın diye bu yüzden ısrarcıyız.
Soru sorarken, biz yanında değiliz, ve herkes kendi işiyle uğraşırken, yazılanları hemen kafasında canlandırması mümkün değil, ne kadar detaylı yazarsan sorunun çözülme hızı da artacaktır. Veritabanın ne ? mesela "detail içinde aidat tablosunu seçtim." ?????
Yeni bir başlık altında detaylı bir şekilde sorayım teşekkür ederim.
Gumiho309
Üye
Mesajlar: 35
Kayıt: 01 Eyl 2020 03:01

Re: Firedac Stan Eval 100 hatası

Mesaj gönderen Gumiho309 »

freeman35 yazdı: 26 Eyl 2020 10:28 Tasarımın hatalı,
- "Oturan" field isimleri, ya hepsi küçük harf olsun, yada buyük harf
- tabloların arasında ki ilişkileri, string ler üzerinden uygulama. en kaba anlatımla, her tabloya ki "ID" isim en kullanılandır, bir sayı (satır numarası )tanımla ve bunu PrimaryKey tanımla, tabloları bunlarla ilişkilendir. ( master-detail )
- İngilizce olmayan ve rakamlar haricindeki karakterleri field isminde kullanma "Açıklama" gibi
- .EOF den önce .First Kullanmanı tavsiye ederim, bu procedure ü 2. kez çalıştırdığında döngün çalışmayacaktır.
- Umarım 8 ve daha fazla dataModule yoktur programinda :)
- Qdaire nin "Oturan" alanında, Qaidat ın "Açıklama" alını arttırıp, bulduğu Qdaire nin DaireNo alanını alıp, Qaidat ın DaireNo suna "Qaidat.Edit;" demeden post edeceksin?????
- Neden Qaidat a veri girdiğin yede, DaireNo alanına DBLookupcomboBox ile kaydetmiyorsun?
Kolay gele
Son 2 maddeyi biraz daha açarak nasıl yapacağımı anlatabilir misiniz? Sondan 2.maddede Qaidatın açıklama alanını artırıp dediğinizi anlayamadım neyi ve nasıl arttıracağım? DBLookupComboBox ile kayıt nasıl yapılır biraz bakındım fakat anlayamadîm. Sizin için sorun olmuyacaksa bunları örnekle gösterebilir misiniz?
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: Firedac Stan Eval 100 hatası

Mesaj gönderen freeman35 »

Gumiho309 yazdı: 28 Eyl 2020 11:47 Son 2 maddeyi biraz daha açarak nasıl yapacağımı anlatabilir misiniz? Sondan 2.maddede Qaidatın açıklama alanını artırıp dediğinizi anlayamadım neyi ve nasıl arttıracağım? DBLookupComboBox ile kayıt nasıl yapılır biraz bakındım fakat anlayamadîm. Sizin için sorun olmuyacaksa bunları örnekle gösterebilir misiniz?
Kusura bakma, yazım hatası olmuş, klavyenin aziziliği. "artırıp" ->arattırıp olacak o. Yani:
Qdaire nin "Oturan" alanında, Qaidat ın "Açıklama" alını arattırıp, bulduğu Qdaire nin DaireNo alanını alıp, Qaidat ın DaireNo suna "Qaidat.Edit;" demeden post edeceksin?????
Cümle sonundaki "edeceksin" emir kipi olarak anlaşıldı muhtemelen, bu benim fıtratıma ters, yani birine emretmek.
????? ni ekleme sebebimse şaşkınlıktan, ve dikkatini çekmek içindi. O satır senin gönderdiğin kodlarda yaptıklarını anlatıryor, yapamadıklarını da "Qaidat.Edit;" gibi.

viewtopic.php?t=9855
Arkadaş gayet güzel anlatmış, Ben öğretmen değilim, malesef o kabiliyet bende yok,
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Gumiho309
Üye
Mesajlar: 35
Kayıt: 01 Eyl 2020 03:01

Re: Firedac Stan Eval 100 hatası

Mesaj gönderen Gumiho309 »

freeman35 yazdı: 29 Eyl 2020 08:47
Gumiho309 yazdı: 28 Eyl 2020 11:47 Son 2 maddeyi biraz daha açarak nasıl yapacağımı anlatabilir misiniz? Sondan 2.maddede Qaidatın açıklama alanını artırıp dediğinizi anlayamadım neyi ve nasıl arttıracağım? DBLookupComboBox ile kayıt nasıl yapılır biraz bakındım fakat anlayamadîm. Sizin için sorun olmuyacaksa bunları örnekle gösterebilir misiniz?
Kusura bakma, yazım hatası olmuş, klavyenin aziziliği. "artırıp" ->arattırıp olacak o. Yani:
Qdaire nin "Oturan" alanında, Qaidat ın "Açıklama" alını arattırıp, bulduğu Qdaire nin DaireNo alanını alıp, Qaidat ın DaireNo suna "Qaidat.Edit;" demeden post edeceksin?????
Cümle sonundaki "edeceksin" emir kipi olarak anlaşıldı muhtemelen, bu benim fıtratıma ters, yani birine emretmek.
????? ni ekleme sebebimse şaşkınlıktan, ve dikkatini çekmek içindi. O satır senin gönderdiğin kodlarda yaptıklarını anlatıryor, yapamadıklarını da "Qaidat.Edit;" gibi.

viewtopic.php?t=9855
Arkadaş gayet güzel anlatmış, Ben öğretmen değilim, malesef o kabiliyet bende yok,
Teşekkür ederimm şimdi anladım.
Cevapla