Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Otomatik Veritabanı Oluşturma
#1
Merhaba arkadaşlar delphi 7 de bir program yazdım firebird veritabanı kullanıyorum.Daha önce görmüş olduğum bir programdan esinlenerek kullanıcı giriş ekranına girişden ziyade birde veritabanı oluşturma ve bağlanma bölümü koydum ama sadece koymakla yetinebildim çümkü çok aramama rağmen bana yardımcı olacak kodu bulamadım.Kısacası sizden istediğim giriş ekranının veri tabanı bölümüne geçtiğimde edit nesnesine girilen benim istediğim bir isimle butona bastığımda veritabanı otomatik oluşturulsun ve bağlantısı yapılsın. bunu nasıl yapabilirim buna benzer  örnek kodlarınız ya da projeniz varsa benimle paylaşırsanız çok mutlu olurum. Yardımlarınız için şimdiden teşekkür ediyorum.
Cevapla
#2
(22-03-2020, Saat: 14:33)bnyamin86 Adlı Kullanıcıdan Alıntı: Merhaba arkadaşlar delphi 7 de bir program yazdım firebird veritabanı kullanıyorum.Daha önce görmüş olduğum bir programdan esinlenerek kullanıcı giriş ekranına girişden ziyade birde veritabanı oluşturma ve bağlanma bölümü koydum ama sadece koymakla yetinebildim çümkü çok aramama rağmen bana yardımcı olacak kodu bulamadım.Kısacası sizden istediğim giriş ekranının veri tabanı bölümüne geçtiğimde edit nesnesine girilen benim istediğim bir isimle butona bastığımda veritabanı otomatik oluşturulsun ve bağlantısı yapılsın. bunu nasıl yapabilirim buna benzer  örnek kodlarınız ya da projeniz varsa benimle paylaşırsanız çok mutlu olurum. Yardımlarınız için şimdiden teşekkür ediyorum.

Merhaba

Eğer db yoksa Firedac componentleri create edemiyor. Sizin db taşımanız gerekebilir.
Firebird SQLite gibi db create etmedi benim denemmde de.

5F7YTh.png


eğer dosyayı da taşırsanız işaretli ayarları yapıp bağlanabilirsiniz.
bK4c7j.png
Genelde ingilizce klavye ile ileti gönderiyorum.
Cevapla
#3
Dos ekranı açıp aşağıdaki linkdeki SQL kodları ile yapabilirsiniz diye düşünüyorm.

https://firebirdsql.org/manual/qsg10-creating.html
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#4
burada bir örnek paylaşmıştım https://www.delphican.com/showthread.php...B#pid26236

“Do. Or do not. There is no try.”
Cevapla
#5
(23-03-2020, Saat: 09:02)masteryoda Adlı Kullanıcıdan Alıntı: burada bir örnek paylaşmıştım https://www.delphican.com/showthread.php...B#pid26236

Guzel calisma olmus faydalanalim.
Genelde ingilizce klavye ile ileti gönderiyorum.
Cevapla
#6
Arkadaşlar hepinize yardımlarınız için çok teşekkür ediyorum ben tam olarak yapmak istediğim kodları buldum fakat çalıştırdığımda şöyle bir hata alıyorum.'Unavailable Database' nerde hata yapmış olabilirim. Acemi düzeyde olduğumdan çözemedim bir türlü.

procedure TOlustur.SpeedButton1Click(Sender: TObject);
var
Yol:String;
Begin
Yol:=GetCurrentDir+'\'+Edit1.Text+'.GDB';  //Veritabanı adı hazırlanıyor

//Database ayarlanıyor
       IBDatabase1.DataBaseName:=Yol;;
       IBDatabase1.SQLDialect:=3;
       IBDatabase1.LoginPrompt:=False;

//Database Oluşturuluyor
       IBDatabase1.CreateDatabase;

//Database oluşturuldu artık table,view,generator ve stored procedure oluşturmaya geçebiliriz.
//Parametreler yenileniyor Normal bağlantı parametrelerine dönülüyor.
       IBDatabase1.Connected:=False;
       IBDatabase1.Params.Values['User_Name']:='SYSDBA';
       IBDatabase1.Params.Values['PassWord']:='masterkey';
       IBDatabase1.Params.Values['lc_ctype']:='WIN1254';
//Database Connect ediliyor
       IBDatabase1.Connected:=True;
//Transaction Active ediliyor..
       IbTransaction1.Active:=True; 

//Table,index, view,generator ve stored procedurelerden 1 er tane örnek vereceğim
//Table oluşturuluyor

Try
IBSQL1.Close;

