otomotik oluşan table'lar lazım

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

otomotik oluşan table'lar lazım

Mesaj gönderen nitro »

s.a.
incelediğim muhasebe programlarında yeni bir firma açıldığı zaman program hemen o firmaya ayarlanmış boş tablolar oluşturuyorlar.
ben de küçük bir borç alacak programı hazırlamalıyım ve bu tür bişey bana da lazım.
yani örneğin yeni bir firma açılacak ve tüm veritabanının boş bir kopyası oluşturulacak.
nasıl yapabilirim.
yardımlarınız için şimdiden teşekkürler.
(Delphi7, Firebird kullanıyorum, manager programım ibexpert)
saygılarımla
biLaLtürk
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7602
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

SQL cümleleri ile oluşturabilirsin. Sitede veritabanı bölümünde bir makale ve forumda birçok mesaj var. Anahtar kelime : create

Kolay gelsin.
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

aradım buldum, ama mantığım doğru mu?

Mesaj gönderen nitro »

create olayını inceledim.
ama şöyle bir çelişkiye düştüm:
1- ben ibexpert kullanıyordum. herşeyi böyle kodla yaptıktan sonra o programa gerek kalmıyor di mi?
2- ee databesi böyle kodla oluşturursam veritabanı ne kullanmış oluyorum? firebird mü?
3- hadi tabloları falan böyle oluşturan programı yazdım. müşteri bilgisayarına yükleyince, veritabanının çalışması için ek bişey yüklemiş olmam lazım mı? lazımsa ne yükleyeceğim? firebird mü? interbase mi?
bde mi?
snofru
Üye
Mesajlar: 204
Kayıt: 19 Ağu 2004 02:57
Konum: /local/usr/src
İletişim:

Mesaj gönderen snofru »

S.A.
Merhaba, şimdi Admin'in dediğinin üzerine yazdığın cevaba nazaran birkaç şey söylemek istiyorum müsadenle... Bu tip sistemler Mustafa abininde bahsettiği üzre SQL Scripti ile yapılabilir. Ancak bunun yerine temiz bir boş database'i ( temizlikten kasıt autoinc alanların durumu ve kayıt bulunmaması ) bi köşede barındırarak yeni şirket açmalarda onu ilgili klasöre adını şirket numarasına göre değiştirerek te kullanabilirsin. Bu biraz öbür kulağını tutmak gibi olabilir ama bazen SQL i Delphiye gömmek ve DB create etmek (ki Gökmen hocanın yazdığı kodlar harika çalışıyor.) problem olabilir. Neyse diğer olaylara da bi bakalım;
1- Hayır gerek kalmaz. O sadece kolay Table, SP ve/ya Trigger ları kolay işlemek için bir tool...
2- :) Sen FireBird kullanmak istiyorsan onu kullanıyorsun demektir. AteşKuşu bağımlılık yapar. Sen IBExpert ile çalışırken FB kurulu ise olay odur.
3- İnşallah yazacaksın, müşteriye yükleyince elbet programın database e ulaşabilmesi için birşeyler yüklemelisin. Tek makinede çalışacaksa sadece ve TSR çalışan bişiiler olmasını istemiyorsan Firebird'i gömülü kullanabilirsin. ( :ara Firebird Embed%) Ama normal şuan senin sisteminde olan Firebird Guardian bulunsada iyi olur... (sadece birisi ama hem Guardian hem Embed sapıtıyo, ayrıca embed in AMD işlemcilerde problemli olduğu söyleniyo...)
3.5- Eğer (sanırım!) Delphi içinden Database e BDE bileşenleri yerine IBx bileşenlerini kullandıysan BDE yüklemene gerek yok.

Saygılar, Sevgiler...

Taner DOĞAN
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

çözüm

Mesaj gönderen nitro »

yardımlarınız için çok teşekkürler
karar verdiğim işlem şu:
boş bir veritabanı oluşturacağım.
yeni firma açıldıkça boş veri tabanını kopyalayacağım.
kodlar konusunda daha acemi olduğum için ve projemin acelesi olduğu için böyle yapmayı uygun buldum.
allaha emanet olun.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7602
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

hocam bu DOS zamanında uygulanan bir teknik. Ne gerek var ki böyle bir işleme. SQL scripti ile kolayca oluşturabilirsin.

