Arkadaşlar Merhaba , Ben bir yerde takıldım bana yardımcı olur musunuz ?
DATA değişkeninde ilgili şirketi buluyorum ve bu şirket altında 'TBLPARAMETRE' tablosu varsa programa girecek yoksa tabloyu create edecek bunu nasıl yapabilirim?
Şirket Databases 'SOFT2019'
Şirket altındaki Tablo 'TBLPARAMETRE'
Bu şekilde oluşturuyor fakat ben 'USE [SOFT2019]' şirket adını yazarsam
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;
/////////////////////////////////////
SIRKET.Close;
SIRKET.SQL.Clear;
SIRKET.SQL.Add('USE [SOFT2019]');
SIRKET.SQL.Add('SET ANSI_NULLS ON');
SIRKET.SQL.Add('SET QUOTED_IDENTIFIER ON');
SIRKET.SQL.Add('SET ANSI_PADDING ON');
SIRKET.SQL.Add('CREATE TABLE [dbo].[TBLPARAMETRE](');
SIRKET.SQL.Add('[PARAM_1] [varchar](15) NULL,');
(10-02-2019, Saat: 09:14)OZCANK Adlı Kullanıcıdan Alıntı: [ -> ]Arkadaşlar Merhaba , Ben bir yerde takıldım bana yardımcı olur musunuz ?
DATA değişkeninde ilgili şirketi buluyorum ve bu şirket altında 'TBLPARAMETRE' tablosu varsa programa girecek yoksa tabloyu create edecek bunu nasıl yapabilirim?
Şirket Databases 'SOFT2019'
Şirket altındaki Tablo 'TBLPARAMETRE'
Bu şekilde oluşturuyor fakat ben 'USE [SOFT2019]' şirket adını yazarsam
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;
/////////////////////////////////////
SIRKET.Close;
SIRKET.SQL.Clear;
SIRKET.SQL.Add('USE [SOFT2019]');
SIRKET.SQL.Add('SET ANSI_NULLS ON');
SIRKET.SQL.Add('SET QUOTED_IDENTIFIER ON');
SIRKET.SQL.Add('SET ANSI_PADDING ON');
SIRKET.SQL.Add('CREATE TABLE [dbo].[TBLPARAMETRE](');
SIRKET.SQL.Add('[PARAM_1] [varchar](15) NULL,');
select * from master.dbo.sysdatabases
// sorgu ile sql databases baglan sql de bulunan database isimlerinde senin aradığın var mı bak
while not data_form.giris2_sorgu.Eof do
begin
// sql de çalışılacak firma varmı ona bakıyor
if (data_form.giris2_sorgu.FieldByName('NAME').AsString = Database_adi ) then
begin
x_tamyol := data_form.giris2_sorgu.FieldByName('FILENAME').AsString;
// sql den databases yolu ve adını alıyor
data_form.giris1_sorgu.Close; // sysprm kapat
data_form.giris2_sorgu.Close; // sysdatabases kapat
giris_frm.Hide;
Application.CreateForm(Tanamenufrm, anamenufrm);
try
anamenufrm.ShowModal;
finally
giris_frm.Show;
halt;
giris_frm.close;
end;
end else data_form.giris2_sorgu.Next;
end; // do while end
mesaj := Database_adi + ' isimli veritabanı bulunamadı.';
Her veritabanında INFORMATION_SCHEMA.TABLES adında bir 'system view' var.
Kendi veritabanında iken
"select * from INFORMATION_SCHEMA.TABLES" çağırabilirsin.
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'tablo_adı')
BEGIN
DROP TABLE tablo_adı
END ELSE
BEGIN
CREATE TABLE tablo_adı
...
END
(10-02-2019, Saat: 09:28)cinarbil Adlı Kullanıcıdan Alıntı: [ -> ] (10-02-2019, Saat: 09:14)OZCANK Adlı Kullanıcıdan Alıntı: [ -> ]Arkadaşlar Merhaba , Ben bir yerde takıldım bana yardımcı olur musunuz ?
DATA değişkeninde ilgili şirketi buluyorum ve bu şirket altında 'TBLPARAMETRE' tablosu varsa programa girecek yoksa tabloyu create edecek bunu nasıl yapabilirim?
Şirket Databases 'SOFT2019'
Şirket altındaki Tablo 'TBLPARAMETRE'
Bu şekilde oluşturuyor fakat ben 'USE [SOFT2019]' şirket adını yazarsam
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;
/////////////////////////////////////
SIRKET.Close;
SIRKET.SQL.Clear;
SIRKET.SQL.Add('USE [SOFT2019]');
SIRKET.SQL.Add('SET ANSI_NULLS ON');
SIRKET.SQL.Add('SET QUOTED_IDENTIFIER ON');
SIRKET.SQL.Add('SET ANSI_PADDING ON');
SIRKET.SQL.Add('CREATE TABLE [dbo].[TBLPARAMETRE](');
SIRKET.SQL.Add('[PARAM_1] [varchar](15) NULL,');
select * from master.dbo.sysdatabases
// sorgu ile sql databases baglan sql de bulunan database isimlerinde senin aradığın var mı bak
while not data_form.giris2_sorgu.Eof do
begin
// sql de çalışılacak firma varmı ona bakıyor
if (data_form.giris2_sorgu.FieldByName('NAME').AsString = Database_adi ) then
begin
x_tamyol := data_form.giris2_sorgu.FieldByName('FILENAME').AsString;
// sql den databases yolu ve adını alıyor
data_form.giris1_sorgu.Close; // sysprm kapat
data_form.giris2_sorgu.Close; // sysdatabases kapat
giris_frm.Hide;
Application.CreateForm(Tanamenufrm, anamenufrm);
try
anamenufrm.ShowModal;
finally
giris_frm.Show;
halt;
giris_frm.close;
end;
end else data_form.giris2_sorgu.Next;
end; // do while end
mesaj := Database_adi + ' isimli veritabanı bulunamadı.';
Çok Teşekkür ederim yardımın için. Bende şu şekilde Kodunu değiştirdim ;
procedure TForm1.BitBtn3Click(Sender: TObject);
Var
yol,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;
/////////////////////////////////////
SIRKET.SQL.Add('select * from master.dbo.sysdatabases');
while not SIRKET.Eof do
begin
// sql de çalışılacak firma varmı ona bakıyor
if (SIRKET.FieldByName('NAME').AsString = DATA ) then
begin
yol := SIRKET.FieldByName('FILENAME').AsString;
// sql den databases yolu ve adını alıyor
SIRKET.Close; // sysprm kapat
// giris_frm.Hide;
// Application.CreateForm(Tanamenufrm, anamenufrm);
try
ShowMessage('1');
//anamenufrm.ShowModal;
finally
//giris_frm.Show;
//halt;
//giris_frm.close;
ShowMessage('2');
end;
end else SIRKET.Next;
end; // do while end
ShowMessage(DATA);
ShowMessage(NAME);
ShowMessage('YOK');
// mesaj := DATA + ' isimli veritabanı bulunamadı.';
//////////////////////////////////////
DATA : Şirketi doğru buluyor
NAME : Form1 diye bir şey buluyor . Database eşitleyemedim. Eşitledikten sonra da ilgili Database altın da Tablo bulmalıyım.
(11-02-2019, Saat: 06:22)OZCANK Adlı Kullanıcıdan Alıntı: [ -> ] (10-02-2019, Saat: 09:28)cinarbil Adlı Kullanıcıdan Alıntı: [ -> ]
select * from master.dbo.sysdatabases
// sorgu ile sql databases baglan sql de bulunan database isimlerinde senin aradığın var mı bak
while not data_form.giris2_sorgu.Eof do
begin
// sql de çalışılacak firma varmı ona bakıyor
if (data_form.giris2_sorgu.FieldByName('NAME').AsString = Database_adi ) then
begin
x_tamyol := data_form.giris2_sorgu.FieldByName('FILENAME').AsString;
// sql den databases yolu ve adını alıyor
data_form.giris1_sorgu.Close; // sysprm kapat
data_form.giris2_sorgu.Close; // sysdatabases kapat
giris_frm.Hide;
Application.CreateForm(Tanamenufrm, anamenufrm);
try
anamenufrm.ShowModal;
finally
giris_frm.Show;
halt;
giris_frm.close;
end;
end else data_form.giris2_sorgu.Next;
end; // do while end
mesaj := Database_adi + ' isimli veritabanı bulunamadı.';
Çok Teşekkür ederim yardımın için. Bende şu şekilde Kodunu değiştirdim ;
procedure TForm1.BitBtn3Click(Sender: TObject);
Var
yol,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;
/////////////////////////////////////
SIRKET.SQL.Add('select * from master.dbo.sysdatabases');
while not SIRKET.Eof do
begin
// sql de çalışılacak firma varmı ona bakıyor
if (SIRKET.FieldByName('NAME').AsString = DATA ) then
begin
yol := SIRKET.FieldByName('FILENAME').AsString;
// sql den databases yolu ve adını alıyor
SIRKET.Close; // sysprm kapat
// giris_frm.Hide;
// Application.CreateForm(Tanamenufrm, anamenufrm);
try
ShowMessage('1');
//anamenufrm.ShowModal;
finally
//giris_frm.Show;
//halt;
//giris_frm.close;
ShowMessage('2');
end;
end else SIRKET.Next;
end; // do while end
ShowMessage(DATA);
ShowMessage(NAME);
ShowMessage('YOK');
// mesaj := DATA + ' isimli veritabanı bulunamadı.';
//////////////////////////////////////
DATA : Şirketi doğru buluyor
NAME : Form1 diye bir şey buluyor . Database eşitleyemedim. Eşitledikten sonra da ilgili Database altın da Tablo bulmalıyım.
Bu şekilde de denedim yine olmadı DATABASE bulamıyorum ;
DATA : ile Şirketi DATABASE buluyorum sonra NAME ile eşitliyorum.
ama tepkisiz. Yardımcı olurmusunuz ?
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;
(12-02-2019, Saat: 06:17)Bu şekilde de denedim yine olmadı DATABASE bulamıyorum ; Adlı Kullanıcıdan Alıntı: [ -> ]DATA : ile Şirketi DATABASE buluyorum sonra NAME ile eşitliyorum.
ama tepkisiz. Yardımcı olurmusunuz ?
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;
qry1.SQL.Add('select * from master.dbo.sysdatabases WHERE name = ''ARANANDATA''');
qry1.Open;
qry1.ExecSQL;
while not qry1.Eof do
begin
if (qry1.FieldByName('NAME').AsString = 'ARANANDATA') then
begin
ShowMessage('Buldu');
exit;
end
else
begin
ShowMessage('Yok');
exit;
end;
end;
Bu Şekilde ararsan Sonuca varırsın.
Kolay Gelsin.
(12-02-2019, Saat: 06:17)OZCANK Adlı Kullanıcıdan Alıntı: [ -> ] (11-02-2019, Saat: 06:22)OZCANK Adlı Kullanıcıdan Alıntı: [ -> ]Çok Teşekkür ederim yardımın için. Bende şu şekilde Kodunu değiştirdim ;
procedure TForm1.BitBtn3Click(Sender: TObject);
Var
yol,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;
/////////////////////////////////////
SIRKET.SQL.Add('select * from master.dbo.sysdatabases');
while not SIRKET.Eof do
begin
// sql de çalışılacak firma varmı ona bakıyor
if (SIRKET.FieldByName('NAME').AsString = DATA ) then
begin
yol := SIRKET.FieldByName('FILENAME').AsString;
// sql den databases yolu ve adını alıyor
SIRKET.Close; // sysprm kapat
// giris_frm.Hide;
// Application.CreateForm(Tanamenufrm, anamenufrm);
try
ShowMessage('1');
//anamenufrm.ShowModal;
finally
//giris_frm.Show;
//halt;
//giris_frm.close;
ShowMessage('2');
end;
end else SIRKET.Next;
end; // do while end
ShowMessage(DATA);
ShowMessage(NAME);
ShowMessage('YOK');
// mesaj := DATA + ' isimli veritabanı bulunamadı.';
//////////////////////////////////////
DATA : Şirketi doğru buluyor
NAME : Form1 diye bir şey buluyor . Database eşitleyemedim. Eşitledikten sonra da ilgili Database altın da Tablo bulmalıyım.
Bu şekilde de denedim yine olmadı DATABASE bulamıyorum ;
DATA : ile Şirketi DATABASE buluyorum sonra NAME ile eşitliyorum.
ama tepkisiz. Yardımcı olurmusunuz ?
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;
while döngüsü içinde KONTROL.NEXT satırı olmadığından sonsuz döngüye girmiş!
KONTROL.NEXT satırını eklerseniz sorununuz çözülecektir.
(12-02-2019, Saat: 07:11)FiRewaLL Adlı Kullanıcıdan Alıntı: [ -> ] (12-02-2019, Saat: 06:17)Bu şekilde de denedim yine olmadı DATABASE bulamıyorum ; Adlı Kullanıcıdan Alıntı: [ -> ]DATA : ile Şirketi DATABASE buluyorum sonra NAME ile eşitliyorum.
ama tepkisiz. Yardımcı olurmusunuz ?
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;
qry1.SQL.Add('select * from master.dbo.sysdatabases WHERE name = ''ARANANDATA''');
qry1.Open;
qry1.ExecSQL;
while not qry1.Eof do
begin
if (qry1.FieldByName('NAME').AsString = 'ARANANDATA') then
begin
ShowMessage('Buldu');
exit;
end
else
begin
ShowMessage('Yok');
exit;
end;
end;
Bu Şekilde ararsan Sonuca varırsın.
Kolay Gelsin.
Merhaba ; Dediğiniz gibi Kodu düzenledim ama yine sonuç alamadım değiştirdiğim hali ;
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;
Amacım İlgili şirketi bulmak ve altındaki tabloları kontrol etmek var ise programa girecek yok ise hangisi yoksa onu Create edecek.
Bu şekilde SQL de sorgu çektiğimde Tablolar geliyor.
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'
Sizin program yazmadan önce temel programlama ve Delphi öğrenmeniz gerekiyor. Bu nedenle konuyu kilitliyorum.