MSSQL aralarında bağlandı olmayan 3 tablonun istediğim kolonlarını Combobox da gösterme

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
izmirlikemal
Üye
Mesajlar: 155
Kayıt: 10 Oca 2014 01:08
Konum: izmir/Buca

MSSQL aralarında bağlandı olmayan 3 tablonun istediğim kolonlarını Combobox da gösterme

Mesaj gönderen izmirlikemal »

Merhaba Dostlar!..
Üzerinde çalışmak da olduğum projemde aşağıda izahatını verdiğim bir kod grubuna ihtiyaç duydum. Ben kendim delphiturkiye.com sitesinin(Buradayız zaten) forum sayfalarından öğrendiğim kadarıyla 2 ilişkili tablodan alınan verileri dbgrid de gösterebiliyorum.
Konu:
-------
Elimde MSSQL Management Studio da kayıtlı bulunan 3 tane table var, Ancak bu table'lerin ne İD leri neden isimleri veya başka kolonları birbiriyle bağlantılı
değil, Ben Bu 3 table den bir veya iki kolon alarak Combobox'a aktarmak, daha sonra da Combobox'dan seçim yaparak projemin başka bir yerinde bu veriyi kullanmak istiyorum.
Sorum:
--------
Yukarıda Konu başlığında açıkladığım problemi çözme şansım varmı?
Eğer varsa sizlerden yardımcı olmanızı bekliyorum(SQL bilgim komut adlarını bilmek çok fazla değil.).
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: MSSQL aralarında bağlandı olmayan 3 tablonun istediğim kolonlarını Combobox da gösterme

Mesaj gönderen mkysoft »

UNION ile tablodaki veriyi birleştirebilirsiniz, kolon isimleri farklı olabilir.
https://www.w3schools.com/sql/sql_union.asp
izmirlikemal
Üye
Mesajlar: 155
Kayıt: 10 Oca 2014 01:08
Konum: izmir/Buca

Re: MSSQL aralarında bağlandı olmayan 3 tablonun istediğim kolonlarını Combobox da gösterme

Mesaj gönderen izmirlikemal »

Ben Uzun uğraşlardan sonra çözümü buldum. Başka arkadaşların işine yarayabilir düşüncesiyle paylaşıyorum.

unit Iki_Veya_Daha_Fazla_Farkli_Tablodan_Ikiser_Sutunu_Comboboxda_Listelemek;

interface

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

type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
ComboBox1: TComboBox;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
adoQuery,ADOQUERY2,AdoQuery3: TADOQuery;
begin
/////// 1. Tablo ////////////
ADOQuery := TADOQuery.Create(nil);
adoquery.Close;
try
ADOQuery.Connection:=ADOConnection1;
ADOQuery.SQL.Text:='SELECT DISTINCT KisaIsimler,Aciklama,DuvarKalinligi FROM DuvarIsiIletimKatsayisi_Hzr';

ADOQuery.open;
combobox1.Clear;
while not adoquery.Eof do
begin
combobox1.Items.Add(adoQuery.FieldByName('KisaIsimler').AsString+
' '+adoQuery.FieldByName('Aciklama').AsString+' '+
adoQuery.FieldByName('DuvarKalinligi').AsString);

adoquery.Next;
end;
finally
ADOQuery.Free();
end;
////2. Tablo /////////

ADOQuery2 := TADOQuery.Create(nil);
adoquery2.Close;
try
ADOQuery2.Connection:=ADOConnection1;
ADOQuery2.SQL.Text:='SELECT DISTINCT KisaIsimler,Aciklama FROM CamIsiIletimKatsayisi_Enf';
ADOQuery2.open;

while not adoquery2.Eof do
begin
combobox1.Items.Add(adoQuery2.FieldByName('KisaIsimler').AsString+' '+adoQuery2.FieldByName('Aciklama').AsString);
adoquery2.Next;
end;
finally
ADOQuery2.Free();
///// 3. Tablo ///////
ADOQuery3 := TADOQuery.Create(nil);
ADOQuery3.Close;
try
ADOQuery3.Connection:=ADOConnection1;
ADOQuery3.SQL.Text:='SELECT DISTINCT KisaIsimler,DosemeVeyaTavanCinsi FROM DosemeTavanIsiIletimKatsayisi_Hzr';
ADOQuery3.open;

while not ADOQuery3.Eof do
begin
combobox1.Items.Add( ADOQuery3.FieldByName('KisaIsimler').AsString+' '+adoQuery3.FieldByName('DosemeVeyaTavanCinsi').AsString);
ADOQuery3.Next;
end;
finally
ADOQuery3.Free();
end;
end;end;
end.

Forma 1 adet Combobox ile 1 adet ADOConnection ekliyoruz. Siz veritabanızdaki tabloya uyarlarsınız.
kerpeten
Üye
Mesajlar: 62
Kayıt: 26 May 2016 01:31

Re: MSSQL aralarında bağlandı olmayan 3 tablonun istediğim kolonlarını Combobox da gösterme

Mesaj gönderen kerpeten »

Bu 3 query yerine yukarıda mkysoft'un bahsettiği gibi Union kullanarak tek bir sorgu yapabilirsiniz
SELECT DISTINCT KisaIsimler as KisaIsimler, Aciklama, DuvarKalinligi as Kalinlik FROM DuvarIsiIletimKatsayisi_Hzr
union
SELECT DISTINCT KisaIsimler as KisaIsimler, Aciklama, '' as Kalinlik FROM CamIsiIletimKatsayisi_Enf
union
SELECT DISTINCT KisaIsimler as KisaIsimler, DosemeVeyaTavanCinsi as Aciklama, '' as Kalinlik FROM DosemeTavanIsiIletimKatsayisi_Hzr
izmirlikemal
Üye
Mesajlar: 155
Kayıt: 10 Oca 2014 01:08
Konum: izmir/Buca

Re: MSSQL aralarında bağlandı olmayan 3 tablonun istediğim kolonlarını Combobox da gösterme

Mesaj gönderen izmirlikemal »

Teşekkürler.
Cevapla