IBSQL1.SQL.Clear;
IBSQL1.SQL.Add('CREATE TABLE "VASIF" ("KNO" DOUBLE PRECISION NOT NULL,');
IBSQL1.SQL.Add('"VASIFLAR" VARCHAR(50) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
IBSQL1.SQL.Add('"YEVMIYE" DOUBLE PRECISION,');
IBSQL1.SQL.Add('"TRH" TIMESTAMP,');
IBSQL1.SQL.Add('PRIMARY KEY ("KNO"))');
IBSQL1.Prepare;
IBSQL1.ExecQuery;   //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
IBSQL1.Close;
end;

//İndex oluşturuluyor
Try
IBSQL1.Close;
IBSQL1.SQL.Clear;
IBSQL1.SQL.Add('CREATE INDEX VASIFLARX ON BELGE ("VASIFLAR")');
IBSQL1.Prepare;
IBSQL1.ExecQuery;   //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
IBSQL1.Close;
end;

//View oluşturuluyor
Try
IBSQL1.Close;
IBSQL1.SQL.Clear;
IBSQL1.SQL.Add('CREATE VIEW "TOPLA" ("KNO","YIL","AY","DN","ODESASGUN","ODESASMAT",');
IBSQL1.SQL.Add('"GELIRVRGMAT","GELIRVERGISI","PIRIM") AS ');
IBSQL1.SQL.Add('SELECT KIMLIK.KNO,BORDRO.YIL,BORDRO.AY,BORDRO.DN,BORDRO.ODESASGUN,');
IBSQL1.SQL.Add('BORDRO.ODESASMAT,BORDRO.GELIRVRGMAT,BORDRO.GELIRVERGISI,');
IBSQL1.SQL.Add('(BORDRO.SSKISVEREN+BORDRO.ISSIZKURUM+BORDRO.SSKISCI+BORDRO.ISSIZISCI) FROM BORDRO,KIMLIK');
IBSQL1.SQL.Add('WHERE KIMLIK.KNO=BORDRO.DETAYNO');
IBSQL1.Prepare;
IBSQL1.ExecQuery;  //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
IBSQL1.Close;
end;

//Generator oluşturuluyor
Try
IBSQL1.Close;
IBSQL1.SQL.Clear;
IBSQL1.SQL.Add('CREATE GENERATOR "VASIF_GEN"');
IBSQL1.Prepare;
IBSQL1.ExecQuery;  //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
IBSQL1.Close;
end;


//Stored Procedure oluşturuluyor autoinc field için
Try
IBSQL1.Close;
IBSQL1.SQL.Clear;
IBSQL1.SQL.Add('CREATE PROCEDURE "PROC_VASIF"');
IBSQL1.SQL.Add('RETURNS');
IBSQL1.SQL.Add('(');
IBSQL1.SQL.Add('  "NUM" INTEGER');
IBSQL1.SQL.Add(')');
IBSQL1.SQL.Add('AS');
IBSQL1.SQL.Add('BEGIN');
IBSQL1.SQL.Add('NUM = GEN_ID(VASIF_GEN,1);');
IBSQL1.SQL.Add('END');
IBSQL1.Prepare;
IBSQL1.ExecQuery;  //IBQuery kullanıyorsanız ExecQuery yerine ExecSQL yazacaksınız..
Finally
IBSQL1.Close;
end;

IBDatabase1.Connected:=False;
Cevapla
#7
Birşey söylemeyi unuttum bu kodlar interbase veritabanı için biliyorum önce bunu halledeyim daha sonra firebird için uyarlayacağım.
Cevapla
#8
Hocam Fiziksel olarak DB'yi oluşturmadan DB'ye bağlanmaya çalışıyorsunuz. ISQL ile DB Create edip deneyin.
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#9
(25-03-2020, Saat: 00:29)mcuyan Adlı Kullanıcıdan Alıntı: Hocam Fiziksel olarak DB'yi oluşturmadan DB'ye bağlanmaya çalışıyorsunuz. ISQL ile DB Create edip deneyin.

bir sonuç gelişme oldumu bu problemde bende aynı kodlarla deneme yapıyorum ama hata vermediği halde tablo oluşmuyor.

procedure TfrmMain.Button1Click(Sender: TObject);
var
yol:string;
sifre:string;
begin
try
yol:=ExtractFilePath(Application.Exename);

sifre:='masterkey';

IBConnection1.Connected:=false;
IBConnection1.HostName:='localhost';
IBConnection1.DatabaseName:=yol+'system\db\VT_TURNUVA.FDB';
IBConnection1.Params.Values['User_Name']:='SYSDBA';
IBConnection1.Password:=sifre;
IBConnection1.Params.Values['lc_ctype']:='WIN1254';
IBConnection1.Connected:=True;
SQLTransaction1.Active:=True;
SQLQuery1.Active:=True;


SQLQuery1.Close;

SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('CREATE TABLE "VASIF" ("KNO" DOUBLE PRECISION NOT NULL,');
SQLQuery1.SQL.Add('"VASIFLAR" VARCHAR(50) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
SQLQuery1.SQL.Add('"YEVMIYE" DOUBLE PRECISION,');
SQLQuery1.SQL.Add('"TRH" TIMESTAMP,');
SQLQuery1.SQL.Add('PRIMARY KEY ("KNO"))');
SQLQuery1.Prepare;
SQLQuery1.ExecSQL;
Finally
SQLQuery1.Close;
end;
ShowMessage('OK');
end; 
Ekmeğimi yazılımdan kazanmıyorum kendi halimde bir şeyler yapıyorum. 49 yaşında emekliyim.
İğne sokmadan yardımcı olacaksan başımın üstünde yerin var.

Cevapla
#10
Hocam fiziksel olarak FDB dosyanız oluşmuş mu?
Ben orada bir FDB dosyasının oluşturan kod görmüyorum?
// Bilgi paylaştıkça çoğalır.. 

Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Delphi İle Instagram'da Otomatik Paylaşım Jakarta2 5 480 19-05-2021, Saat: 13:44
Son Yorum: Jakarta2
Photo Delphi vcl projesine login form oluşturma tuna 15 1.443 15-05-2021, Saat: 20:41
Son Yorum: mrmarman
Question json yapma oluşturma, nasıl olur noname101 8 770 05-05-2021, Saat: 20:51
Son Yorum: noname101
  Runtime'da Dinamik Form Oluşturma ve Formlar Arası Haberleşme Syntax 2 377 22-04-2021, Saat: 22:20
Son Yorum: Syntax
  Formun boyutu büyüdüğünde, üzerindeki bileşenler de otomatik büyütülebilir mi? ferhatganem 25 2.554 24-03-2021, Saat: 13:50
Son Yorum: mrmarman



Konuyu Okuyanlar: 1 Ziyaretçi