XSQLDA index out of range ve Field not found.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
palandoken
Üye
Mesajlar: 151
Kayıt: 16 Eki 2006 10:43
Konum: ERZURUM

Mesaj gönderen palandoken »

@cihan merhaba,
dediğin gibi yaptım ama yine aynı hatayı veriyor.Field ADI not found.
akıllanma , aklını başına toplama , toparlanma , kendisini derleme bu dünyaya ait bir vazife.
ahirette nasıl olsa aklın başına gelecek.
Kullanıcı avatarı
cihan
Üye
Mesajlar: 65
Kayıt: 02 Ağu 2005 03:34

Mesaj gönderen cihan »

palandoken yazdı:@cihan merhaba,
dediğin gibi yaptım ama yine aynı hatayı veriyor.Field ADI not found.
ibdataset in
select, insert,modify,delete ve refresh SQL lerini yazarsan bir bakalım

belkide insertden kaynaklanmıyordur.
palandoken
Üye
Mesajlar: 151
Kayıt: 16 Eki 2006 10:43
Konum: ERZURUM

Mesaj gönderen palandoken »

cihan yazdı:
ibdataset in
select, insert,modify,delete ve refresh SQL lerini yazarsan bir bakalım

belkide insertden kaynaklanmıyordur.
Merhaba,

Şimdi DENEME isminde bir tablo var.
IDNO INTEGER+Primary Key+Autoincrement
ADI VarChar(20)
SOYADI VarChar(20)
TELEFON VarChar(15)

Datamodule Name=Veri
Veri'de 1 IBDatabase,1 IBTransaction,1IBDataset var.Bağlantılar tamam.
IBDataSet'in

SelectSQL'i

Kod: Tümünü seç

select * from DENEME
InsertSQL'i

Kod: Tümünü seç

insert into DENEME
  (IDNO, ADI, SOYADI, TELEFON)
values
  (:IDNO, :ADI, :SOYADI, :TELEFON)
ModifySQL'i

Kod: Tümünü seç

update DENEME
set
  IDNO = :IDNO,
  ADI = :ADI,
  SOYADI = :SOYADI,
  TELEFON = :TELEFON
where
  IDNO = :OLD_IDNO
RefreshSQL'i

Kod: Tümünü seç

Select 
  IDNO,
  ADI,
  SOYADI,
  TELEFON
from DENEME 
where
  IDNO = :IDNO
DeleteSQL'i

Kod: Tümünü seç

delete from DENEME
where
  IDNO = :OLD_IDNO

Button1Click

Kod: Tümünü seç

   With Veri.IBDataSet1 do
    begin
       InsertSQL.Clear;
       Prepare ;
       InsertSQL.Add('Insert Into DENEME');
       InsertSQL.Add( '(ADI, SOYADI, TELEFON)' );
       InsertSQL.Add(' values(:ADI, :SOYADI, :TELEFON ) ');
       ParamByName('ADI').AsString := Edit1.Text;
       ParamByName('SOYADI').AsString := Edit2.Text;
       ParamByName('TELEFON').AsString := Edit3.Text;
       UnPrepare;
       ExecSQL;
    end;
Burada IDNO autoincrement bir alan olduğu için değer atamadım.Zaten atasamda 'Field IDNO not found' hatasını veriyor.

alttaki kısımda ADI başta olduğu için verdiği hata 'Field ADI not found'.Başa SOYADI'nı alsam bu seferde 'Field SOYADI not found' diye hata veriyor.

Kod: Tümünü seç

       ParamByName('ADI').AsString := Edit1.Text;
       ParamByName('SOYADI').AsString := Edit2.Text;
       ParamByName('TELEFON').AsString := Edit3.Text;
akıllanma , aklını başına toplama , toparlanma , kendisini derleme bu dünyaya ait bir vazife.
ahirette nasıl olsa aklın başına gelecek.
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Prepare ve Unprepare satırlarını kaldırıp dener misiniz?

İyi çalışmalar.
palandoken
Üye
Mesajlar: 151
Kayıt: 16 Eki 2006 10:43
Konum: ERZURUM

Mesaj gönderen palandoken »

Hakan Can yazdı:Prepare ve Unprepare satırlarını kaldırıp dener misiniz?

İyi çalışmalar.
Denedim.Değişen bir şey olmadı.Yine aynı hataları veriyor.
akıllanma , aklını başına toplama , toparlanma , kendisini derleme bu dünyaya ait bir vazife.
ahirette nasıl olsa aklın başına gelecek.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
ibdataset o şekilde kullanılmazki.
ibdataseti normal bir table gibi kullanmalısın.
kod şöyle olmalı.

Kod: Tümünü seç

 With Veri.IBDataSet1 do
    begin
       insert;
       fieldbyname('ADI').asstring:=XXXX;
       fieldbyname('XXXX').asstrign:=XXXX;
       post;
    end; 
ibdatsetin sqllerini ayarladığınız zaman normal table gibi kullanırsınız.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
palandoken
Üye
Mesajlar: 151
Kayıt: 16 Eki 2006 10:43
Konum: ERZURUM

Mesaj gönderen palandoken »

a.s.
aslangeri teşekkür ederim.Dediğin gibiymiş.Şimdi oldu.
Fakat burada IDNO alanını nasıl otomatik artırıcam.Bunun için delphi tarafında yapmam gereken birşey var mı?FireBird'de IDNO alanını oluştururken primary key ve autoincrement kutucuklarını işaretlemiştim.

Tekrar teşekkürler.
akıllanma , aklını başına toplama , toparlanma , kendisini derleme bu dünyaya ait bir vazife.
ahirette nasıl olsa aklın başına gelecek.
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

Datasetin GanaratorField property si bu iş içindir. buradaki bilgileri doldurman gerekli..

Generator Name
Oto Artacak Field
Artış zamanı (newrecord, beforepost, server)

newrecord kayıt append veya insert olduğunda hemen belirir.
beforepost kaydedilmeden hemen önce belirir
server ise oto verir. server e bırakırsan artış değerini refresh yapmadan göremezsin.

Kolay Gelsin...
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.

Mevlana

OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
eğer generator field kullanacaksanız insert sql de id parametresinide geçmeniz lazım. aksi halde generator çifter çifter artacaktır.
ID parametresini geçmediğiniz için trigerda id alanı null görünecek ve yeniden generatorden değer alacaktır.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Cevapla