Couldn't perform the edit because another user changed the record
hatasını üretiyor.
Konuyla ilgili araştırmalar yaptığımda tüyler ürperten bir gerçekle karşılaştım sorun kayan noktalı sayılardan kaynaklanıyordu. sorulan bir soruya cevap aynen şöyleydi.
The BDE has a limit of 15 decimals after the decimal separator. As you post the updated record, the BDE refetches the row to make sure it still exists (and was not changed). To do so, it uses the data it originally fetched.
It only fetches up to 15 digits, so the data the BDE has and data on the server don't match. The server returns that the fetch returned no records which causes the BDE to generate its error.
bunun üzerine MySQL database imdeki Double alanları (13,2) şeklinde sınırlarını çizdim çünkü sorunun virgülden sonrasının alıp başını gitmesinden kaynaklandığını düşündüm ama bi değişiklik olmadı aslında şöyle oldu bu formatlamayı yapmadan önce bazı durumlarda bu sorun başıma geliyordu çevirdikten sonra sorun olmayan bazı durumlardada sorunun daha sık tekrar ettiğini fark ettim mesela ilgili alana 100 değeri verdiğimde bir sorun yokken 585 değeri verdiğimde bu hatayı alıyorum. BDE kullanarak bu sorunu aşmam gerekiyor DB seviyesinde bir çözüm varmı önerilerinizi bekliyorum.
iyi çalışmalar.
Bahsettiğin sorunun cevabını bilmiyorum ama bende bu sorunu yaşayan birisi olarak paylaşmak istedim.
Örn.
Kayıt girişi yaptığımda (Query.edit Query.post) post ile kayıt yaptırdığımda. hiçbir sorun yok fakat başka bir kayıta geçmeden aynı kayıtı edit modda tekrar açıp (Query.edit) sonra kayıt tuşuna basınca (Query.post) Aynı hatayı bende alıyorum.
Belki benim hatam başka nedendendir bilemiyorum ama hata aynı
(çalıştığım veri tabanı MSSQL)
Kolay Gelsin
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Evet alınan mesajın manası "Bu kayıt başka biri tarafından değiştiriliyor" ve tabi dolayısıyla insanın aklına binbir türlü şey geliyor ama, benim sorunumu yaşayan başka birileri daha varmış yazmışlar almışlar cevaplarını bende burada tartışmak ve çare bulmak için taşıdım aynısı buraya.
kayıdın başka birisi tarafından değiştiği yok aslında sorun BDE nin Double gibi virgüllü sayılarda mantıksız davranması.
iyi çalışmalar.
Aynı hatayı bende aldım... query ye update işleminden sonra post ederken..
Fakat db de ilgili alan herhangi bir virgüllü değer içermiyor...
inc komutuyla her postta bir sayı artacak şekilde bir yapı kurdum...
kaynağını hatırlamadığım bir yerde konuyla ilgilil olarak post işleminden önce aktarılan değerin db de daha önceden editlendiğini ve hafızada eski kaydın kaldığı şeklinde bir yazı okumuştum
benim kullandığım db oracle ve update işlemini oracle sql plus ta yaptığım zaman bir sorun oluşturmuyor...
bu delphi bazen çok kıl olabiliyor
Merhaba,
Tecrübeyle sabittirki, eğer bu tarz hatalarla karşılaşmak istemiyorsanız Doğrudan Dataset Üzerinde Edit post yapmayın eğer yapacaksanız bir UpdateObject ininz olsun ve Dataset e ilgili UpdateObject i bağlayın,
UpdateObject in EditSQL bölümüne Edit ve Post komutları uygulandığında Güncellecek sahaları ve WHERE kısmında kullanılacak primarykey alanını SQL cümlesiyle belirtin böylelikbu bu hatayla bir daha karşılaşmazsınız.
İyi çalışmalar.
vkamadan yazdı:Merhaba,
Tecrübeyle sabittirki, eğer bu tarz hatalarla karşılaşmak istemiyorsanız Doğrudan Dataset Üzerinde Edit post yapmayın eğer yapacaksanız bir UpdateObject ininz olsun ve Dataset e ilgili UpdateObject i bağlayın,
UpdateObject in EditSQL bölümüne Edit ve Post komutları uygulandığında Güncellecek sahaları ve WHERE kısmında kullanılacak primarykey alanını SQL cümlesiyle belirtin böylelikbu bu hatayla bir daha karşılaşmazsınız.
İyi çalışmalar.
doğru anca bu seferde DAL olay sorun. mesela ben her form için ayrı ayrı uğraşıp her table için ayrı ayrı sql yazmak istemem. yoksa nerde kaldı delphinin RAD lığı . bu sql leri Datasource için otomatik hazırlayan bir komponent olsa ok.
Zaten UpdateSQL objesinde son derece kullanımı kolay bir arayüz var, siz alanları ve key alanı seçip Generate SQL dediğinizde ilgili cümleleri kendisi oluşturuyor, UpdateSQL Obejesini incelemenizi öneririm.
Kolay gelsin