Firebird'te Kayıt Değiştirme

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
musalpay
Üye
Mesajlar: 77
Kayıt: 28 Tem 2003 12:59
Konum: Kocaeli/Gebze

Firebird'te Kayıt Değiştirme

Mesaj gönderen musalpay » 21 Eyl 2004 03:36

İyi Çalışmalar
Firebird'te bir tablo oluşturdum kayıt girebiliyorum ama kayıtları düzeltmek
istediğimde gridte düzelmiş gibi gözüküyor veritabanı kısmında ise kayıt değişmemiş şekilde duruyor.

Kod: Tümünü seç

ibdataset1.edit
ibdataset1.post
 
commit te ediyorum
önerileriniz için teşekkürler.

Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7494
Kayıt: 09 Haz 2003 11:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek » 21 Eyl 2004 03:47

:ara commitretaining

Kolay gelsin.

Kullanıcı avatarı
musalpay
Üye
Mesajlar: 77
Kayıt: 28 Tem 2003 12:59
Konum: Kocaeli/Gebze

Mesaj gönderen musalpay » 22 Eyl 2004 07:54

hocam aradım genelde commit etmeyle ilgili sonuçlar var.bende commit ediyorum . yeni kayıt yaparken herhengi bir sorun yok kayıt ediliyor
daha sonra kayıtlı nesnenin herhengi bir alanını değiştirmek isteyince ise gridte gözüküyor veritabanına almıyor.
önerileriniz için şimdiden teşekkürler.

Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4319
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri » 22 Eyl 2004 08:59

S.A.
eğer auto inc bir alan kullanıyorsanız ve bu alanın değerini triger ile arttırmışsanız kayıt girdiğiniz zaman bu alanın değeri güncellenmiş olmuyor. (eğer listede bu alanıda gösterirseniz anlıyacaksınız) edit işlemi yaptığınız zaman bu alana göre edit yapıyor vt de bu alanın değeri farklı olduu için düzeltmeyi yapmıyor. Tabloyu aç kapa yaptıktan sonra düzeltme işleminide yapacaktır.
Kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim

Salih
Üye
Mesajlar: 235
Kayıt: 11 Mar 2004 05:36

Mesaj gönderen Salih » 22 Eyl 2004 09:23

Merhaba,

Dataset in Cachedupdate özelliği True ise : Dataset e yapılan güncellemeler dahili cache de tutulur, veritabanına yazılmaz. Değişiklikler tamamlanınca bütün değişiklikler veritabanına tek bir transaction olarak yazılır. Sorununuz bununla ilgili olabilir mi ?
(When cached updates are enabled, updates to a dataset (such as posting changes, inserting new records, or deleting records), are stored in an internal cache on the client machine instead of being written directly to the dataset’s underlying database tables. When changes are complete, an application writes all cached changes to the database in the context of a single transaction.)

eğer sorun bu ise, cachedupdate i false yapacaksınız, ya da dataset.applyupdates yapacaksınız. Peşinden de IBtransaction.commit diyecekmişsiniz, ben kullanmadım bu olayı...
(Call ApplyUpdates to write a dataset’s pending cached updates to a database. This method passes cached data to the database for storage, but the changes are not committed to the database. An application must explicitly call the TIBTransaction component’s Commit method to commit the changes to the database if the write is successful, or call the TIBTransaction component’s Rollback method to undo the changes if there is an error.)
Sevgi, Saygı.....

Kullanıcı avatarı
musalpay
Üye
Mesajlar: 77
Kayıt: 28 Tem 2003 12:59
Konum: Kocaeli/Gebze

Mesaj gönderen musalpay » 22 Eyl 2004 09:40

hocam cached update false herhengi bir triger de kullanmıyorum
tablo şöyle
birimi
görevi
ad,soyad
başlama tarihi
suresi
bitiş tarihi

bu alanlara verileri girdim örneğin birimi fen-edebiyat fak. , görevi dekan,
ad,soyad xxx,başlama tarihi 12.02.2004 , suresi 2 , bitiş tarihi 12.02.2006
bitiş tarihi geldiğinde ad,soyad,başlama tarihi, suresi ve bitiş tarihini değiştirmek istiyorum
değişiklikler gridte gözüküyor ama veritabanı kısmına almıyor .
afterpost'a ibdataset1.transaction.commitreatining yazdım
gene fayda etmedi acaba sorun nerde kayıtlar nasıl değiştirilir.
cevaplarınız için teşekkürler.

Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4319
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri » 22 Eyl 2004 10:04

ib dataset in modifysql ine yazdıklarını bi kontrol et istersen.
sql i burayada gönderirsen bizde bi kontrol edebiliriz belki.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim

Kullanıcı avatarı
musalpay
Üye
Mesajlar: 77
Kayıt: 28 Tem 2003 12:59
Konum: Kocaeli/Gebze

Mesaj gönderen musalpay » 22 Eyl 2004 10:09

hocam modifysql kodları;

Kod: Tümünü seç

