IBDataSet InsertSQL

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Kullanıcı avatarı
iason
Üye
Mesajlar: 38
Kayıt: 18 Kas 2003 02:01
Konum: İstanbul
İletişim:

IBDataSet InsertSQL

Mesaj gönderen iason »

Merhaba.

IBDataSet in InsertSQL, UpdateSQL ve DeleteSQL sorgularindan hangisini kullanacagini nasil belirleyecegiz?

Helpte QInsert, QDelete gibi seyler var ama Delphi 'Ben bunlari taniyamadim birader' hatasi veriyor.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Normal Table işlemleri gibi uygulayabilirsin.
Örnek
IbDataset.Append;
IbDataSet.Edit;
IbDataSet.Insert;
vb....

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
iason
Üye
Mesajlar: 38
Kayıt: 18 Kas 2003 02:01
Konum: İstanbul
İletişim:

Mesaj gönderen iason »

Peki bunun kullanimi nasil?

ParamByName ile alanlari tek tek girmek istiyorum.

Kod: Tümünü seç

    
with IBDataSet1 do
    begin
      Insert;
      ParamByName('CARI_AD').Value := 'TEST' + IntToStr(i);
      Post;
      .... 
Yukaridaki sekilde yapinca CARI_AD alani yok diyor.
Ama InsertSQL, 'insert into CARI (CARI_AD) values (:CARI_AD)' seklinde...

Baska bir kullanimi mi var?

FieldByName seklinde kullanmak istemiyorum...
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

ParamByName die aratırsan bir çok sonuc'a ulaşabilirsin. :wink:

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
iason
Üye
Mesajlar: 38
Kayıt: 18 Kas 2003 02:01
Konum: İstanbul
İletişim:

Mesaj gönderen iason »

Sanirim yanlis anlasildim.

IBQuery ile ParamByName kullanarak istedigim herseyi yapabiliyorum. Ancak ben IBDataSet kullanmak istiyorum. Madem DataSet'in InsertSQL, UpdateSQL gibi olaylari var IBQuery neden kullanayim diye dusunuyorum. Aslina bakarsaniz cogunlukta StoredProcedure kullanacagim ancak FireBird ogrenmeye yeni basladim ve DataSet in InsertSQL, UpdateSQL olayi ilgincime gitti ve nasil oluyor diye meraklandim.

Grupta ParamByName diye aratinca bildigim seyler cikiyor. IBDataSet ve ParamByName ikilisi ile ilgili birsey bulamadim grupta...

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

Mesaj gönderen gkimirti »

ben IbDataset kullanıyorum ama hic oyle bir olayı (event) yok
ozellik derseniz, InsertSQL,ModifySQL,DeleteSQL ve RefreshSQL özellikleri var
ayrıca SelectSQL ile hangi tabloda hangi alanları sececeginizi yazıyorsunuz
aslında IbDataset , IbQuery ile IbUpdateSQL in birlestirilmis hali

Params diye ObjectInspectorde bir ozellik goremeseniz de aslında ParamByName ve Params ozellikleri mevcuttur.
IbDataset ayarlarını yaptıktan sonra klasik table dan hicbir farkı kalmamakta.
table komutları (First,Next,...,Edit,Insert,Post,Delete) kullanarak kayıt işlemleri yapabilirsiniz.
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
iason
Üye
Mesajlar: 38
Kayıt: 18 Kas 2003 02:01
Konum: İstanbul
İletişim:

Mesaj gönderen iason »

Tesekkurler.

Olaylari var derken eventlerden bahsetmedim. Ozellikleri var demek istemistim. Bu ozellikler varsa nasil kullanacagimi ariyorum. Insert, Post falan kullanabilirim dogru ama bunlari ParamByName kullanarak yapabilir miyim? (bkz. 2. mesajim)

Sanirim mumkun degil. FieldByName kullanmak zorundayim. Ya da IBQuery kullanacagim.

Asagidaki sekilde birsey yaparim olur herhalde.

Kod: Tümünü seç

IBQuery.SQL := IBDataSet.InsertSQL;
IBQuery.ParamByName.....

Daha oncede yazdigim gibi FireBird i ogrenmeye calisiyorum ve kafama takilan bir konuydu bu. Cokta onemli birsey degil yani :)

Tekrar tesekkurler...[/code]
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

