Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
SQL Text içerisindebul ve değiştir
#1
Merhaba Arkadaşlar, Bir sql text ifadenin içerisinde istemiş [] içerisinde yazmış olduğumuz ifadeleri almak ve değiştirmek istiyorum.
nasıl yapılacağı konusunda bilgisi olan var mı acaba?

örneğin :
SELECT * FROM [FirmaNo]Kasa WHERE Tarih=[Tarih(Date)]

böyle bir soru işleyeceğim zaman köşeli parantez içerisindeki ifaleri alıp ayrı form açıp oradan girilmesini isteyeceğim

şimdiden yardımlarınız için teşekkür ederim
Cevapla
#2
(23-04-2021, Saat: 11:22)software44 Adlı Kullanıcıdan Alıntı: Merhaba Arkadaşlar, Bir sql text ifadenin içerisinde istemiş [] içerisinde yazmış olduğumuz ifadeleri almak ve değiştirmek istiyorum.
nasıl yapılacağı konusunda bilgisi olan var mı acaba?

örneğin :
SELECT * FROM [FirmaNo]Kasa WHERE Tarih=[Tarih(Date)]

böyle bir soru işleyeceğim zaman köşeli parantez içerisindeki ifaleri alıp ayrı form açıp oradan girilmesini isteyeceğim

şimdiden yardımlarınız için teşekkür ederim

Böyle bir şey mi istiyorsun?

o3gft3.jpg
Cevapla
#3
(23-04-2021, Saat: 12:14)MuhammedYasir Adlı Kullanıcıdan Alıntı:
(23-04-2021, Saat: 11:22)software44 Adlı Kullanıcıdan Alıntı: Merhaba Arkadaşlar, Bir sql text ifadenin içerisinde istemiş [] içerisinde yazmış olduğumuz ifadeleri almak ve değiştirmek istiyorum.
nasıl yapılacağı konusunda bilgisi olan var mı acaba?

örneğin :
SELECT * FROM [FirmaNo]Kasa WHERE Tarih=[Tarih(Date)]

böyle bir soru işleyeceğim zaman köşeli parantez içerisindeki ifaleri alıp ayrı form açıp oradan girilmesini isteyeceğim

şimdiden yardımlarınız için teşekkür ederim

Böyle bir şey mi istiyorsun?

o3gft3.jpg

evet buna benziyor ama, sql komut yazdığınızda içerisinde kullanmış olduğunuz paramatreleri görüp filitre ekranını getirmek istiyorum ve girdiğiniz filitreleri komutun içerisine tekrar yazmak istiyorum
Cevapla
#4
(23-04-2021, Saat: 12:14)MuhammedYasir Adlı Kullanıcıdan Alıntı:
(23-04-2021, Saat: 11:22)software44 Adlı Kullanıcıdan Alıntı: Merhaba Arkadaşlar, Bir sql text ifadenin içerisinde istemiş [] içerisinde yazmış olduğumuz ifadeleri almak ve değiştirmek istiyorum.
nasıl yapılacağı konusunda bilgisi olan var mı acaba?

örneğin :
SELECT * FROM [FirmaNo]Kasa WHERE Tarih=[Tarih(Date)]

böyle bir soru işleyeceğim zaman köşeli parantez içerisindeki ifaleri alıp ayrı form açıp oradan girilmesini isteyeceğim

şimdiden yardımlarınız için teşekkür ederim

Böyle bir şey mi istiyorsun?

o3gft3.jpg

unit Unit52;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm52 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    LabelSQL: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
  private
    { Private declarations }

  public
    { Public declarations }
    FirmaNo, Tarih, SQL: string;

  end;

var
  Form52: TForm52;

implementation

{$R *.dfm}

uses Unit53;

procedure TForm52.Button1Click(Sender: TObject);
begin
  FirmaNo := Edit1.Text;
  Tarih := Edit2.Text;
  Form53.ShowModal;
end;

