slm arkadaşlar ben delphide bir sınav değerlendirme programı yazıyorum . Hemen sorunuma geçeyim.
hazırladığım sql kod şu olacak.
var
sqltext: widestring;
sqltext:='''+inttostr(ders_d[1])+''','''+inttostr(ders_y[1])+'''....(ders sayısı kadar yazdım)
dm.sonuc.sql.add('INSERT INTO SONUC(ID,DERS1DS,DERS1YS) VALUES('+sqltext+')') yazıyorum ama sqltext içindeki olması gereken değerler çağrılmıyor. sadece sqltext içindeki stringi yazıyor. cevaplarınız için şimdiden teşekkürler. kolay gelsin.
hazır sql script oluşturmak
- kara_kule06
- Üye
- Mesajlar: 150
- Kayıt: 18 Nis 2006 02:15
- Konum: ankara/polatlı
- İletişim:
hazır sql script oluşturmak
İlim öğrenmek akıntıya karşı yüzmek gibidir. Ara verildiği zaman gerilenir...
- sabanakman
- Kıdemli Üye
- Mesajlar: 3077
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Tırnaklara dikkat
tırnak işaretlerinde bir eksiklik olabilir.
sqltext:='''+inttostr(ders_d[1])+''','''+inttostr(ders_y[1])+'''..
----
sqltext:=''''+inttostr(ders_d[1])+'''',''''+inttostr(ders_y[1])+''''..
tırnaklar sorun olabilir bu yüzden tırnak içinde string değerleri düzenleyen QuotedStr fonksiyonunu kullanılabilir.
sqltext:=QuotedStr(inttostr(ders_d[1]))+','+QuotedStr(inttostr(ders_y[1]))+..
sqltext:='''+inttostr(ders_d[1])+''','''+inttostr(ders_y[1])+'''..
----
sqltext:=''''+inttostr(ders_d[1])+'''',''''+inttostr(ders_y[1])+''''..
tırnaklar sorun olabilir bu yüzden tırnak içinde string değerleri düzenleyen QuotedStr fonksiyonunu kullanılabilir.
sqltext:=QuotedStr(inttostr(ders_d[1]))+','+QuotedStr(inttostr(ders_y[1]))+..
Selam,
Bence üşenmeyin ve kodunuzu parametre mantığınla yazın, örneğin:
AdoQuery.Close;
AdoQuery.SQL.Add('INSERT INTO TABLE (ADI, SOYADI)');
AdoQuery.SQL.Add('VALUES (:ADI, :SOYADI)');
AdoQuery.parameters.parambyname('ADI').value := adi.text;
AdoQuery.parameters.parambyname('SOYADI').value := soyadi.text;
AdoQuery.ExecSQL;
Tabi bu Ado componenti icin gecerli olan bir olay eger normal query kullaniyorsaniz yalnis hatirlamiyorsam
Query1.Params.ByName('ADI')... gibi bişey olması lazm ama büyük ihtimalle yalnış yazdim:) neyse sonuc olarak parametre kullanırsanız tırnak, tarih yazim bicimi vs sorun olmaz.. Derim ben tabi sizin bileceginiz iş
Kolay gelsin
Bence üşenmeyin ve kodunuzu parametre mantığınla yazın, örneğin:
AdoQuery.Close;
AdoQuery.SQL.Add('INSERT INTO TABLE (ADI, SOYADI)');
AdoQuery.SQL.Add('VALUES (:ADI, :SOYADI)');
AdoQuery.parameters.parambyname('ADI').value := adi.text;
AdoQuery.parameters.parambyname('SOYADI').value := soyadi.text;
AdoQuery.ExecSQL;
Tabi bu Ado componenti icin gecerli olan bir olay eger normal query kullaniyorsaniz yalnis hatirlamiyorsam
Query1.Params.ByName('ADI')... gibi bişey olması lazm ama büyük ihtimalle yalnış yazdim:) neyse sonuc olarak parametre kullanırsanız tırnak, tarih yazim bicimi vs sorun olmaz.. Derim ben tabi sizin bileceginiz iş
Kolay gelsin
Sql cümlesini kod ile olusturdugunuz takdirde parametreleride sizin create etmeniz gerekli
Tasarım sırasında yazdıgınız sql de : ile gösterilen parametreler o sırada olusturulmakta ama runtime sql olusturursanız (yukarıda Glen arkadasın verdigi gibi)
AdoQuery.parameters.parambyname('ADI').value := adi.text;
gibi bir kullanım sanırım hata verecektir,
AdoQuery.CreateParameter gibi bir metodla manual olarak bu parametrelerin olusturulması gerekecektir.
(ibx bilesenlerinde dedigim gibi ama ADO bilesenleri ile ilgili bir ornek yapmadım. Lakin tüm db bilesenleri yaklasık aynı mantıkta calısıyor, bu yuzden kesin olarak ADO bilesenleri hakkında fikir yürütemiyorum.)
Tasarım sırasında yazdıgınız sql de : ile gösterilen parametreler o sırada olusturulmakta ama runtime sql olusturursanız (yukarıda Glen arkadasın verdigi gibi)
AdoQuery.parameters.parambyname('ADI').value := adi.text;
gibi bir kullanım sanırım hata verecektir,
AdoQuery.CreateParameter gibi bir metodla manual olarak bu parametrelerin olusturulması gerekecektir.
(ibx bilesenlerinde dedigim gibi ama ADO bilesenleri ile ilgili bir ornek yapmadım. Lakin tüm db bilesenleri yaklasık aynı mantıkta calısıyor, bu yuzden kesin olarak ADO bilesenleri hakkında fikir yürütemiyorum.)
ÜŞENME,ERTELEME,VAZGEÇME