Xe3 te SQLTable1: Cannot modify a read-only dataset.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
vampir261
Üye
Mesajlar: 298
Kayıt: 23 Kas 2004 03:22
Konum: Denizli

Xe3 te SQLTable1: Cannot modify a read-only dataset.

Mesaj gönderen vampir261 »

Çok garip ve bana göre saçma bir hata yüzünden 4-5 saatim gitti ve pes ettim.
Xe3 kurdum ve basit bir tablo güncellemesi yapacağım. Bir tablodaki verileri okuyup o tablonun bir alanına veri yazıp kayıt edeceğim.
MSSQLConnection ve SQLTable1 neslerimi bağladım connectionlarını true yaptım ve sorunsuz bağlandılar. Ancak kod kısmında SqlTable1.Edit; satırına gelince
SQLTable1: Cannot modify a read-only dataset.
hatasını alıyorum aradım taradım sonuç yok. Bir sitede https://forums.embarcadero.com/thread.j ... eID=459793 eğer dbexpres bileşenlerini ilk kez kullanıyorsanız diye bir başlık altında. Verileri gride nasıl yansıtabileceğimiz anlatılmış oradaki
!!!!!!!!!!!!!!READ THIS IF YOU ARE NEW to dbExpress!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!READ THIS IF YOU ARE NEW to dbExpress!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!READ THIS IF YOU ARE NEW to dbExpress!!!!!!!!!!!!!!!!

Here is the STEP by STEP that should be apparently available somewhere... but isnt:

* Drop in [dbExpress]SQLConnection ( Connect to your database, and Active = true)
* Drop in [dbExpress]SQLTable=>SQLConnection = SQLConnection1 (Set TableName, then Active = true)
* Drop in [DataAccess]DataSetProvider=>DataSet = SQLTable1
* Drop in [DataAccess]ClientDataSet=>ProviderName = DataSetProvider1
* Drop in [DataAccess]DataSource=>DataSet = ClientDataSet1
* Drop in the data components, and set your DataSources to DataSource1
* Go back to ClientDataSet1, and set Active=True

yazılanları yapınca veriler gridde görünüyor ve güncellenebiliyor. ki bu gridde benim ilk kullandığım SQLTable1 nesnesi üzeriden güncelleme yapıyor.

Sonuç olarak bu nesneler ile bu güncelleme yapılabiliyorken benim kodda edit etmeye çalıştığımda neden yukarıdaki hayatı alıyorum anlayamıyorum. Bu yoldan geçebilen olduysa bana da tarif edebilirse memnun olurum teşekkürler saygılar.
Anlatırsanız unuturum,
Gösterirseniz hatırlarım,
Yaptırırsanız anlarım.
Kullanıcı avatarı
vampir261
Üye
Mesajlar: 298
Kayıt: 23 Kas 2004 03:22
Konum: Denizli

Re: Xe3 te SQLTable1: Cannot modify a read-only dataset.

Mesaj gönderen vampir261 »

İlk mesaj da belirtiğim nesneleri form a koyarak ve şu kodlarla

Kod: Tümünü seç

ClientDataSet1.Edit;
    ClientDataSet1.FieldByName('il').AsString:=Adres.Il;
    ClientDataSet1.FieldByName('ilce').AsString:=Adres.Ilce;
    ClientDataSet1.FieldByName('mahalle').AsString:=Adres.Mahalle;
    ClientDataSet1.FieldByName('DigerAdres').AsString:=Adres.Csbm;
    ClientDataSet1.FieldByName('Bagimsiz').AsInteger:=Adres.BinaKodu;
    ClientDataSet1.Post;
verilerin dbgrid üzerinde görünmesini sağladım ancak programı kapatıp açınca görünen bu veriler siliniyor. Sonra araştırdım ve

Kod: Tümünü seç

if ClientDataSet1.ChangeCount>0 then
      ClientDataSet1.ApplyUpdates(0);
bu kodla değişiklikleri kaydedebileceğimi öğrendim. Ancak bu kod çalışınca da bu sefer başka bir hata almaya başladım

Kod: Tümünü seç

SQL State: HY000, SQL Error Code: 0
Connection is busy with results for another command.
Yani yaptğımı tüm güncellemler clientdataset içinde kalıyor veritabanını güncelleyemiyorum. Baştan beri bir yerde büyük bir mantık hatası yapıyorum ama nerde onu bir türlü bulamadım. Çözüm önerisi olan var mı?
Anlatırsanız unuturum,
Gösterirseniz hatırlarım,
Yaptırırsanız anlarım.
varyemez
Üye
Mesajlar: 262
Kayıt: 01 Oca 2009 11:00
Konum: Bursa
İletişim:

Re: Xe3 te SQLTable1: Cannot modify a read-only dataset.

Mesaj gönderen varyemez »

Clientdataset1 in command property sini incele.. Oraya gerekli sql kodlarını yazacaksın. parameters fieldsbyname ile geçirdiğin değerler orada işlenecek
Kullanıcı avatarı
vampir261
Üye
Mesajlar: 298
Kayıt: 23 Kas 2004 03:22
Konum: Denizli

Re: Xe3 te SQLTable1: Cannot modify a read-only dataset.

Mesaj gönderen vampir261 »

İnterbase bileşenlerinden IBDataSet kullanınca sağ tıklanıp açılan dataset editör benzeri bir şey bende düşündüm ama bunda öyle bir şey yok. Yani kodu kendim yazabileceğim bir yerde yok nasıl iş anlayamadım.
Anlatırsanız unuturum,
Gösterirseniz hatırlarım,
Yaptırırsanız anlarım.
Kullanıcı avatarı
vampir261
Üye
Mesajlar: 298
Kayıt: 23 Kas 2004 03:22
Konum: Denizli

Re: Xe3 te SQLTable1: Cannot modify a read-only dataset.

Mesaj gönderen vampir261 »

dbExpress bileşenleri ile olmayınca bende ado bileşenleri ile yaptım geçtim. Kayıt sayısı zaten az olduğu için sorun olmadı ama bu komponentleri de kullanmayı öğrenmem gerekecek. Bir yerde kesin bir şey unutuyorum ama nerede hala bulamadım.
Anlatırsanız unuturum,
Gösterirseniz hatırlarım,
Yaptırırsanız anlarım.
Cevapla