Record not found or changed by another user
eren200008.08.2005 - 17:28:49
Record not found or changed by another user

MySql 3.23.42 kullanıyorum.
Delphi6.0 kullanıyorum. dbexpress ile bu işlemi yapmaya kalktım. Tabiki Delphi 6.0 güncellemesi yüklü.

Bu sorunla daha önce karşılaşanlar olmuş çeşitli cevaplar var ama ben sorunu çözemedim. Hala devam ediyor.

Yapmak istediğim olay şu idi.
Sicil ve hareket table ı var.
Sicil tableından seçilen kayıt numarasına göre hareket tableındaki sahalar edit modunda açılarak update edilecek.

Fakat benim kullandığım TSQLClientdataset ve TClientdataset buna izin vermedi.
Cursor döndürmüyormuş delphi öyle diyor.

Çok basit yöntemle hareket tableında uyan kayıtları geçici dosyaya yazdırdım. Buradan sırasıyla okutup hareket tableına locate ile konumlanıp edit yaptım. Yukarıdaki hatayı aldım.
Mantık hatasımı var acaba.
Hareket tableından bir sorgu ile bazı kayıtları elde ediyorum.
while not sorgu.eof do
begin
...
sorgu.next;
end;

yapıyorum.
begin end arasına sorguda kullandığım hareket tableını edit post ve applyupdates yapıyorum. Bu hatalarla karşılaşıyorum.
İyi bir fikri ya da çözümü olan lütfen yazsın.Teşekkürler
 
ender_arslanturk08.08.2005 - 17:38:55
Merhaba

Döngüde komutlar bir kayıttaki record numarasını bulamamaktadır. Eğer döngü içindeki komutlarda filtreleme veya başka table sorgulama işlemin varsa mesela table1 deki 15 numaralı kayıtı table2 de sorgulatabilirsin ki table birde bu record yani sayısal numara olmadığında bu gibi hataları alabilirsin.

Saygılar,
 
FAOsoft08.08.2005 - 18:36:37
http://www.delphiturkiye.com/forum/viewtopic.php?t=9644&highlight=record+found+++changed
 
eren200008.08.2005 - 19:04:22
Herkese teşekkürederim. Fakat sorun devam ediyor.
Aynı işlemi bde ile oracle da yaptığımda hiç sorun yaşamadım.
Delphi4 kullanıyordum. Oracle 8.1.5 de böyle bir problem yaşamadım.
Problemin aslı şu :
Bir table dan sorgu ile bazı sahaları seçiyorum. Ve bu sahaları table da edit ediyorum. Bu hata veriyor.
Aynı işlemi sql komutuyla update ederken de hata veriyor.
Burada döngüde olan sql farklı diğer yazdığım sql komutu farklı.
Bilmem anlatabildim mi? Acil bu sorunu çözmem lazım. Teşekkürler...
 
ender_arslanturk08.08.2005 - 19:38:47
Merhaba

Kullandığın kodları tam olarak yazabilirsen hatanın nerde olduğu konusunda bilgiler paylaşılabilir. Birde döngü esnasında like gibi sql sorgusu kullandıysan da bu hatayı alabilirsin....

Saygılar,
 
eren200008.08.2005 - 20:19:04
Değerli kardeşlerim,
Kullandıklarımı yazayım ve nasıl bir kod oluşturdum onu da yazayım.
mysql 3.23.42 ve Delphi 6.0 ve dbexpress kullanıyorum.Delphi 6.0 ım update li.
TSQLConnection, TSQLDataset, TDataSetProvider ve
TClientDataset,TSQLClientdataset kullanıyorum bileşen olarak.

Yapılacak işlem şu.

1.sql

select * from tahakkuk
where (sicilno=:sicilno) and (kalantutar>0)


kod ise şöyle

while not sql1.eof do
begin
tahakkuk.edit;
tahakkukbakiye.value:=bakiye;
tahakkuk.post;
tahakkuk.applyupdates(-1);
sql1.next;
end;

gelen hata cursor not returned gibi birşeydi.
Diğer işlemlerde de başlıkta yazdığım hatayı alıyorum.

Bütün forumlara ve mysql sitesine baktım. Diyorlarki
primary key tanımla autoinc olsun.
2 den fazla numerik saha kullanma
date tipi fieldlar için timestamp kullan.
Bunları diğer arkadaşlarımız da sağolsunlar yazmışlar ama bu çözüm olmuyor.
Delphinin helpinde de tSqlclient ın cursor döndürmeyeceği yazıyor.
Bu işin başka bir çözüm yolu olmalı.
Sağolun...
 
ender_arslanturk08.08.2005 - 20:22:28
Merhaba