procedure TForm52.Edit1Change(Sender: TObject);
begin
  FirmaNo := Edit1.Text;
  Tarih := Edit2.Text;
  LabelSQL.Caption := 'SELECT * FROM [' + FirmaNo + ']Kasa WHERE Tarih=[' +
    Tarih + ']';
end;

end.
unit Unit53;

interface

uses
 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
 System.Classes, Vcl.Graphics,
 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
 TForm53 = class(TForm)
   Edit1: TEdit;
   Edit2: TEdit;
   Button1: TButton;
   Label1: TLabel;
   Button2: TButton;
   Label2: TLabel;
   Label3: TLabel;
   procedure Button2Click(Sender: TObject);
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form53: TForm53;

implementation

{$R *.dfm}

uses Unit52;

procedure TForm53.Button1Click(Sender: TObject);
begin
 Label1.Caption := 'SELECT * FROM [' + Form52.FirmaNo + ']Kasa WHERE Tarih=[' +
    Form52.Tarih + ']';
end;

procedure TForm53.Button2Click(Sender: TObject);
begin
 Edit1.Text := Form52.FirmaNo;
 Edit2.Text := Form52.Tarih;
end;

end.

Değişkenlere (FirmaNo, Tarih) atama yaparak filtreleyebilirsiniz.
Cevapla
#5
Sanırım SQL de paramaetre kullanmakdan bahsediyorsunuz..

Kısaca örneklendirecek olursak;


IB1.Close;
IB1.Params.Clear;
IB1.Sql.Tex:='Select * from :Tablom where alan1= :alan1v and alan2 between alan2v1 and alan2v2';
IB1.Parambyname('alan1v').value:=Edit1.Text; (Eğer string ise QuatrSTR(Edit1.text) demeniz gerekiyor.)
IB1.Parambyname('alan2v1').value:=Edit2.Text; 
IB1.Parambyname('alan2v2').value:=Edit3.Text; 
IB1.Prepare;
IB1.Open;


Direk bu editörde yazdım. Hata var ise affola.
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#6
SQL cümlelerini kullanıcı veya siz elle mi veya çoktan seçmeli olarak mı üretip yazıyorsunuz ? Bu nedenle mi SQL içerisinden parametre çekme ihtiyacı doğdu ?
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#7
(23-04-2021, Saat: 17:03)mrmarman Adlı Kullanıcıdan Alıntı: SQL cümlelerini kullanıcı veya siz elle mi veya çoktan seçmeli olarak mı üretip yazıyorsunuz ? Bu nedenle mi SQL içerisinden parametre çekme ihtiyacı doğdu ?

sql cümleyi biz elle yazacağız ama içerisinde parametre kulalnmışsak otomatik olarak kullanılan parametreler için bir formda onların girilmesini sağlamak istiyorum.

kısaca özetlersem girmiş olduğumuz her sorguda ayrıca parametre bilgilerinin girildiği ekran yapmaktansa , girilen sql sorgunun içerisinde kendimize göre bir formatta verilen parametreleri otomatik oluşturmak ve veri girişini sağlamak istiyorum.
 
örnek sorgu : SELECT * FROM [FirmaNo(String)]Kasa WHERE Tarih=[Tarih(Date)]

şimdiden teşekkür ederim.
Cevapla
#8
Bir soru daha, FROM takip eden köşeli parantez tektir diye değerlendiriyorum ( JOIN vs varsa söyleyin ) diğer yandan WHERE takip eden kondisyon tek mi yoksa AND, OR, CASE ile uzayan şekilde çok sayıda parametre olabiliyor mu ?

Bu neden önemli üreteceğiniz PROCEDURE tanımı aşağıdaki gibi olacaktır.

procedure ParseParams( const aSQLtext: String; var aFormat: String; var aFROM: String; aWHEREs: TStrings );
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#9
(24-04-2021, Saat: 12:44)mrmarman Adlı Kullanıcıdan Alıntı: Bir soru daha, FROM takip eden köşeli parantez tektir diye değerlendiriyorum ( JOIN vs varsa söyleyin ) diğer yandan WHERE takip eden kondisyon tek mi yoksa AND, OR, CASE ile uzayan şekilde çok sayıda parametre olabiliyor mu ?

