SQL de DATABASE ve TABLO bulma ''

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ozcank
Üye
Mesajlar: 859
Kayıt: 28 Nis 2005 04:29

SQL de DATABASE ve TABLO bulma ''

Mesaj gönderen ozcank » 12 Şub 2019 05:16

Arkadaşlar Merhaba ; Bir konuda yardımınıza ihtiyacım var.

İlk giriş de programa Database seçiliyor ve ben bu Database İlişiklendirip Tablo kontrolü yapmak istiyorum özetle İlgili şirket Database altında Tablo var mı? yok mu? kontrol etmek istiyorum.

Bu şekilde de denedim yine olmadı DATABASE bulamıyorum ;
DATA : ile Şirketi DATABASE buluyorum sonra NAME ile eşitliyorum.
ama tepkisiz. Yardımcı olur musunuz ?
Bulamadı ise Tablo yu Create edecem.

Kod: Tümünü seç

procedure TForm1.BitBtn3Click(Sender: TObject);
Var
DATA:String;
begin
//////////////şirket datasını bulma
DATA:=DBLookupComboBox1.Text;
ADOConnection1.Connected:=False;
memo1.Lines.LoadFromFile('c:\Pro\dataconnection.txt');
ADOConnection1.DefaultDatabase:=DATA;
ADOConnection1.Connected:=True;
/////////////////////////////////////
KONTROL.Close;
KONTROL.SQL.Clear;
KONTROL.SQL.Text:=' select * from master.dbo.sysdatabases';
while not KONTROL.Eof do
begin
// sql de çalışılacak database var mı ona bakıyor
if (KONTROL.FieldByName('NAME').AsString = DATA ) then
begin
ShowMessage('Buldum');
End
Else
Begin
ShowMessage('Bulamadım');
end;
End;

yusuf simsek
Üye
Mesajlar: 309
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Re: SQL de DATABASE ve TABLO bulma ''

Mesaj gönderen yusuf simsek » 12 Şub 2019 08:03

while döngüsü içinde KONTROL.NEXT olmadığından sonsuz döngüye girmiş!

KONTROL.NEXT satırını eklerseniz sorununuz çözülecektir.
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com

ozcank
Üye
Mesajlar: 859
Kayıt: 28 Nis 2005 04:29

Re: SQL de DATABASE ve TABLO bulma ''

Mesaj gönderen ozcank » 13 Şub 2019 02:45

Merhaba ; Bu şekilde düzenledim yine sonuç alamadım nerde yanlış yapıyorum ?


Amacım İlgili şirketi bulmak ve altındaki tabloları kontrol etmek var ise programa girecek yok ise hangisi yoksa onu Create edecek.

Kod: Tümünü seç

procedure TForm1.BitBtn3Click(Sender: TObject);
Var
DATA:String;
begin
//////////////şirket datasını bulma
    DATA:=DBLookupComboBox1.Text;
    ADOConnection1.Connected:=False;
    memo1.Lines.LoadFromFile('c:\Pro\dataconnection.txt');
    ADOConnection1.DefaultDatabase:=DATA;
    ADOConnection1.Connected:=True;
 
/////////////////////////////////////
 KONTROL.SQL.Add('SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_CATALOG=''DATA'''); //// Şirket data bulma
 KONTROL.Open;
 KONTROL.ExecSQL;
 
 while not KONTROL.Eof do
 begin
   if (KONTROL.FieldByName('TABLE_NAME').AsString = 'TBLANATABLO') OR
      (KONTROL.FieldByName('TABLE_NAME').AsString = 'TBLIPTFAT') OR
      (KONTROL.FieldByName('TABLE_NAME').AsString = 'TBLIPTSTH') OR
      (KONTROL.FieldByName('TABLE_NAME').AsString = 'TBLEFAT') OR
      (KONTROL.FieldByName('TABLE_NAME').AsString = 'TBLPARAM') Then
   begin
     ShowMessage('Tablo Oluşturma');
     exit;
   end
   else
   begin
     ShowMessage('Tablo Oluştur');
     exit;
  End;
KONTROL.Next;
End;
End;
Bu şekilde SQL de sorgu çektiğimde Tablolar geliyor.

Kod: Tümünü seç

SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_CATALOG='DATA2019' AND TABLE_NAME='TBLANATABLO' or TABLE_NAME='TBLIPTFAT' or TABLE_NAME='TBLIPTSTH' or TABLE_NAME='TBLEFAT' or TABLE_NAME='TBLPARAM'

yusuf simsek
Üye
Mesajlar: 309
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Re: SQL de DATABASE ve TABLO bulma ''

Mesaj gönderen yusuf simsek » 13 Şub 2019 06:31

Hayırlı sabahlar

Bilgi olarak EXECSQL SQL cümlesi çalıştırmak için kullanılır, sonuç döndürmez...

INSERT INTO...
UPDATE...
DELETE...

ozcank yazdı:
13 Şub 2019 02:45


Bu şekilde SQL de sorgu çektiğimde Tablolar geliyor.

Kod: Tümünü seç

SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_CATALOG='DATA2019' AND TABLE_NAME='TBLANATABLO' or TABLE_NAME='TBLIPTFAT' or TABLE_NAME='TBLIPTSTH' or TABLE_NAME='TBLEFAT' or TABLE_NAME='TBLPARAM'
Bu şekilde çalışıyorsa query sorgusu bu şekilde düzenleyip RECORDCOUNT kontrol edin, böylece gereksiz yerede döngü kurmamıs olursunuz...
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com

ozcank
Üye
Mesajlar: 859
Kayıt: 28 Nis 2005 04:29

