FB de Table Field İşlemleri! (İbExpert vs.. olmadan)

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Kullanıcı avatarı
Karinca
Üye
Mesajlar: 239
Kayıt: 25 Ağu 2004 07:06
Konum: http://localserver/
İletişim:

FB de Table Field İşlemleri! (İbExpert vs.. olmadan)

Mesaj gönderen Karinca »

Cümleten Herekese Kolay Gelsin.

Başlıktan Anlaşılıyor Sanırım.

FireBird de İbExpert vb gibi düzenleyiciler olmadan Bir Tableye nasıl Field Eklerim. Biraz Arama Yaptım. En yakın sonuc buydu ama benimkine değil.
viewtopic.php?t=1078&highlight=field+ekleme

İbExpert te Yaparken Commit dediğimizde
Statement Bölmüne

Kod: Tümünü seç

 ALTER TABLE MUSTERI
          ADD FIELD_ADI INTEGER
Bunları yazıyo. Bende bi buton ve bir ibdataset koydum. SQL yazim dedim ama yutmadı.

Kod: Tümünü seç

ibd.ModifySQL.Add('''ALTER TABLE MUSTERI ADD FIELD_ADI INTEGER''');
İbExpert te Table i açıp " DDL " kısmına gelirseniz de Primary Keys Bölümünde

Kod: Tümünü seç

ALTER TABLE MUSTERI ADD CONSTRAINT PK_MUSTERI PRIMARY KEY (SIRA);
Yazıyo. Alakası yoktur belki ama Alter Kelimesinin geçmesi huylandırdı beni.
Nasıl Yaparız acaba?


Selamlar...
En son Karinca tarafından 05 Haz 2005 02:23 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
cihana hakan olmak bir kuru kavga imiş
bir mürşide bende olmak cümleden evla imiş
h.z. Fatih


Resim
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

Kullanıcı avatarı
Karinca
Üye
Mesajlar: 239
Kayıt: 25 Ağu 2004 07:06
Konum: http://localserver/
İletişim:

Mesaj gönderen Karinca »

:oops: Pardon. Biraz daha aramalıymışım.


Selamlar...
cihana hakan olmak bir kuru kavga imiş
bir mürşide bende olmak cümleden evla imiş
h.z. Fatih


Resim
Kullanıcı avatarı
Karinca
Üye
Mesajlar: 239
Kayıt: 25 Ağu 2004 07:06
Konum: http://localserver/
İletişim:

Mesaj gönderen Karinca »

Yeni Başlık Açmayım Buraya Yazayım dedim.

Sorun şu :

butona tıklayıp open dialog yardımıyla *.fdb dosyanın yerini aldıktan sonra
edit in change sine

Kod: Tümünü seç

procedure TForm1.Edit1Change(Sender: TObject);
begin
 ibd.DatabaseName := edit1.Text; // ibd : ibdatasbase
 ibd.Connected := True;
 Combobox1.Items := ibt.TableNames;
 listbox2.items := ibt.tablenames;
 ibtr.Active := True; // ibtr : ibtransaction
 combobox1.SetFocus;
end;
yazdım. burda sorun yok, bağlanıyo.

Kod: Tümünü seç

procedure TForm1.Button2Click(Sender: TObject);
begin
 ibdt.SelectSQL.Clear; // ibdt : ibdataset
 ibdt.SelectSQL.Add('Select * From '+combobox1.text+'');
 ibdt.Prepare;
 ibdt.ExecSQL;
 ibdt.Active := True;
end; 

Dediğimde
use Open for a Select Statement
Diye hata veriyo. IbQuery de kullandım aynısı oluyo.

Acaba nerde yanlış yapıyorum?



Selamlar...
En son Karinca tarafından 02 Haz 2005 01:47 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
cihana hakan olmak bir kuru kavga imiş
bir mürşide bende olmak cümleden evla imiş
h.z. Fatih


Resim
Kullanıcı avatarı
Karinca
Üye
Mesajlar: 239
Kayıt: 25 Ağu 2004 07:06
Konum: http://localserver/
İletişim:

Mesaj gönderen Karinca »

Birde Şey dicem. Biraz fazla oluyorum biliyorum ama :

Bir FDB table deki Field in özelliklerine nasıl ulaşırım.

Field isimlerine Table.fieldlist diyoruz tmm da

collate, uzunluğu, charset i ve diğer özelliklerine nasıl bakarız?



Selamlar...
cihana hakan olmak bir kuru kavga imiş
bir mürşide bende olmak cümleden evla imiş
h.z. Fatih


Resim
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

merhaba;

Kod: Tümünü seç

 use Open for a Select Statement
Open komutunu kullanmalısın.

ExecSQL=insert,delete,update kullanılır

Kod: Tümünü seç

collate, uzunluğu, charset i ve diğer özelliklerine nasıl bakarız? 
bir arkadaşımız sormuştu aynı soruyu forumda olması lazım.