update IDARI_BIRIMLER2
set
  BIRIMI = :BIRIMI,
  UNVANI = :UNVANI,
  AD_SOYAD = :AD_SOYAD,
  GOREVI = :GOREVI,
  BAS_TAR = :BAS_TAR,
  BIT_TAR = :BIT_TAR,
  SURE = :SURE,
  NOTM = :NOTM,
  BOLUMU = :BOLUMU,
  NUM = :NUM
where
  BIRIMI = :OLD_BIRIMI and
  UNVANI = :OLD_UNVANI and
  AD_SOYAD = :OLD_AD_SOYAD and
  GOREVI = :OLD_GOREVI and
  BAS_TAR = :OLD_BAS_TAR and
  BIT_TAR = :OLD_BIT_TAR and
  SURE = :OLD_SURE and
  NOTM = :OLD_NOTM and
  BOLUMU = :OLD_BOLUMU and
  NUM = :OLD_NUM
hocam isterseniz program kodlarını size mail olarak atabilirim.

Salih
Üye
Mesajlar: 235
Kayıt: 11 Mar 2004 05:36

Mesaj gönderen Salih » 22 Eyl 2004 10:27

[quote="musalpay"]hocam modifysql kodları;

Kod: Tümünü seç

where
  BIRIMI = :OLD_BIRIMI and
  UNVANI = :OLD_UNVANI and
  AD_SOYAD = :OLD_AD_SOYAD and
  GOREVI = :OLD_GOREVI and
  BAS_TAR = :OLD_BAS_TAR and
  BIT_TAR = :OLD_BIT_TAR and
  SURE = :OLD_SURE and
  NOTM = :OLD_NOTM and
  BOLUMU = :OLD_BOLUMU and
  NUM = :OLD_NUM
hocam burda bir tuhaflık yok mu ? sizin primary key iniz hangisi ise where kısmında sadece onu yazacaksınız, Kullandığınız dataset i seçin, mouse un sağına tıklayın, Dataset Editor e girin, ordaki butonlara üstten aşağı doğru sırayla basın. benim tahminim, siz bu tablo için primary key tanımlamamışsınız. IBexpert vs ile mesela PERSONEL_NO gibi bir primary key tanımlayın sonra where kısmında sadece
where PERSONEL_NO = :OLD_PERSONEL_NO yazın.

DELPHI Help şöyle diyor :
Keep in mind that generated SQL statements are starting points for creating update statements. You may need to modify these statements to make them execute correctly. For example, when working with data that contains NULL values, you need to modify the WHERE clause to read

WHERE field IS NULL rather then using the generated field variable.

Siz AD_SOYAD dan sonraki kısmı bir silip deneyin bakalım
Sevgi, Saygı.....

Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 03:44
Konum: İstanbul

Mesaj gönderen gkimirti » 22 Eyl 2004 10:33

sayın hocam primary key olmazsa neye gore update edecek vatandas
siz muhtemelen silme islemi de yapamıyorsunuzdur...
ÜŞENME,ERTELEME,VAZGEÇME
Oğlum Yusuf'un yeni oyunu :mrgreen: Google Play üzerinde
Linear Minimalist Puzzle ve Smash Drift
👉 https://goo.gl/8S31tD 👈
👉 http://bit.ly/2OJos6P 👈

Kullanıcı avatarı
musalpay
Üye
Mesajlar: 77
Kayıt: 28 Tem 2003 12:59
Konum: Kocaeli/Gebze

Mesaj gönderen musalpay » 22 Eyl 2004 10:49

hocam çok sağolun primery key alanım dışındakileri modifysql den sildikten sonra çalıştı. sayenizde firebird konusunda baya bir yol alacağız.
tekrar teşekkürler.

Salih
Üye
Mesajlar: 235
Kayıt: 11 Mar 2004 05:36

Mesaj gönderen Salih » 22 Eyl 2004 11:09

Merhaba,

Sicil no, personel no vs gibi bir alanınız yok. Merak ettim, Primary Key iniz hangisi , Ad soyad mı ? Öyleyse bence yanlış.
Sevgi, Saygı.....

Salih
Üye
Mesajlar: 235
Kayıt: 11 Mar 2004 05:36

Mesaj gönderen Salih » 22 Eyl 2004 11:11

gkimirti yazdı:sayın hocam primary key olmazsa neye gore update edecek vatandas
siz muhtemelen silme islemi de yapamıyorsunuzdur...
nerden gözüme çarptıysa :

Kayıt: 02 Eyl 2003
Mesajlar: 1000
Nerden: İstanbul

Hayırlı olsun hocam, nice 1000 mesajlara inşallah.. Darısı başımıza :)
Sevgi, Saygı.....

Kullanıcı avatarı
musalpay
Üye
Mesajlar: 77
Kayıt: 28 Tem 2003 12:59
Konum: Kocaeli/Gebze

Mesaj gönderen musalpay » 22 Eyl 2004 11:52

hocam primery key num alanı

Salih
Üye
Mesajlar: 235
Kayıt: 11 Mar 2004 05:36

Mesaj gönderen Salih » 22 Eyl 2004 11:59

musalpay yazdı:hocam primery key num alanı
Gözümden kaçmış, kolay gelsin
Sevgi, Saygı.....

Cevapla