InsertSQL,ModifySQL,DeleteSQL ve RefreshSQL
bunları IbDataset Editorde Generate Sql dediginizde otomatik olarak olusturuyor.
ayrıca kurcalamanıza falan gerek yok, bunlar hangi alanların insert,edit,delete edilecegini vs. belirleyen parametreli sql cumleleri oluyor.
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
iason
Üye
Mesajlar: 38
Kayıt: 18 Kas 2003 02:01
Konum: İstanbul
İletişim:

Mesaj gönderen iason »

Ya ben bunlari degistirmek istemiyorum.
Degistirmek istedigim fikrini nerden cikardiniz merak ettim.

Ben bu InsertSQL sorgusunu kullanarak nasil kayit ekleyecegimi merak ediyorum sadece.


ExecSQL dedigimde hangi sorguyu kullanacak. Update, Delete, Insert ???

Ilk mesajimda bunu sormusum zaten.

Olay iyice koptu.

Mesajlarimi tekrar okursaniz memnun olacagim. Kusura bakmayin...
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

kayıt girisini bir tablo gibi kullanman gerekiyor, yani
Insert;
tablo.FieldByName('dsdsds').Asxxxx:=deger;
Post;

o InsertSQL sorgusundaki parametreleri dahili olarak bilesen kullanıyor.
yazdıgın kodlar parametreler vasıtasıyla sql cumlesine cevriliyor,
cunku sqlserver baska bir dilden anlamıyor.
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Ya onlar dataset ayarları onların ayarlanması yapacağın IbDataset1.Edit, Ibdataset1.Append, IbdataSet1.Delete vb... gibi işlemlerin yapılmasını sağlar.

Bakınız ilk mesajım.

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
iason
Üye
Mesajlar: 38
Kayıt: 18 Kas 2003 02:01
Konum: İstanbul
İletişim:

Mesaj gönderen iason »

OK tesekkurler...
showtime
Üye
Mesajlar: 29
Kayıt: 28 Şub 2004 04:26
Konum: Konya

Mesaj gönderen showtime »

@iason

sanırım siz FIBPLUS kullanıyorsunuz.
Sorunuzu yanlış anlamadıysam şu şekilde:
Örneğin bir qupdate kullanıyorsanız, ustamın da dediği gibi generatesql yaptıktan sonra where parametresini kendiniz gireceksiniz. daha sonra
dataset1.qupdate.parambyname('detay'):='elma';
veya
dataset1.qupdate.setpaparamvalue(2,'elma'); (buradaki 2 rakamı query deki parametre sıra numarası ve sıra sıfırla başlar).
deyip,
dataset1.qupdate.execquery;

yani qupdate yerine qinsert query'sine de parametre değerleri gönderip o query yi çalıştırabilirsiniz.

Şahsen bu şekilde kullanıyorum.
Kullanıcı avatarı
iason
Üye
Mesajlar: 38
Kayıt: 18 Kas 2003 02:01
Konum: İstanbul
İletişim:

Mesaj gönderen iason »

Cok zaman gecti aradan ama bir suredir ilgilenemedim firebird ile.

Ilk mesajimda da belirttigim gibi dataset1.qinsert, dataset1.qupdate gibi seyleri kullanamiyorum. 'datasetin boyle bir ozelligi yok' diyor delphi bana.

Delphi 6 update pack 2 kullaniyorum...
sair
Kıdemli Üye
Mesajlar: 288
Kayıt: 16 Haz 2003 04:41
Konum: Kastamonu
İletişim:

Mesaj gönderen sair »

Datasetin bu tür komutlarını kullanmayacaksınız. Siz Datasete diyelim
Dataset1.Insert komutu gönderip post ettiğinizde Datasetin InsertSQL de yazılı olan kodu otomatik devreye girecektir. Yine Database1. Edit gönderip post ettiğinizde UpdateSQL de yazılı olan kod devreye girecek ve kaydı yapacaktır. Kısacası siz insert, edit gibi işlemlerden post gönderdiğinizde dataset gerekli SQL kodlarını yazılı olduğu yerden okuyup güncelleyecek ve veritabanına yazacaktır. Bu kodları kullanmayacaksınız sadece table da çalışır gibi normal database işlem kodlarını göndereceksiniz datasete ....

Sevgiler...
Geçip gideriz bizde ağızsız,dilsiz ve sorgusuz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
Cevapla