Bu neden önemli üreteceğiniz PROCEDURE tanımı aşağıdaki gibi olacaktır.

procedure ParseParams( const aSQLtext: String; var aFormat: String; var aFROM: String; aWHEREs: TStrings );

yazacağımız sorgu herhangi bir şekilde olabilir. yani bir günlük kasa sorgusuda olabilir, çok yönlü depo stok sorgusuda olabilir.

SELECT        ST.STOKKODU, ST.MALINCINSI, SUM(HR.CIKAN) AS SATILAN, [FIRMANO](String)]TBLSTOKLAR_1.STOKKODU AS STOKKOD, [FIRMANO](String)]TBLSTOKLAR_1.MALINCINSI AS STOKADI
FROM            [FIRMANO](String)]TBLSTOKLAR AS ST INNER JOIN
                         [FIRMANO](String)]TBLSTOKLAR AS [FIRMANO](String)]TBLSTOKLAR_1 ON ST.SERINO = [FIRMANO](String)]TBLSTOKLAR_1.IND RIGHT OUTER JOIN
                         [FIRMANO](String)][DONEMNO(String)]TBLSTOKHAREKETLERI AS HR ON ST.IND = HR.STOKNO LEFT OUTER JOIN
                         [FIRMANO](String)]TBLDEPOLAR AS DP ON DP.IND = HR.DEPO
WHERE        (HR.IZAHAT IN (21, 22, 25, 88, 100, 101)) AND (HR.TARIH >= [ILK_TARIH(Date)) AND (HR.TARIH <= [Son_Tarih(Date)]) AND (DP.DEPOKODU = [DEPO_KODU(String)]) AND (HR.CIKAN <> 0)
GROUP BY ST.STOKKODU, ST.MALINCINSI, [FIRMANO](String)]TBLSTOKLAR_1.STOKKODU, [FIRMANO](String)]TBLSTOKLAR_1.MALINCINSI
ORDER BY SATILAN DESC

yukarıdaki sorguyu yazdığımızı düşünürsek
[] parantez değişkenlerimiz olacak ve bu text'i tarayıp köşeli parantez içindeki bilgilere göre parametre girişi yaptıracak bize.
Cevapla
#10
Bunlar sadece Find/Replace için kullanılacaksa sadece köşeli parantez içeriği bir listeye almak kafi midir ? 
Yani listeden bunlara baktığınızda hangisinin TABLE hangisinin FIELD olduğunu anlayabilirsiniz değil mi ?

Bu arada son verdiğiniz SQL cümlesinde çok sayıda parantez hatası var. Yeniden kontrol etmek isteyebilirsiniz.

Girişleri projenizde bir kod editörü vb. bir yapı ile girilmesini sağlayamazsanız parse fonksiyonları çalışmaz, kullanıcılarınızdan olumsuz geri dönüşlere neden olur. Parse fonksiyonları robotik çalışırlar ve öngörüler kadar başarılıdırlar. Siz robotik bir giriş tasarlayamazsanız insan hataları sonuç almanızı engelleyecektir.

Alıntı:[FIRMANO](String)]
[ILK_TARIH(Date)) 
tekrarlayan şekilde
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  DBGRID yeni sütun ekle veri gir diğer sütundaki veriyi değiştir stevenskat 8 751 08-09-2023, Saat: 22:47
Son Yorum: m_ekici
  text bölüp edit1, edit2, edit3 .... atma erdogan 6 938 16-02-2023, Saat: 11:52
Son Yorum: erdogan
  Veritabanı - Bul Değiştir Frrst 3 820 17-01-2023, Saat: 01:27
Son Yorum: Abdullah ILGAZ
  PDF datasını text şeklinde okuma mrcdmr 2 817 15-09-2021, Saat: 16:04
Son Yorum: mrcdmr
  Delphi Speech to Text Halil Han BADEM 2 1.266 23-04-2021, Saat: 21:01
Son Yorum: Halil Han BADEM



Konuyu Okuyanlar: 1 Ziyaretçi