While döngüünden önce SQL1.First; yok acaba open dediğin zaman son kayıta otomatik gider birde seçili kayıtların başına gitmediğin için böyle bir hata alabiliyor olabilirmisin ....


Saygılar,
 
eren200008.08.2005 - 20:30:16
yazmayı unutmuşum kodda var
first yapıyor.
ondan olduğunu sanmıyorum.
Hatta şöyle uzun ve garantili bir yöntem uyguladım.
Queryden aldığım sonuçları geçiçi bir table a yazdırdım.
Bu table ı döngüye aldım.
Döngünü arasında tahakkuk table nı edit post ve applyupdates yaptım. ama işte bu hatayı verdi.
Bir anlam veremedim.
İşin içinde çıkamadım bir türlü

Hocam eğer msn kullanıyorsanız mailinizi verin de ekleyeyim. Forumda konuşup boş yere forum sayfalarını işgal etmeyelim.
Eğer sorunu çözersek burada yayınlarız.
Ama bana MySQL ile ilgili bir sorun gibi geliyor. Çünkü aynı sorun bir çok kullanıcının başına gelmiş
 
ender_arslanturk08.08.2005 - 21:15:57
Merhaba

Msn daveti alırsınız kaydettim ama sorunu aslında adım adım burda tartışılması bilgi adına daha faydalı olduğunu düşünüyorum....


SQL1.First;
while not sql1.eof do
begin
ShowMessage('');
if SQL1Sicilno.Text<>'' then
begin
tahakkuk.edit;
tahakkukbakiye.value:=bakiye;
tahakkuk.post;
tahakkuk.applyupdates(-1);
sql1.next;
end;
end;


SQL1 Componentinde birde bu şekilde deneyebilirmisiniz.... Eğer if kontrolünde sorun çakırmaz ise SQL1 e bir dbgrid bağlayıp döngüde her seferini bir inceleyebilirmisiniz....

Saygılarımla, Başarılar ....
 
eren200008.08.2005 - 21:27:48
table ı filtrelemeyi denemedim. Bir de bu yöntemi deneyeceğim. Ama tableı filtrelemek client server çalışan bir uygulamada ne kadar çözüm sağlar veya kargaşaya yol açarmı bilemiyorum. Bunu da deneyeceğim.
Bu sorunu aşmanın yolunu bulacağım.
 
ender_arslanturk08.08.2005 - 21:31:11
Merhaba

Query ile sorgulamanızı yaptınız diyelim. Mesela 1 den 1000 e kadar olan kayıtlarda 50 den büyük olan ve 500 den küçük olan kayıtları sorgu ile seçtikten sonra, tekrar sadece bu seçilenlere filter metodu uygularsanız, 50 den büyük ve 500 den küçükler arasındakilere sonuç alabilirsiniz. Bu da dikkatinizden kaçmasın.... Idea

Saygılar,
 
doganzorlu09.08.2005 - 23:28:30
Selam,

Tabloya tahakkuk bakiyeden erişiyor o nedenle siz onu değiştirince aklı karışıyor muhtemelen. Oracle da tabloda bir primatu key yoksa bu cursor, rownum u kullanıyor yanlış hatırlamıyorsam o nedenle orada hata almıyor olabilirsiniz. Tabloya başka bir uniq alan ekleyiniz...
 
emrahkaraarslan10.08.2005 - 10:38:44
table laerı kapalı tutup formların activate lerine açma komutu verirsen sorunun hallolacağını düşünüyorum çünkü refresh edilidğinde bu problem çoğu kez düzeliyor sonunda ben böyle yaptım artık o sorunla karşılaşmıyorum
 
eren200012.08.2005 - 13:29:45
Herkesin ilgisi ve yardım etme isteği için çok teşekkür ederim. allah hepinizden razı olsun. Sorun çözüldü.
Mysql in kendi sitesinde de bu forumda da belirtildiği gibi table açarken otomatik bir primary key oluşturuyor. Bu primary key aynı zamanda otomatik artan olan bir saha. Böylece yapıldığında sorun kendiliğinden çözülüyor. Başka bir arkadaşımız aynı sorunu MSSQL de yaşamış ben bu sorunu yaşayınca hemen forumu araştırdım. Bunu denedim fakat hatalı uygulamamdan dolayı sorunu o gün çözememiştim. Mysql sitesine baktığımda orada da üç yöntemden bahsediliyordu. Birinci sırada bu yöntem vardı.
Bu forumu hazırlayanlardan,katılanlardan,bu işe gönül veren ve emek harcayan herkesten Allah razı olsun.
Teşekkürler, iyi çalışmalar...
 
NOT : Bu sayfa google'un siteyi indekslemesi içindir. www.delphiturkiye.com/forum/ adresini kullanınız!
1998-2006 www.delphiturkiye.com