Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
AdoQuery ikinci işleminde duruyor.
#1
Bir proje üzerinde çalışıyorum. ürünleri listelediğim bir formdan verileri alıp değiştirmek istediklerimi değiştiriyorum. fakat hemen ardından başka bir ürün değiştirmek istediğimde ürünü çağırırken query active etmeye çalışırken

         Acces violation at address004081FE

hatası alıyorum ve proğram duruyor. AdoQuery kullanıyorum ama formu kapatıp açınca sorun gidiyor. Query i peş peşe kullanınca birikme mi oluyor oluyorsa bunu formu kapatıp açmaklamı düzeltmem gerek yoksa query tamamen resetleyen bir komut varmı

try
        ////////// ikinci kes çağırıldığında burada hataveriyor. ama ilkinde sorun yok.///////

       showmessage('Query.First;');
       Query.SQL.Clear;
      
       ///////////

       Query.SQL.Add('SELECT * FROM stokkarti inner join stokgrup on grupid=stokgrup.sgid inner join stokbirim on stokid=stokkarti.id where stokkarti.id='+inttostr(miras));
       Query.Active:=true;
       Query.First;

         while not Query.Eof do
         begin
           kulid:=Query.Fields.FieldByName('kulid').AsInteger;
           Edit1.Text:=Query.fields.FieldByName('stokkodu').AsString;
           Edit2.Text:=Query.Fields.FieldByName('stokadi').AsString;
           Edit3.Text:=inttostr(Query.Fields.FieldByName('garanti').AsInteger);
           Edit4.Text:=inttostr(Query.Fields.FieldByName('kdv').AsInteger);
           Edit5.Text:=inttostr(Query.Fields.FieldByName('kritik').AsInteger);
           if Query.Fields.FieldByName('uyari').AsInteger = 1 then
           begin
             cekb1.Checked:=true; uyari:=1;
           end;
           memo1.Text:=Query.Fields.FieldByName('aciklama').AsString;
           for say := 0 to cbox1.Items.Count do
           begin
             if Query.Fields.FieldByName('sgaciklama').AsString = CBox1.Items[say]  then
             begin
                cbox1.ItemIndex:=say;
             end;
           end;
           ASP_StokBirimAktar.Parameters.ParamByName('@stokid').Value:=Query.Fields.FieldByName('id').AsInteger;
           ASP_StokBirimAktar.Parameters.ParamByName('@birim').Value:=Query.Fields.FieldByName('birim').AsString;
           ASP_StokBirimAktar.Parameters.ParamByName('@adet').Value:=Query.Fields.FieldByName('adet').AsInteger;
           ASP_StokBirimAktar.Parameters.ParamByName('@bbarkod').Value:=Query.Fields.FieldByName('barkod').AsString;
           ASP_StokBirimAktar.Parameters.ParamByName('@kulid').Value:=Query.Fields.FieldByName('kulid').AsString;
           ASP_StokBirimAktar.ExecProc;
           Query.Next;
         end;
   finally


       Query.Active:=False;
       Query.Free;
       AT_gecbirim.Active:=true;
       AT_gecbirim.Filtered:=false;
       AT_gecbirim.Filter:='kulid='+inttostr(kulid);
       AT_gecbirim.Filtered:=true;
       AT_gecbirim.Edit;
   end;
Cevapla
#2
Merhaba,

*Kodları "Delphi Kod Ekle" ile eklerseniz okunurluğu hepimiz için iyi olur.
*Bazı konuları öğrenmeniz için okumanız araştırmanız şart.
*Aşağıdaki gibi dener misiniz.

try
       Query.Close;
       Query.SQL.Clear;
      
       Query.SQL.Add('SELECT * FROM stokkarti inner join stokgrup on grupid=stokgrup.sgid inner join stokbirim on stokid=stokkarti.id where stokkarti.id='+inttostr(miras));
       Query.Active:=true;
       Query.First;

         while not Query.Eof do
         begin
           kulid:=Query.Fields.FieldByName('kulid').AsInteger;
           Edit1.Text:=Query.fields.FieldByName('stokkodu').AsString;
           Edit2.Text:=Query.Fields.FieldByName('stokadi').AsString;
           Edit3.Text:=inttostr(Query.Fields.FieldByName('garanti').AsInteger);
           Edit4.Text:=inttostr(Query.Fields.FieldByName('kdv').AsInteger);
           Edit5.Text:=inttostr(Query.Fields.FieldByName('kritik').AsInteger);
           if Query.Fields.FieldByName('uyari').AsInteger = 1 then
           begin
             cekb1.Checked:=true; uyari:=1;
           end;
           memo1.Text:=Query.Fields.FieldByName('aciklama').AsString;
           for say := 0 to cbox1.Items.Count do
           begin
             if Query.Fields.FieldByName('sgaciklama').AsString = CBox1.Items[say]  then
             begin
                cbox1.ItemIndex:=say;
             end;
           end;
           ASP_StokBirimAktar.Parameters.ParamByName('@stokid').Value:=Query.Fields.FieldByName('id').AsInteger;
           ASP_StokBirimAktar.Parameters.ParamByName('@birim').Value:=Query.Fields.FieldByName('birim').AsString;
           ASP_StokBirimAktar.Parameters.ParamByName('@adet').Value:=Query.Fields.FieldByName('adet').AsInteger;
           ASP_StokBirimAktar.Parameters.ParamByName('@bbarkod').Value:=Query.Fields.FieldByName('barkod').AsString;
           ASP_StokBirimAktar.Parameters.ParamByName('@kulid').Value:=Query.Fields.FieldByName('kulid').AsString;
           ASP_StokBirimAktar.ExecProc;
           Query.Next;
         end;
   finally


       Query.Active:=False;
       AT_gecbirim.Active:=true;
       AT_gecbirim.Filtered:=false;
       AT_gecbirim.Filter:='kulid='+inttostr(kulid);
       AT_gecbirim.Filtered:=true;
       AT_gecbirim.Edit;
   end;
Cevapla
#3
pro_imaj formda böyle bir özellik olduğunu bilmiyordum. kusurabakmayın arkadaşlar.
Cevapla
#4
Arkadaşlar hepinize teşekkür ederim sorunu çözdüm tekbir query ile yaptım. farklı queryler kullanıyordum. ilginiz için teşekkürler ustalar.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  FastReportta Koşula göre ikinci sayfa goko1234 4 250 02-04-2021, Saat: 13:57
Son Yorum: ozcanm
  smtp mail işleminde hata ercanskose 2 326 15-03-2021, Saat: 11:56
Son Yorum: ercanskose
  Birinci resimden kes ikinci resme yapıştır işlemi cinarbil 3 346 12-03-2021, Saat: 16:15
Son Yorum: savasabd
  Çözüldü - AdoQuery $Unnamed does not contain a member named Hatası KarahanMesut 2 666 19-09-2020, Saat: 01:26
Son Yorum: KarahanMesut
  ADOQuery MemTable Gibi Kullanılabilir mi pro_imaj 6 3.441 02-05-2019, Saat: 10:22
Son Yorum: narkotik



Konuyu Okuyanlar: 1 Ziyaretçi