iyi günler
Kullanıcı avatarı
Karinca
Üye
Mesajlar: 239
Kayıt: 25 Ağu 2004 07:06
Konum: http://localserver/
İletişim:

Mesaj gönderen Karinca »

Uğur1982 yazdı:merhaba;


ExecSQL=insert,delete,update kullanılır

iyi günler
Tşk ederim Hocam. Çok Acemice olmuş. Eksik Yok Fazla var
neyse.
Çok tşk ederim.

Diğer Olayı bulamazsam yine sizdeyim haberiniz olsun :) :)

Kolay Gelsin ;)


Selamlar...
cihana hakan olmak bir kuru kavga imiş
bir mürşide bende olmak cümleden evla imiş
h.z. Fatih


Resim
Kullanıcı avatarı
Karinca
Üye
Mesajlar: 239
Kayıt: 25 Ağu 2004 07:06
Konum: http://localserver/
İletişim:

Mesaj gönderen Karinca »

Uğur1982 yazdı:merhaba;

Kod: Tümünü seç

collate, uzunluğu, charset i ve diğer özelliklerine nasıl bakarız? 
bir arkadaşımız sormuştu aynı soruyu forumda olması lazım.

iyi günler
Hocam Aradım baya Bulamadım. Konu başlığını veya arkadaşın nik ini hatırlıyomusunuz bide öle arayım. Veya bi ipucu verseniz.



Selamlar...
cihana hakan olmak bir kuru kavga imiş
bir mürşide bende olmak cümleden evla imiş
h.z. Fatih


Resim
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

kardeş kusura bakma ya. ben de bulamadım :) karıştırmışım aşağıdaki mesajla :roll:
viewtopic.php?p=44057&highlight=#44057

belki bir faydası olur.Olmazsa bilen bir arkadaşımız cevap verir,hep beraber öğreniriz... :wink:

iyi günler...
Kullanıcı avatarı
Karinca
Üye
Mesajlar: 239
Kayıt: 25 Ağu 2004 07:06
Konum: http://localserver/
İletişim:

Mesaj gönderen Karinca »

Uğur1982 yazdı:kardeş kusura bakma ya. ben de bulamadım :) karıştırmışım aşağıdaki mesajla :roll:
viewtopic.php?p=44057&highlight=#44057

belki bir faydası olur.Olmazsa bilen bir arkadaşımız cevap verir,hep beraber öğreniriz... :wink:

iyi günler...
Tmm tşk.
Demek Hep Beraber Öğreneceğiz :D



Selamlar...
cihana hakan olmak bir kuru kavga imiş
bir mürşide bende olmak cümleden evla imiş
h.z. Fatih


Resim
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Bunun için FB'ün sistem tablolarından faydalanman gerekiyor. Bunlar ile bir çalışma yapmadım. Ancak Interbase Langref.pdf'te bu tabloların ilişkileri ve yapıları açıklanıyor.
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

merhaba;

Kod: Tümünü seç

collate, uzunluğu, charset i ve diğer özelliklerine nasıl bakarız?
Forma 5 tane edit koy,Name'leri şöyle olsun;1 tane de buton koymayı unutma :)

TabloAdi.Text:=Tablo ismi

Fieldismi.Text:=İlgili tablo alanı

Uzunluk.Text :=Alanın uzunluğu

TIP.Text:=Field'in Alan Tipi;

charset.Text.=Charseti;

