sorgu çalıştırma karmaşası
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- techmaster
- Üye
- Mesajlar: 52
- Kayıt: 08 Ağu 2003 03:24
- Konum: Adana
sorgu çalıştırma karmaşası
merhabalar...
dataset kullanıyorum ve sorgularda farklı farklı şeylerin kullanılması kafamı karıştırdı...
mesela
.insertsql.add('insert......');
forumda insert,delete,update olaylarında execsql kullanılması gerekir derken geçenlerde sormuş olduğum soruya aldığım bir cevapta bu kodun altına
.open;
.insert;
.post;
yazmam söylendi ve kod çalıştı...tam anlamıyla ne iş yapar bu open ve execsql...iyice kafam karıştı...
bunlar arasında farklar nedir??
dataset kullanıyorum ve sorgularda farklı farklı şeylerin kullanılması kafamı karıştırdı...
mesela
.insertsql.add('insert......');
forumda insert,delete,update olaylarında execsql kullanılması gerekir derken geçenlerde sormuş olduğum soruya aldığım bir cevapta bu kodun altına
.open;
.insert;
.post;
yazmam söylendi ve kod çalıştı...tam anlamıyla ne iş yapar bu open ve execsql...iyice kafam karıştı...
bunlar arasında farklar nedir??
s.a.
kullandığın bileşen
ibdataset ise
bunun selectsql, insertsql,modifysql ve deletesql ine gerekli kodları yazarsan
open,insert,post,delet komutlarını kullanırsın.
yok ben select sql i değiştireceğim dersen yani select sql e insert yada update kodu yazarsan execsql i kullanmalısın.
kullandığın bileşen
ibquery veya ibsql
eğer select ile başlayan sql yazdıysan open
insert yada update yada delete ile başlayan sql yazdıysan execsql
kolay gelsin.
kullandığın bileşen
ibdataset ise
bunun selectsql, insertsql,modifysql ve deletesql ine gerekli kodları yazarsan
open,insert,post,delet komutlarını kullanırsın.
yok ben select sql i değiştireceğim dersen yani select sql e insert yada update kodu yazarsan execsql i kullanmalısın.
kullandığın bileşen
ibquery veya ibsql
eğer select ile başlayan sql yazdıysan open
insert yada update yada delete ile başlayan sql yazdıysan execsql
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
- techmaster
- Üye
- Mesajlar: 52
- Kayıt: 08 Ağu 2003 03:24
- Konum: Adana
aslangeri hocam çok sağolun...
ama aşağıdaki kodu çalıştırdığımda hata alıyorum
yukarıdaki kodu çalıştırmaya çalıştığımda 'Field GRUP_ID must have a value' diye bir hata alıyorum...GRUP_ID farklı bir tabloda..ilgisi yok bu kodlarla...
ancak yukarıdaki koda aşağıdaki gibi bir satır eklediğimde (* işaretli satır) ise 'Empty Query' hatası veriyor..
burdan datasetin selectsql'deki sorguyu çalıştırmaya çalıştığını anladım ama sebebini anlamadım çünkü ben burda insertsql sorgusunu çalıştırmasını istiyorum...ama şunuda söyleyeyim bu koddan önce selectsql kullandım ama alan seçmek için yani bi işlem yaptırmadım...
iyi çalışmalar...
ama aşağıdaki kodu çalıştırdığımda hata alıyorum
Kod: Tümünü seç
frm_ekle.grupidal();
frm_ana.IBDataSet1.Close;
frm_ana.IBDataSet1.insertSQL.Clear;
frm_ana.IBDataSet1.insertSQL.Add('insert into ALBUM (ALBUM_GRUP_ID,ALBUM_ADI,ALBUM_TARIHI,ALBUM_CD,ALBUM_KAPAK)');
frm_ana.IBDataSet1.insertSQL.Add('VALUES ('''+inttostr(grupid)+''','''+edit5.Text+''','''+edit3.Text+''','''+edit4.text+''','''+edit7.text+''')');
frm_ana.IBDataSet1.open;
frm_ana.IBDataSet1.Insert;
frm_ana.IBDataSet1.Post;
frm_ana.IBDataSet1.Transaction.CommitRetaining;
ancak yukarıdaki koda aşağıdaki gibi bir satır eklediğimde (* işaretli satır) ise 'Empty Query' hatası veriyor..
Kod: Tümünü seç
frm_ekle.grupidal();
frm_ana.IBDataSet1.Close;
frm_ana.IBDataSet1.SelectSQL.Clear;*
frm_ana.IBDataSet1.insertSQL.Clear;
frm_ana.IBDataSet1.insertSQL.Add('insert into ALBUM (ALBUM_GRUP_ID,ALBUM_ADI,ALBUM_TARIHI,ALBUM_CD,ALBUM_KAPAK)');
frm_ana.IBDataSet1.insertSQL.Add('VALUES ('''+inttostr(grupid)+''','''+edit5.Text+''','''+edit3.Text+''','''+edit4.text+''','''+edit7.text+''')');
frm_ana.IBDataSet1.open;
frm_ana.IBDataSet1.Insert;
frm_ana.IBDataSet1.Post;
frm_ana.IBDataSet1.Transaction.CommitRetaining;
iyi çalışmalar...
bende anlayana kadar zorlandiydim ama, anladim en sonunda.
Eger veri tabanindan verileri almak istiyorsan Select (Secmek) veri tabanina sec deyip ambari actiriyorsun gelen degerlerle islemlerini yapiyorsun, degerlere ihtiyacin kalmadigi zaman close ile ambari kapatiyorsun.
Digerinde ise execSql (Execute) yerine getir diyerek bir komut gönderiyorsun ve istediklerin ambarin icinde yerine getiriliyor.
Yukarda verdigin örnek'in calisamamamasi ambari aciyorsun ama neyi sececegini bildirmiyorsun yani ambari acmadan SQL texti vermen lazim.
Gene anlatamadim ama olsun
Eger veri tabanindan verileri almak istiyorsan Select (Secmek) veri tabanina sec deyip ambari actiriyorsun gelen degerlerle islemlerini yapiyorsun, degerlere ihtiyacin kalmadigi zaman close ile ambari kapatiyorsun.
Digerinde ise execSql (Execute) yerine getir diyerek bir komut gönderiyorsun ve istediklerin ambarin icinde yerine getiriliyor.
Yukarda verdigin örnek'in calisamamamasi ambari aciyorsun ama neyi sececegini bildirmiyorsun yani ambari acmadan SQL texti vermen lazim.
Gene anlatamadim ama olsun

miskin
Ve Tanri, bütün kullarini davul edecek
Ve Tanri, bütün kullarini davul edecek

- techmaster
- Üye
- Mesajlar: 52
- Kayıt: 08 Ağu 2003 03:24
- Konum: Adana
selam aslında kardeş neden bu basit işlerle kendinizi yoruyorsunuz ki siz Execsql kullancaksanız Delete,Update,insert komutlarında yani kayıtlar arasında oynama yapılmıyorsa... yok kayıtlar giriliyorsa open gibi komutlar kullanılmaktadır
bunu ibquery ile de yapabilirsiniz
mesela siz silme işlemi yapcaksanız ve butona basıldığında gerçekleşmesini o anda görmek istiyosanız
Ibquery1.close;
ıbquery1.sql.clear;
ibquerey1.sql.add('delete from tablo adı');
ibquery1.sql.execsql;
sonra koda devam ediyoz
ibquery1.close;
ibquery1.sql.clear;
ibquery1.sql.add('select*from tablo adı');
ibquery1.open;
kolay gelsin.......
bunu ibquery ile de yapabilirsiniz
mesela siz silme işlemi yapcaksanız ve butona basıldığında gerçekleşmesini o anda görmek istiyosanız
Ibquery1.close;
ıbquery1.sql.clear;
ibquerey1.sql.add('delete from tablo adı');
ibquery1.sql.execsql;
sonra koda devam ediyoz
ibquery1.close;
ibquery1.sql.clear;
ibquery1.sql.add('select*from tablo adı');
ibquery1.open;
kolay gelsin.......
- techmaster
- Üye
- Mesajlar: 52
- Kayıt: 08 Ağu 2003 03:24
- Konum: Adana
selman hocam dediğiniz gibi yapıncada 'use open for a select statement' hatası veriyor...
Kod: Tümünü seç
frm_ekle.grupidal();
frm_ana.IBDataSet1.Close;
frm_ana.IBDataSet1.insertSQL.Clear;
frm_ana.IBDataSet1.insertSQL.Add('insert into ALBUM (ALBUM_GRUP_ID,ALBUM_ADI,ALBUM_TARIHI,ALBUM_CD,ALBUM_KAPAK)');
frm_ana.IBDataSet1.insertSQL.Add('VALUES ('''+inttostr(grupid)+''','''+edit5.Text+''','''+edit3.Text+''','''+edit4.text+''','''+edit7.text+''')');
frm_ana.IBDataSet1.ExecSQL;
-
- Üye
- Mesajlar: 401
- Kayıt: 22 Tem 2004 02:03
- Konum: sıkıntı çekmişlere yakın bi yerden
olarak denermisintechmaster yazdı:Kod: Tümünü seç
frm_ekle.grupidal(); frm_ana.IBDataSet1.Close; frm_ana.IBDataSet1.insertSQL.Clear; frm_ana.IBDataSet1.insertSQL.Add('insert into ALBUM (ALBUM_GRUP_ID,ALBUM_ADI,ALBUM_TARIHI,ALBUM_CD,ALBUM_KAPAK)'); frm_ana.IBDataSet1.insertSQL.Add('VALUES ('''+inttostr(grupid)+''','''+edit5.Text+''','''+edit3.Text+''','''+edit4.text+''','''+edit7.text+''')'); frm_ana.IBDataSet1.ExecSQL; frm_ana.ibdataset1.transaction.commitretainig;
tavsiye :
eğer tablona editler üzerinden bilgi gireceksen dbedit kullan datasource ve tablo alanlarını belirt ve aşağıdaki kodları kullan
ilk önce tablonu append moduna getir bu formun showu veya create veya bir buton olabilir
Kod: Tümünü seç
if not frm_ana.ibdataset1.active then
frm_ana.ibdataset1.open;
frm_ana.ibdataset1.append;
kayıt yaptığın yere (button olabilir)
Kod: Tümünü seç
frm_ana.ibdataset1ALBUM_GRUP_ID.asstring:= inttostr(grupid);
frm_ana.ibdataset1.post;
frm_ana.ibdataset1.transaction.commitretaning;
frm_ana.ibdataset1.refresh;
type
Tform1 = class(Tform)
Tform1 = class(Tform)
s.a.
arkadaşım ibdataseti kullanıyorsun. insertsql ine değerler veriyorsun.
ama select sqlde ne yazıyor. sen
yani delphiden select,insert,delete, ve modify sqllerini hazırlayacaksın sonra programın içinde sanki bir table kullanıyormuş gibi kullanacaksın.
arkadaşların burda hataya düştükleri nokta ibdataset i tquery yada tupdate sql gibi kullanmaya çalışıyorlar(çalışılıyor). IBdataset in SQL (select,insert,...) kodlarını program içinden değiştirmeyin (en azından başlangıç seviyesindeki arkadaşlar) ibdatasetin ilgil sqllerini(select,insert,up....) hazırladıktan sonra table gibi kullanın.
kolay gelsin.
arkadaşım ibdataseti kullanıyorsun. insertsql ine değerler veriyorsun.
ama select sqlde ne yazıyor. sen
önce open komutunu veriyorsun. open komutu ile selectsql çalışıyor. ibdataseti table gibi kullanmalısın.frm_ana.IBDataSet1.open;
frm_ana.IBDataSet1.Insert;
frm_ana.IBDataSet1.Post;
yani delphiden select,insert,delete, ve modify sqllerini hazırlayacaksın sonra programın içinde sanki bir table kullanıyormuş gibi kullanacaksın.
arkadaşların burda hataya düştükleri nokta ibdataset i tquery yada tupdate sql gibi kullanmaya çalışıyorlar(çalışılıyor). IBdataset in SQL (select,insert,...) kodlarını program içinden değiştirmeyin (en azından başlangıç seviyesindeki arkadaşlar) ibdatasetin ilgil sqllerini(select,insert,up....) hazırladıktan sonra table gibi kullanın.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
- techmaster
- Üye
- Mesajlar: 52
- Kayıt: 08 Ağu 2003 03:24
- Konum: Adana
sorunu şu şekilde hallettim
aslangeri hocam dediğnizi tam anlayamadım yani birden fazla dataset kullanıp hepsine ayrı işmi yaptırayım...
Kod: Tümünü seç
frm_ana.IBDataSet1.Close;
frm_ana.IBDataSet1.selectSQL.Clear;
frm_ana.IBDataSet1.selectSQL.Add('insert into ALBUM (ALBUM_GRUP_ID,ALBUM_ADI,ALBUM_TARIHI,ALBUM_CD,ALBUM_KAPAK)');
frm_ana.IBDataSet1.selectSQL.Add('VALUES ('''+inttostr(grupid)+''','''+edit5.Text+''','''+edit3.Text+''','''+edit4.text+''','''+edit7.text+''')');
frm_ana.IBDataSet1.Open;
frm_ana.IBDataSet1.Transaction.CommitRetaining;
merhaba;
Open yerine ExecSQL kullanmalısın...
iyi günler...
Nasıl çalıştı bilmiyorum ama yukarıda ki kod yine çalışmaz.techmaster yazdı:sorunu şu şekilde hallettimKod: Tümünü seç
frm_ana.IBDataSet1.Close; frm_ana.IBDataSet1.selectSQL.Clear; frm_ana.IBDataSet1.selectSQL.Add('insert into ALBUM (ALBUM_GRUP_ID,ALBUM_ADI,ALBUM_TARIHI,ALBUM_CD,ALBUM_KAPAK)'); frm_ana.IBDataSet1.selectSQL.Add('VALUES ('''+inttostr(grupid)+''','''+edit5.Text+''','''+edit3.Text+''','''+edit4.text+''','''+edit7.text+''')'); frm_ana.IBDataSet1.Open; frm_ana.IBDataSet1.Transaction.CommitRetaining;

iyi günler...
s.a aslangeri hocamın bahsettiği olay şu Ibdataset bileşeni aslında o kadar kullanışlı ki hem delete fonk.hem update gibi fonksiyonları mesela formunuza bir tane daha ibquerty gibi nesneler eklemedende yapılabilyor fakat ibdataset kullanılırken dikkat edilmesi gereken hususlar var onlar nedir diye sorarsanız
mesela ibdatasette carikart diye bir tablomuz olsun.........bu cari kartta diyelim bir dbgridde göstereceğiz (select*from carikart) diye biz şimdi ibdatasette bir daha update işlemini veya ne bilim delete işlemini yaptırıyoz yaptırdıkdan soınra tekrar eski haline kodlarla döndürmek gerekiyor.
mesela ibdatasette carikart diye bir tablomuz olsun.........bu cari kartta diyelim bir dbgridde göstereceğiz (select*from carikart) diye biz şimdi ibdatasette bir daha update işlemini veya ne bilim delete işlemini yaptırıyoz yaptırdıkdan soınra tekrar eski haline kodlarla döndürmek gerekiyor.
- techmaster
- Üye
- Mesajlar: 52
- Kayıt: 08 Ağu 2003 03:24
- Konum: Adana
hmmm...sağolun selman hocam..datasetin karışık bişey olduğu zaten belliydi 
@Uğur1982...
bende öyle biliyordum ama en sonunda bunu denemek zorunda kaldım ve ne hikmetse çalışıyor...
yok ben öğrenemiyecem heralde bu interbase bileşenlerini...olmaması gerekn şeyler oluyor...yoksa oluyorda bizmi olmaz diye biliyoruz


@Uğur1982...
bende öyle biliyordum ama en sonunda bunu denemek zorunda kaldım ve ne hikmetse çalışıyor...
yok ben öğrenemiyecem heralde bu interbase bileşenlerini...olmaması gerekn şeyler oluyor...yoksa oluyorda bizmi olmaz diye biliyoruz