IB Expert'te zaten gerekli SQL kodlarını veriyor. Table'ı açıp DDL kısmındaki ifadeyi kopyala ve onu program içinden çalıştırarak tabloları oluştur.

Kolay gelsin.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

S.A.
Mustafa hocam haklısın ama boş tabloyu kopyalamak başlangıçta daha kolay. (başlangıçta diyorum çünkü güncellemelerde bu boş tabloyuda güncellemeniz gerekebiliyor) ben paradoksta yazdığım programda tabloları bir tablonun içine gömmüştüm. (blob alana) daha sonra tabloyu baştan sona okuyup diğer tabloları oluşturuyordum). :)
Kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

bi deneyeyim dedim

Mesaj gönderen nitro »

tam olarak kullanamasam da ne kadar zor olabilir ki dedim ve
create olayına girdim.
bir tablo oluşturdum.
ama tablo tanımlı bir gdb dosyasına bağlı.
tabloyu başarıyla oluşturduktan sonra bir de sıfırdan gdb dosyası oluşturayım dedim.

your username and password is not defined diye bir hata verdi.
bir kaç değişiklik yaptım ama düzelmedi .
not: forumda bu konuyu aradım. şair'in yazdıkalrını okudum. gerçi benim kodlamam da farklı bişey değil. username'in büyükharf olması gibi olasılıkları da denedim. hep aynı hata.

şu kodu kullandım:

Kod: Tümünü seç

ibdatabase2.DatabaseName:='C:\Program Files\KONAT\KONATVT2.GDB';
 ibdatabase2.SQLDialect:=3;
 ibdatabase2.LoginPrompt:=false;
 ibdatabase2.CreateDatabase;
 ibdatabase2.Connected:=false;
 ibdatabase2.Params.Values['user_name']:='sysdba';
 ibdatabase2.Params.Values['password']:= 'masterkey';
 ibdatabase2.Params.Values['lc_ctype']:='win1254';
 ibdatabase2.Connected:=false;


 
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

S.A.
Sanırım söyle bişey olması gerekiyor

Kod: Tümünü seç

 ibdatabase2.Connected:=false;
 ibdatabase2.DatabaseName:='C:\Program Files\KONAT\KONATVT2.GDB';
 ibdatabase2.params.clear;
 ibdatabase2.Params.add('user_name = SYSDBA');
 ibdatabase2.Params.add('password = masterkey');
 ibdatabase2.Params.add('lc_ctype = win1254');
 ibdatabase2.SQLDialect:=3;
 ibdatabase2.LoginPrompt:=false;
 ibdatabase2.CreateDatabase;
parmaslar createdatabase den önce eklenmeli.
Kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

.-.-.-.-.-.-.-. ^_^
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

işte çözüm- teşekkürler

Mesaj gönderen nitro »

son gelen cevaptaki linkteki kodlar hatasız çalışıyor.
gdb dosyası oluştu.
ama şöyle bir durm var
ibexperte database'i create ettikten sonra bi de
register yapıyordum. register aşamasında karakter falan seçiyordum.
TURKISH_CHARSET diye falan
şimdi o olay yok. bi problem çıkarıcak mı?
snofru
Üye
Mesajlar: 204
Kayıt: 19 Ağu 2004 02:57
Konum: /local/usr/src
İletişim:

Mesaj gönderen snofru »

S.A.
sinefru yazdı:DB create etmek (ki Gökmen hocanın yazdığı kodlar harika çalışıyor.) problem olabilir.
bahsettiğim o idi... mege bey linki sunmuş sağolsun... IBExpertteki o CharSet seçimi sanırım Delphi IBx bileşenlerinden IBDatabase'in ekranındaki seçim varya oraya tekabul ediyor. Ve sen o alanı TURKISH... yaptığında hiç yandaki ListBox a baktıysan (tam hatırlamıyorum ve şuan bakamayacağım ama) "lc_charset = xxx" gibi bişey oluyodu. Eğer onu;

Kod: Tümünü seç

IBDatabase1.Params.Append(' ??????? '); 
? alana uyarlarsan dediğin olacaktır. :wink:
ben çılgınca mı düşünüyorum yoksa mantığı iyice oturttum mu acaba ???
Saygılar, sevgiler...

Taner DOĞAN
Cevapla