Re: SQL de DATABASE ve TABLO bulma ''

Mesaj gönderen ozcank » 14 Şub 2019 04:43

Hayırlı Sabahlar ; Yok ben SQL de bu cümle ile doğruluğuna bakıyorum. Delphi de kullanmıyorum. Ama çözü me bir türlü ulaşamadım .:(

ozcank
Üye
Mesajlar: 859
Kayıt: 28 Nis 2005 04:29

Re: SQL de DATABASE ve TABLO bulma ''

Mesaj gönderen ozcank » 14 Şub 2019 06:07

Arkadaşlar Bu şekilde Kontrolü sağladım. Kod şöyle ;

Kod: Tümünü seç

KONTROL.SQL.Text := 'SELECT * FROM information_schema.tables WHERE table_name = ''TBLPARAMETRE''';
KONTROL.Open;

if not KONTROL.Eof then
 ShowMessage('TBLPARAMETRE Oluşturma')
else
 ShowMessage('TBLPARAMETRE Oluştur');
End;
Sorum şu , 4 Tablom daha var ve onlarında kontrolünü yapmam gerekiyor bu koda diğer tabloları nasıl eklerim?

TABLO2
TABLO3
TABLO4
TABLO5

yusuf simsek
Üye
Mesajlar: 309
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Re: SQL de DATABASE ve TABLO bulma ''

Mesaj gönderen yusuf simsek » 14 Şub 2019 07:54

Kod: Tümünü seç

procedure Kontrol;
var
  sList := String;
begin
KONTROL.SQL.Text := 'SELECT * FROM information_schema.tables WHERE table_name = ''TBLPARAMETRE'''

								OR table_name = "TABLO1"
								OR table_name = "TABLO2"
								OR table_name = "TABLO3"
								OR table_name = "TABLO4"
 
KONTROL.Open;
KONTROL.FIRST;

sList := '';
WHILE NOT KONTROL.Eof  DO
  BEGIN
	sList := sList +  KONTROL.FieldByName('table_name').ASString + '###';
	KONTROL.NEXT;
  END;

if not POS( 'TABLO1###', sList ) > 0 then  ShowMessage('TABLO1 Oluştur');
if not POS( 'TABLO2###', sList ) > 0 then  ShowMessage('TABLO1 Oluştur');
if not POS( 'TABLO3###', sList ) > 0 then  ShowMessage('TABLO1 Oluştur');
if not POS( 'TABLO4###', sList ) > 0 then  ShowMessage('TABLO1 Oluştur');

End;
tarzında bir kod işine yarayabilir
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com

ozcank
Üye
Mesajlar: 859
Kayıt: 28 Nis 2005 04:29

Re: SQL de DATABASE ve TABLO bulma ''

Mesaj gönderen ozcank » 14 Şub 2019 12:14

Yusuf Şimşek Kardeşim İlgi ve alakan için çok teşekkür ederim. Allah senden Razı olsun ne kadar dua etsem de azdır. Kodlarını henüz deneyemedim ancak akşam bakabilirim daha sakin ve yazmış olduğunuz kodları anlayabilmek öğrenmek için. Sonucu da bur da paylaşırım.

yusuf simsek
Üye
Mesajlar: 309
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Re: SQL de DATABASE ve TABLO bulma ''

Mesaj gönderen yusuf simsek » 14 Şub 2019 12:45

http://www.delphiturkiye.com/forum/ farkı...

Bir buradaki büyüklerimizden böyle gördük...
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com

ozcank
Üye
Mesajlar: 859
Kayıt: 28 Nis 2005 04:29

Re: SQL de DATABASE ve TABLO bulma ''

Mesaj gönderen ozcank » 14 Şub 2019 09:12

Yusuf şimşek kardeşim denedim şöyle bir durum var ; Bu şekil de kullanınca "< 0 " hep oluştura gidiyor. Ama "> 0" bu şekilde kullanınca tepki yok her ne yaptıysam da olmadı "= 0" , "<>0" denedim olumlu olumsuz "not" denedim olmadı.

Kod: Tümünü seç

KONTROL.SQL.Text:='SELECT * FROM information_schema.tables WHERE table_name = ''TBLPARAMETRE'''+
                                                                  'OR table_name = ''TABLO1'''+
								  'OR table_name = ''TABLO2'''+
								  'OR table_name = ''TABLO3'''+
								  'OR table_name = ''TABLO4''';
KONTROL.Open;
KONTROL.First;
sList := '';
WHILE NOT KONTROL.Eof  DO
  BEGIN
	sList := sList +  KONTROL.FieldByName('table_name').ASString + '###';
KONTROL.NEXT;
END;
if not POS( 'TBLPARAMETRE###', sList ) < 0  then
ShowMessage('TBLPARAMETRE Oluştur')
Else if  POS( 'TBLPARAMETRE###', sList ) > 0  then
ShowMessage('TBLPARAMETRE OluşturMA');

yusuf simsek
Üye
Mesajlar: 309
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Re: SQL de DATABASE ve TABLO bulma ''

Mesaj gönderen yusuf simsek » 14 Şub 2019 09:54

Kusura bakmayın eksik ifade ettik.

Pos komutu aradığı değeri bulamazsa -1 döner.

Bulursa da ilk karakteri kaçıncı harf olduğu döner...

### ayırıcı deger olarak ekledik...

POS( 'TBLPARAMETRE###', sList ) slist içinde 0. Satırda bulduğundan >= olarak sorgulayabilirsiniz

ya da ### tablo adının sonuna değil de başına ekleyerek ( '###TBLPARAMETRE' ) sonuç alabilirsiniz diye düşünüyorum...
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com

Cevapla