String ifadeyi execute etmek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
emrgln
Üye
Mesajlar: 50
Kayıt: 03 May 2013 04:58

String ifadeyi execute etmek

Mesaj gönderen emrgln »

Mrb Arkadaşlar,

Delphi için çalışabilecek bir stringi Sqlden çağırıp delphide yazılmış gibi kullanabilir miyiz?

örneğin :

degisken:='Deneme';
select * from '+degisken+' stringini sqlden alıp select * from Deneme haline nasıl dönüştürebilirim.

Saygılar
Kullanıcı avatarı
emrgln
Üye
Mesajlar: 50
Kayıt: 03 May 2013 04:58

Re: String ifadeyi execute etmek

Mesaj gönderen emrgln »

Çok mu ilginç bir şey istedim acaba ?

Sadece Sqlden satırı alıp dataset içinde kullanacağım. Bunun yolu yok mu?
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Re: String ifadeyi execute etmek

Mesaj gönderen m_ekici »

Sorunun içinde cevabı var. Neyi yapamıyorsun?

Kod: Tümünü seç

var
QStr: String;
begin
QRY_.Close;
QRY_.Sql.Clear;
QRY_.sql.add('SELECT SORGU FROM TABLO WHERE KAYIT=1'); 
QRY_.Open;
QStr:=QRY_.fieldvalues['SORGU']+' DENEME';   // DB de  'SELECT * FROM ' olduğunu varsayıyorum.

QRY1_.Close;
QRY1_.Sql.Clear;
QRY1_.sql.add(QStr); 
QRY1_.Open;



Kullanıcı avatarı
emrgln
Üye
Mesajlar: 50
Kayıt: 03 May 2013 04:58

Re: String ifadeyi execute etmek

Mesaj gönderen emrgln »

Sql Tablosunda veri şu şekilde bulunuyor.
Adsız.png
Adsız.png (1.26 KiB) 2433 kere görüntülendi
adodataset1.close;
adodataset1.commandtext:='select aciklama from table_1 where id=1';
adodataset1.open;

degisken:='Deneme';

adodataset2.close;
adodataset2.commandtext:=adodataset1.fields[0].value;
// value değeri = select * from '+degisken+' olarak dönüyor. Bunu nasıl select * from Deneme halinde execute edebilirim.
adodataset2.open;
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: String ifadeyi execute etmek

Mesaj gönderen thelvaci »

StringReplace fonksiyonuna bakabilirsiniz.
Kullanıcı avatarı
emrgln
Üye
Mesajlar: 50
Kayıt: 03 May 2013 04:58

Re: String ifadeyi execute etmek

Mesaj gönderen emrgln »

öncelikle cevaplarınızı paylaştığınız için teşekkür ederim thelvaci.

Sorun şurda. Sql den veriyi çektiğimde veri içinde string halinde değişken taşıyor. Bu stringi alıp olduğu gibi ikinci bir dataset ile değişken değerleriyle kullanmak istiyorum. Dizayntime '+degisken+' ifadesi ile Runtime '+degisken+' ifadesi aynı değil. Runtime '+degisken+' stringine runtime yeni değer atamak istiyorum.
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: String ifadeyi execute etmek

Mesaj gönderen unicorn64 »

table_1 deki aciklama alanında

Kod: Tümünü seç

SELECT * FROM %DINAMIK%
yazdığını varsayarsak

Kod: Tümünü seç

var 
	dinamikSorgu:string;
	tabloAdi:string;
	dinamik1:string;
	dinamik2:string;
begin

adodataset1.close;
adodataset1.commandtext:='select aciklama from table_1 where id=1';
adodataset1.open;


dinamikSorgu:=adodataset1.fields[0].value;
//dinamikSorgu değişkeninde 'SELECT * FROM %DINAMIK%' yazıyor

tabloAdi:='table_2';
dinamik1:= StringReplace(dinamikSorgu,'%DINAMIK%' , tabloAdi);



tabloAdi:='table_3';
dinamik2:= StringReplace(dinamikSorgu,'%DINAMIK%' , tabloAdi);

end;


bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
Kullanıcı avatarı
emrgln
Üye
Mesajlar: 50
Kayıt: 03 May 2013 04:58

Re: String ifadeyi execute etmek

Mesaj gönderen emrgln »

Değerli meslektaşım unicorn64,

mesele sadece stringreplace değil. sqlde sadece tablo adı değil, aynı zamanda '+ trim(IRSALIYE_SATIRLARI) +' veya IntToStr(Id) veya QuotedStr('deneme') gibi gibi gibi ifadeler var. Tek tek ayrı kontroller yapıp çözmek elbette olur . ama bu iyi bir çözüm değil. Veritabanında bulunan sql cümlesinde delphinin içinde kullandığımız değişkenler var. Bu Sql cümlesini çağırıp runtime da execute etmek istiyoruz. Böyle bir kullanım mümkün mü?
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: String ifadeyi execute etmek

Mesaj gönderen esistem »

Selam,
Bence yanlış yoldan ilerlemek istiyorsunuz sayın @emrgln, sizin yapmak istediğiniz, exe içersinde script çalıştırmak gibi geldi bana. Bir query sorgusunda inttostr(id) gibi bir kodun ne işi olur? Bu işi delphi tarafında yapıp dönüşümü sağladıktan sonra query içersine atmalısınız. Çünkü exe bu şekilde bir kullanım imkanı vermez size, id isminde bir değişken exe dosyasında sql satırınızdan önce tanımlanmış bir değişken büyük ihtimalle bunu alıp kullansın gibi bir düşünce sezdim ama ııh olmaz. PHP deseniz tamamda exe dosyada olmaz bence.
Cevapla