Merhabalar kusura bakmayın programlama konusunda yeniyim biraz bu hata veritabanı mı yoksa programlama kısmınamı yazılırdı bilmiyorum ama veri tabanı işleminde karşılaştım o yüzden buraya yazdım.
yaptığım ufak bir program master detail çalışıyor detail olan tablom chache update çalışıyor işlemleri yaptıktan sonra commitupdates komutuyla işlemi sonladırıyorum ama bana At end of table diye bir hata veriyor bu mantığın aynısı başka pencerelerdede geçerli başka tablelerle onlarda olmuyor ayrıca bu hatayı verdikten sonra master kısmı kayıtı gerçekleşiyor ancak detail gerçekleşmiyor.
bu aradada şöyle bir denemede bulundum ve şunu gördüm insert olayından sonra table state yi kontrol edeyim dedim insert komutu verildiği halde daha sonra ki adımlar yani tabledeki değişkenlere atadığım değerler işlemiyor yada post komutu işlemiyor. ve o kaydı edit ettiğimde sorun olmadan işlemi yapıyor.
nasıl çözebilirim
"At end of table" Hatası
Arkdaşım ister Insert ister Edit Modunda olsun iki işleminde kaydını yapan kısım aşagıda. Tek bir farkları var eğer işlem edit ise ve bu edit işlemi ile daha önceden kayıtlı proses gurubu yerine başka bir gurub seçilecekse var olan gurup kayıtlarını siliyor ve yenisini tekrar yazıyıyor
yani **** lar içine aldığım kısım edit sırasında işliyor edit değilse işlemiyor ve işte bu kodlar insert te bahsettiğim hatayı veriyor ama ama yeni kayıt değil direk edit de yine olmayan kayıdı açıyor ve işlem gerçekleşiyor bu arada acemiliğimize verin kolay diye paradox kullanıyorum hani database ne kullanıyorsun diye soracak olursanız diye söylüyorum bundan daha açık yazamam
[/code]
yani **** lar içine aldığım kısım edit sırasında işliyor edit değilse işlemiyor ve işte bu kodlar insert te bahsettiğim hatayı veriyor ama ama yeni kayıt değil direk edit de yine olmayan kayıdı açıyor ve işlem gerçekleşiyor bu arada acemiliğimize verin kolay diye paradox kullanıyorum hani database ne kullanıyorsun diye soracak olursanız diye söylüyorum bundan daha açık yazamam
Kod: Tümünü seç
procedure TInputF.kayitClick(Sender: TObject);
Var
dizi,ProsesEkle :String;
Bul : Integer;
Begin
Application.CreateForm(TWaitF, WaitF);
WaitF.WaitPanel.Caption:='Lütfen Bekleyin... Kayıt Diske Yazılıyor.';
WaitF.Show;
WaitF.Update;
**************************
If (DataModule1.DyeTbl.State In [DsEdit]) And (EskiProses<>ProsesCombo.Text)Then
While True Do
Begin
If DataModule1.DyeDtlTbl.RecordCount<>0 Then
DataModule1.DyeDtlTbl.Delete
Else Break
End;
***************************
Dizi:= ProsesCombo.Text;
While True Do
Begin
Bul := Pos('+',Dizi);
If Bul =0 Then
Begin
DyeForm.DyeDtlTblInsert(Sender);
DataModule1.DyeDtlTblBaglac.AsInteger:=
DataModule1.dyetblNO.Value;
DataModule1.DyeDtlTblProsesAdi.Value:= Dizi;
DyeForm.DyeDtlTblPost(Sender);
Break;
End
Else
Begin
ProsesEkle :=Copy(Dizi,1,Bul-2);
Dizi := Copy(Dizi,Bul+2,Length(Dizi)-Bul-1);
DyeForm.DyeDtlTblInsert(Sender);
DataModule1.DyeDtlTblBaglac.AsInteger:= DataModule1.dyetblNO.Value;
DataModule1.DyeDtlTblProsesAdi.Value:= ProsesEkle;
DyeForm.DyeDtlTblPost(Sender);
End;
End;
If DataModule1.DyeDtlTbl.RecordCount=1 Then
Begin
DataModule1.DyeDtlTbl.First;
DataModule1.DyeTblProses.Value := DataModule1.DyeDtlTblProsesadi.Value;
End;
If DataModule1.DyeDtlTbl.RecordCount>1 Then
Begin
DataModule1.DyeDtlTbl.First;
DataModule1.DyeTblProses.Value := DataModule1.DyeDtlTblProsesadi.Value;
DataModule1.DyeDtlTbl.Next;
DataModule1.DyeTblSProses.Value := DataModule1.DyeDtlTblProsesadi.Value;
End;
Try
DataModule1.dyetbl.post;
Except
On E:Exception Do
Begin
MessageF('Bilinmeyen Sistem Hatası'
,'İşleminiz kayıt edilemedi, buna bir sistem hatası neden olabilir'
,'Hata Mesajı : '+E.Message
,'InputF'
,'ME'
,1);
WaitF.Hide;
WaitF.Free;
Abort;
End;
End;
DataModule1.DyeDtlTbl.CommitUpdates;
WaitF.Hide;
WaitF.Free;
InputF.Close;
End;
DyeDtlTblInsert(Sender); bunlar nedir ? post içinde buna benzer bişey yazmışsın burada ne oluyor? Birde Component ve database niye yazmıyorsun bende bi güzel 1 sayfa yazı yazmıştın sonadan farkettim yazdığımdan farklı bir component kullandığını
Ayrıca
Ayrıca
Kod: Tümünü seç
Try
DataModule1.dyetbl.post;
DataModule1.DyeDtlTbl.CommitUpdates;
Except
DataModule1.DyeDtlTbl.Rollback yada ilgli proc neyse
On E:Exception Do
Begin
MessageF('Bilinmeyen Sistem Hatası'
,'İşleminiz kayıt edilemedi, buna bir sistem hatası neden olabilir'
,'Hata Mesajı : '+E.Message
,'InputF'
,'ME'
,1);
WaitF.Hide;
WaitF.Free;
Abort;
End;
End;
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 !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Ya daha önce Paradox kullandığımı yazmıştım yanılmıyorsam; evet yazmışım
DyeDtlTblInsert ise bir çok yerde yani formda aynı table için ekle kayıt et değiştir işlemleri için sizin aşağıda yazmış olduklarınızı yine defalarca yazmayayım diye kullandığım procedure ler yani DyeDtlTblPost sizin
aşağıda yazmış olduğunuz " DataModule1.DyeDtlTbl.Rollback " kısmı hariç aynı işleri yapıyor.
Ya zaten benim anlayamadığım şey şu yeni kayıt için Table 'a insert yerine edit komutu vereyim aynı satırlar normal işliyor insertte neden işlemiyor daha doğrusu table insert verdiğimde insert moduna geçiyor yani grid üzerinde indicatörün işareti * a dönüyor buda neyi gösterir insert durumunda ancak veri girişini yapan satırlar sanki işlemiyor yani gridde kayıtlar görünmüyor ve bence dolayısı ilede Commitupdate dediğimde table boş olduğu için veriyor bu hata kodunu ancak yeni kayıt için insert yerine edit vereyim ama yanlış anlaşılmasın var olan kayıt üzerinde değil hani table boş ikende edit dediğinde olmayan kayıtı editler ya işte öyle sorun olmuyor çalışıyor normal var olan kayıtıda editlediğimde çalışıyor.....
Valla bende anlamadım işte ama inşallah anlatabilmişimdir.
Bunlar nedir nasıl anlatsam mesela MessageF ; mesaj iletmem gereken yerlerde sürekli aynı kodları yazmaktansa mesaj başlığının girilebildiği mesaj açıklama satırının girilebildiği mesajın hangi formdan geldiği ve ve bu mesaj formu bir cevap gönderecekse hangi forma göndereceği formda görüntülenecek buton sayısı nedir gibisinden bilgilerin girilebildiği kısa bir procedureserbek_tr yazdı:paradox kullanıyorum hani database ne kullanıyorsun diye soracak olursanız diye söylüyorum
DyeDtlTblInsert ise bir çok yerde yani formda aynı table için ekle kayıt et değiştir işlemleri için sizin aşağıda yazmış olduklarınızı yine defalarca yazmayayım diye kullandığım procedure ler yani DyeDtlTblPost sizin
aşağıda yazmış olduğunuz " DataModule1.DyeDtlTbl.Rollback " kısmı hariç aynı işleri yapıyor.
Ya zaten benim anlayamadığım şey şu yeni kayıt için Table 'a insert yerine edit komutu vereyim aynı satırlar normal işliyor insertte neden işlemiyor daha doğrusu table insert verdiğimde insert moduna geçiyor yani grid üzerinde indicatörün işareti * a dönüyor buda neyi gösterir insert durumunda ancak veri girişini yapan satırlar sanki işlemiyor yani gridde kayıtlar görünmüyor ve bence dolayısı ilede Commitupdate dediğimde table boş olduğu için veriyor bu hata kodunu ancak yeni kayıt için insert yerine edit vereyim ama yanlış anlaşılmasın var olan kayıt üzerinde değil hani table boş ikende edit dediğinde olmayan kayıtı editler ya işte öyle sorun olmuyor çalışıyor normal var olan kayıtıda editlediğimde çalışıyor.....
Valla bende anlamadım işte ama inşallah anlatabilmişimdir.
freeman35 yazdı:DyeDtlTblInsert(Sender); bunlar nedir ? post içinde buna benzer bişey yazmışsın burada ne oluyor? Birde Component ve database niye yazmıyorsun bende bi güzel 1 sayfa yazı yazmıştın sonadan farkettim yazdığımdan farklı bir component kullandığını
AyrıcaKod: Tümünü seç
Try DataModule1.dyetbl.post; DataModule1.DyeDtlTbl.CommitUpdates; Except DataModule1.DyeDtlTbl.Rollback yada ilgli proc neyse On E:Exception Do Begin MessageF('Bilinmeyen Sistem Hatası' ,'İşleminiz kayıt edilemedi, buna bir sistem hatası neden olabilir' ,'Hata Mesajı : '+E.Message ,'InputF' ,'ME' ,1); WaitF.Hide; WaitF.Free; Abort; End; End;
Yok ya mantık icabı değil bu.
yeni bir project oluşturdum çok yalın komutlar kullandım hata kontrolu falan da yapmadım yani sadece ekle yaz kaydet- değiştir yaz kaydet
ya bu değiştir yaz kaydet yapıyor ama ekle yapmıyor
bu table dosyasının windows ortamından kaynaklanan sadece bu dosyaya özgü bir sorun olabilirmi yokya
Table1.insert;
Table1Deger.Asstring:=' DEGER';
Table1.Post;
Sonuç yine aynı hata programın tüm koduda sadece yukarıdaki master detail de yok sadece bir dosya ama DatabaseDesktopta herşey normal
yeni bir project oluşturdum çok yalın komutlar kullandım hata kontrolu falan da yapmadım yani sadece ekle yaz kaydet- değiştir yaz kaydet
ya bu değiştir yaz kaydet yapıyor ama ekle yapmıyor
bu table dosyasının windows ortamından kaynaklanan sadece bu dosyaya özgü bir sorun olabilirmi yokya
Table1.insert;
Table1Deger.Asstring:=' DEGER';
Table1.Post;
Sonuç yine aynı hata programın tüm koduda sadece yukarıdaki master detail de yok sadece bir dosya ama DatabaseDesktopta herşey normal