Butonun Click'ine;

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var uzunluk_adi: string; charset_id: integer;
begin
  with IBQuery1 do
  begin
    SQL.clear;
    Sql.Add('select * from RDB$FIELDS,RDB$RELATION_FIELDS WHERE RDB$RELATION_NAME=''' + TabloAdi.Text + ''' ');
    Sql.Add('and RDB$FIELD_NAME=''' + Fieldismi.Text + ''' ');
    Open;
    //=================================================
    uzunluk_adi := IBQuery1.FieldByName('RDB$FIELD_SOURCE').AsString;
    //====================================================================================
    SQL.Clear;
    Sql.Add('select * from RDB$FIELDS WHERE RDB$FIELD_NAME=''' + uzunluk_adi + ''' ');
    Open;
    //===================================================================
   // ShowMessage(IntToStr(IBQuery1.fieldByName('RDB$FIELD_TYPE').AsInteger));
    case IBQuery1.FieldByName('RDB$FIELD_TYPE').AsInteger of
      261: TIP.Text := 'BLOB';
      14: TIP.Text := 'CHAR';
      40: TIP.Text := 'CSTRING';
      11: TIP.Text := 'D_FLOAT';
      27: TIP.Text := 'DOUBLE';
      10: TIP.Text := 'FLOAT';
      16: TIP.Text := 'INT64';
      8: TIP.Text := 'INTEGER';
      9: TIP.Text := 'QUAD';
      7: TIP.Text := 'SMALLINT';
      12: TIP.Text := 'DATE';
      13: TIP.Text := 'TIME';
      35: TIP.Text := 'TIMESTAMP';
      37: TIP.Text := 'VHARCHAR';
    end;
    //===============================================================================
    uzunluk.Text := IntToStr(IBQuery1.FieldByName('RDB$CHARACTER_LENGTH').AsInteger);
    charset_id := IBQuery1.FieldByName('RDB$CHARACTER_SET_ID').AsInteger;
    //=====================================================================
    SQL.clear;
    Sql.Add('select * from RDB$CHARACTER_SETS WHERE RDB$CHARACTER_SET_ID=''' + IntToStr(charset_id) + ''' ');
    open;
    //=====================================================================
    charset.Text := IBQuery1.FieldByName('RDB$CHARACTER_SET_NAME').AsString;
  end;

end;
TabloAdi.Text:=Tablo ismi
Fieldismi.Text:=İlgili tablo alanı

Tablo ismi ile field ismini giriyorsunuz text'lere,büyük harflerle;
Yalnız sadece Numeric'leri bulamıyor.Fazla da üstelemedim :)

iyi günler...
Kullanıcı avatarı
Karinca
Üye
Mesajlar: 239
Kayıt: 25 Ağu 2004 07:06
Konum: http://localserver/
İletişim:

Mesaj gönderen Karinca »

Uğur1982 yazdı:merhaba;

Kod: Tümünü seç

collate, uzunluğu, charset i ve diğer özelliklerine nasıl bakarız?
Tablo ismi ile field ismini giriyorsunuz text'lere,büyük harflerle;
Yalnız sadece Numeric'leri bulamıyor.Fazla da üstelemedim :)

iyi günler...
Ellerinize Ağzınıza SAğlık Hocam tşk. Ben bunu bi deneyim ;)



Selamlar...
cihana hakan olmak bir kuru kavga imiş
bir mürşide bende olmak cümleden evla imiş
h.z. Fatih


Resim
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

Rica ederim.
Güle güle kullanın :D
Kullanıcı avatarı
Karinca
Üye
Mesajlar: 239
Kayıt: 25 Ağu 2004 07:06
Konum: http://localserver/
İletişim:

Mesaj gönderen Karinca »

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var uzunluk_adi: string; charset_id: integer;
begin

 tabloadi.text := tablocombobox1.text;
 fieldismi.text := fieldcombobox1.tex;
 
  with IBQuery1 do
  begin
    SQL.clear;
    Sql.Add('select * from RDB$FIELDS,RDB$RELATION_FIELDS WHERE RDB$RELATION_NAME=''' + TabloAdi.Text + ''' ');
    Sql.Add('and RDB$FIELD_NAME=''' + Fieldismi.Text + ''' ');
    Open;
    //=================================================
    uzunluk_adi := IBQuery1.FieldByName('RDB$FIELD_SOURCE').AsString;
    //====================================================================================
    SQL.Clear;
    Sql.Add('select * from RDB$FIELDS WHERE RDB$FIELD_NAME=''' + uzunluk_adi + ''' ');
    Open;
    //===================================================================
   // ShowMessage(IntToStr(IBQuery1.fieldByName('RDB$FIELD_TYPE').AsInteger));
    case IBQuery1.FieldByName('RDB$FIELD_TYPE').AsInteger of
      261: TIP.Text := 'BLOB';
      14: TIP.Text := 'CHAR';
      40: TIP.Text := 'CSTRING';
      11: TIP.Text := 'D_FLOAT';
      27: TIP.Text := 'DOUBLE';
      10: TIP.Text := 'FLOAT';
      16: TIP.Text := 'INT64';
      8: TIP.Text := 'INTEGER';
      9: TIP.Text := 'QUAD';
      7: TIP.Text := 'SMALLINT';
      12: TIP.Text := 'DATE';
      13: TIP.Text := 'TIME';
      35: TIP.Text := 'TIMESTAMP';
      37: TIP.Text := 'VHARCHAR';
    end;
    //===============================================================================
    uzunluk.Text := IntToStr(IBQuery1.FieldByName('RDB$CHARACTER_LENGTH').AsInteger);
    charset_id := IBQuery1.FieldByName('RDB$CHARACTER_SET_ID').AsInteger;
    //=====================================================================
    SQL.clear;
    Sql.Add('select * from RDB$CHARACTER_SETS WHERE RDB$CHARACTER_SET_ID=''' + IntToStr(charset_id) + ''' ');
    open;
    //=====================================================================
    charset.Text := IBQuery1.FieldByName('RDB$CHARACTER_SET_NAME').AsString;
  end;

end;
tabloadi.text := tablocombobox1.text;
fieldismi.text := fieldcombobox1.tex;
Numara ve Collate sine de ben bakim. Bitirelim inşallah. ;)

Başına Şunları ekledim. kolay oldu. (lan çok bişe yaptık sanki :))
Neyse. Hocam Çok teşekkür ederim çalıştı. ;)



Selamlar...
cihana hakan olmak bir kuru kavga imiş
bir mürşide bende olmak cümleden evla imiş
h.z. Fatih


Resim
Cevapla