SQL komutu içinde Değişken

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
namelesshero
Üye
Mesajlar: 20
Kayıt: 18 Oca 2005 05:25
Konum: Kahramanmaraş
İletişim:

SQL komutu içinde Değişken

Mesaj gönderen namelesshero »

Merhaba Arkadaşlar;

Benim bir projem var ve bu projeden bahsetmeme gerek yok.sadece soracağım soru ise sql cümleciği içinde değişken tanımlama ve o değişkeni kullanma nasıl olmaktadır. mesela bir örnek;


SELECT DB(0,'Değişken') ve Değişken kısmını progam içinde kullandırma nasıl olmaktadır.

Bu konuda yardımcı olursanız sevinirim....
Kolay Gelsin....
o{-0-}o
Kullanıcı avatarı
Bil_Bakalım
Üye
Mesajlar: 61
Kayıt: 31 Ara 2004 01:45
Konum: İzmir
İletişim:

Mesaj gönderen Bil_Bakalım »

Sanırım size iki öneri sunabilirim

Bunlardan birincisi ki hiç bir zaman elinizden düşürmemeniz gerekir :ara zira bu konu ile en azından temel konular sitede oldukça çook

İkinci öneri ise
husonet yazdı:Size iki adet link veriyorum burada yazılanları okuyun.

http://www.delphiturkiye.com/index.php?page=dbsql.htm
http://www.delphiturkiye.com/index.php? ... lquery.htm

Kolay gelsin...
namelesshero
Üye
Mesajlar: 20
Kayıt: 18 Oca 2005 05:25
Konum: Kahramanmaraş
İletişim:

Bulamadım

Mesaj gönderen namelesshero »

bir önceki yazdığım sorunun cevabını bulamadım arkadaşlar... :(
o{-0-}o
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

değişkenden kasıt Select içine parametre göndermekse kabaca;

Kod: Tümünü seç

select * from tablo where alan1 = :PARAMETRE
burada query yi açmadan

Kod: Tümünü seç

Query1.ParamByName('PARAMETRE').Value := Deger;
Query1.Active := True;
Value yerine AsInteger / AsString her ne tip ise.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
muskut
Kıdemli Üye
Mesajlar: 1118
Kayıt: 22 Ara 2003 09:50
Konum: Sandalyemden
İletişim:

Mesaj gönderen muskut »

TQuery bileşeni kullandığın da, PARAMETERS özelliğini kullanarak datasetin için gerekli değişkenlerini tanımlayabilirsin. Mesela; prmDegisken

Daha sonra SQL özelliğinden sql cümleciğini yazarsın;

Select * from TABLOM where SEHIR= :prmDegisken

burada dikkat edebileceğin bir yer tanımladığın sql değişkeninin önüne : (ikinokta) koymak olabilir. Ama koymadan da kodun çalışabilir.

Diğer ve çok önemli bir nokta; parameterelerini data sete geçiriken mutlaka datasetini kapaman gerekmektedir. Kapadıktan sonra da açmak için 2 komut kullanacaksın; ya OPEN ya da ExecSQL dir. Bu ikisi arasında güzel ve ince bir nokta vardır. Bu da OPEN komutunu tablondan sadece SELECT gibi herhangi bir kayıt değişikliği olmayan komutlar için çağırmalısın, ExecSQL 'i ise tablon üzerinde Kayıt, Güncelleme gibi işlemler yapacaksan çağırmalısın

aşağıda bununla ilgili ufak bir kod parçacığı yapıştırıyorum:

Kod: Tümünü seç

        adoHareketTablosu.Close;
        with adoHareketKayit.Parameters do
        begin
          ParamByName('prmHAREKETYONU').Value := 'G';
          ParamByName('prmHAREKETTURU').Value := 'U';
          ParamByName('prmURUNMALZEMEID').Value := adoUrunTablosu.FieldByName('ID').AsInteger;
          ParamByName('prmMIKTAR').Value := StrToInt(edtMiktar.Text);
          ParamByName('prmBIRIM').Value := cmbOlcuBirimi.ItemIndex;
          if edtFirma.Text <> '' then
            ParamByName('prmFIRMA').Value := edtFirma.Text;
          ParamByName('prmBIRIMFIYATI').Value := StrToFloat(edtBirimFiyati.Text);
          ParamByName('prmTOPLAMFIYATI').Value := StrToFloat(lblToplamFiyat.Caption);
          ParamByName('prmPARABIRIMI').Value := cmbParaBirimi.ItemIndex;
          ParamByName('prmTARIH').Value := cmbTarih.DateTime;
          if edtAciklama.Text <> '' then
            ParamByName('prmACIKLAMA').Value := edtAciklama.Text;
        end;
        adoHareketKayit.ExecSQL;
Kullanıcı avatarı
Bil_Bakalım
Üye
Mesajlar: 61
Kayıt: 31 Ara 2004 01:45
Konum: İzmir
İletişim:

Mesaj gönderen Bil_Bakalım »

bende ufak birşey yazmak isterim;

Query1.sql.text := 'Select id,Adi,Soyadi,Numarasi from ogrenci where id=:p';
Query1.params[0].asinteger :=5;
Query1.Open;//Sana bir yada birden fazla satır bilgi getirecek ise kullanırsın Delete,Update işlemleri için Query1.Execsql komutunu kullanırsın

Dönen kaydın bilgisine de
showmessage(inttostr(Query1.fields[0].asinteger)); örneğinde gördüğün gibi ulaşabilirsin Burdaki sıfır birinci kaydı temsil ediyor.

İkinci yol ise Query1.fieldbyname('id').asinteger ile ulaşmaktır.

Sanırım şimdi sql içerisine delphide nasıl parametre alabileceğini ve bunun sonucunda gelen kayda nasıl ulaşabileceğini anlatabilmişimdir.
:lol: Bilgi paylaşıldıkça güzeldir.
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

Mesaj gönderen abdulkadir »

bende anladıgım kadarıyla bi el atayım
inşallah yardımcı olur.

Kod: Tümünü seç

procedure AKL_Listele(Str:string);
var
  Sorgu: TQuery;
begin
  Screen.Cursor := crHourGlass;
  Sorgu := TQuery.Create(nil);
  with Sorgu do
    begin
      Active := False;
      //DatabaseName :='';
      SQL.Add('SELECT  '+Str+'');
      SQL.Add('FROM " DBTabloAdi"');
      SQL.Add('ORDER BY '+Str+'');
      try
        Sorgu.Open;
      finally
        Sorgu.Free;
        Screen.Cursor := crDefault;
      end;
    end;
end;
button1 clikte adlara
button2 clikte soyada göre listeleyecek proceduredir
Kullanımı

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
     AKL_Listele('ADI');
end;

procedure TForm2.Button1Click(Sender: TObject);
     AKL_Listele('SOYADI');
end;


kolay gelsin
Cevapla