Table deki field type lerini almak!!
Table deki field type lerini almak!!
S.a arkadaşlar delphi ile db ye bağlanıp taloların ve fieldlerin isimlerini alabiliyorum ancak bana field type leri lazım.. bunu nasıl yaparım.. ( örn. kısaca IBDatabase1.GetFieldTypeNames(); gibi bisi)
Bilmemek ayıp değil öğrenmek isteyene öğretmemek ayıp:)
Re: Table deki field type lerini almak!!
s.a.
query ile tabloyu open ettiğin zaman querynin
fields özelliğine alanlar yüklenir.
tüm field lar için döngü kurup fields.fieldtype , datatype vs ulaşabilirsin.
kolay gelsin.
query ile tabloyu open ettiğin zaman querynin
fields özelliğine alanlar yüklenir.
tüm field lar için döngü kurup fields.fieldtype , datatype vs ulaşabilirsin.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Re: Table deki field type lerini almak!!
firebird sistem tablolarından tablo isimleirini veya field isimlerini alıyorsann eğer, firebird alan tiplerini integer olarak tutuyor sen bir calculated field tanımlayarak bu integer değerlerin bilinen tipleri yazabilirsin.
şöyleki:
diğer alan tiplerinini integer cinsinden değerlerini deneme yanılma yolu ile bulabilirsin.
şöyleki:
Kod: Tümünü seç
if alanlarxRDBFIELD_TYPE.Text='8' then
alanlarxALANTIPI.Text:='INTEGER';
if alanlarxRDBFIELD_TYPE.Text='12' then
alanlarxALANTIPI.Text:='DATE';
if alanlarxRDBFIELD_TYPE.Text='37' then
alanlarxALANTIPI.Text:='VARCHAR';
if alanlarxRDBFIELD_TYPE.Text='27' then
alanlarxALANTIPI.Text:='DOUBLE PRECISION';
if alanlarxRDBFIELD_TYPE.Text='7' then
alanlarxALANTIPI.Text:='SMALLINT';
if alanlarxRDBFIELD_TYPE.Text='10' then
alanlarxALANTIPI.Text:='FLOAT';
if alanlarxRDBFIELD_TYPE.Text='13' then
alanlarxALANTIPI.Text:='TIME';
if alanlarxRDBFIELD_TYPE.Text='35' then
alanlarxALANTIPI.Text:='TIMESTAMP';
Re: Table deki field type lerini almak!!
s.a.
query ile tabloyu open ettiğin zaman querynin
fields özelliğine alanlar yüklenir.
tüm field lar için döngü kurup fields.fieldtype , datatype vs ulaşabilirsin.
kolay gelsin.
fields.fieldtype nasıl oluyorkı?
Bilmemek ayıp değil öğrenmek isteyene öğretmemek ayıp:)
Re: Table deki field type lerini almak!!
Kod: Tümünü seç
IBQuery2.SQL.Text:= // a:=#39
' SELECT r.RDB$FIELD_NAME AS field_name, r.RDB$NULL_FLAG AS field_not_null_constraint, '+
' f.RDB$FIELD_LENGTH AS field_length,'+
' CASE f.RDB$FIELD_TYPE '+
' WHEN 261 THEN '+a+ 'BLOB' +a+
' WHEN 14 THEN '+a+ 'CHAR' +a+
' WHEN 40 THEN '+a+ 'CSTRING' +a+
' WHEN 11 THEN '+a+ 'D_FLOAT' +a+
' WHEN 27 THEN '+a+ 'DOUBLE' +a+
' WHEN 10 THEN '+a+ 'FLOAT' +a+
' WHEN 16 THEN '+a+ 'INT64' +a+
' WHEN 8 THEN '+a+ 'INTEGER' +a+
' WHEN 9 THEN '+a+ 'QUAD' +a+
' WHEN 7 THEN '+a+ 'SMALLINT' +a+
' WHEN 12 THEN '+a+ 'DATE' +a+
' WHEN 13 THEN '+a+ 'TIME' +a+
' WHEN 35 THEN '+a+ 'TIMESTAMP'+a+
' WHEN 37 THEN '+a+ 'VARCHAR' +a+
' ELSE '+a+'UNKNOWN'+a+ ' END AS field_type, '+
' coll.RDB$COLLATION_NAME AS field_collation, '+
' cset.RDB$CHARACTER_SET_NAME AS field_charset '+
' FROM RDB$RELATION_FIELDS r '+
' LEFT JOIN RDB$FIELDS f ON r.RDB$FIELD_SOURCE = f.RDB$FIELD_NAME '+
' LEFT JOIN RDB$COLLATIONS coll ON r.RDB$COLLATION_ID = coll.RDB$COLLATION_ID '+
' AND f.RDB$CHARACTER_SET_ID = coll.RDB$CHARACTER_SET_ID '+
' LEFT JOIN RDB$CHARACTER_SETS cset ON f.RDB$CHARACTER_SET_ID = cset.RDB$CHARACTER_SET_ID '+
' WHERE r.RDB$RELATION_NAME='+a+ ListBox1.Items[ListBox1.itemindex] +a+' ORDER BY r.RDB$FIELD_POSITION';
IBQuery2.Open; // ListBox1 de Tablo isimleri..
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
begin
IBQuery2.First;
while not IBQuery2.Eof do
begin
Memo3.Lines.Add(IBQuery2FIELD_TYPE.AsString);
IBQuery2.Next;
end;
end;
Bilmemek ayıp değil öğrenmek isteyene öğretmemek ayıp:)
Re: Table deki field type lerini almak!!
fieldtype değil fieldkind olacak.
senin istediğin datatype oda tfieldtype tipinde.
yani fields.datatype='ftString' şeklinde kontrol yapman lazım.
siz sistem tablolarından çekerek fb deki tipini yazıyorsunuz ben delphideki karşılığından bahsediyorum.
herhangi bir tabloyu open ettiğiniz zaman dataset in fields alanına tablodaki alanlar eklenir. alan listesini döngüye sokarak tablodaki alanların tiplerini bulabilirsiniz.
kolay gelsin.
senin istediğin datatype oda tfieldtype tipinde.
yani fields.datatype='ftString' şeklinde kontrol yapman lazım.
siz sistem tablolarından çekerek fb deki tipini yazıyorsunuz ben delphideki karşılığından bahsediyorum.
herhangi bir tabloyu open ettiğiniz zaman dataset in fields alanına tablodaki alanlar eklenir. alan listesini döngüye sokarak tablodaki alanların tiplerini bulabilirsiniz.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Re: Table deki field type lerini almak!!
tesekkurler @aslangeri dataset kullanmadım
yukardakı sql sorgusunu gondermeden once
kullanmıstım. yanı lıstbox a field ısımlerını almıstım.. ancak GetFieldNames den gelen sonuc alfabetik sıraya gore gelıyor.. ben 1. listbox a tabloları 2. listbox a secılen tablonun fıeldlarını 3. lıstbox a ıse fieldların type lerını yazmak ıstıyorum.. GetFieldNames den gelen sonuc alfabetik sırada oldugu ıcın listbox3 te ID alanını Varchar2 olarak gosterıyor bunu nasıl halelderım..
yukardakı sql sorgusunu gondermeden once
Kod: Tümünü seç
IBDatabase1.GetFieldNames(ListBox1.Items[ListBox1.ItemIndex], ListBox2.Items);
Bilmemek ayıp değil öğrenmek isteyene öğretmemek ayıp:)
Re: Table deki field type lerini almak!! [ÇÖZÜLDÜ]
Kod: Tümünü seç
Memo2.Text:='';
IBQuery2.First;
while not IBQuery2.Eof do
begin
Memo2.Lines.Add(trim(IBQuery2FIELD_NAME.AsString));
IBQuery2.Next;
end;
Bilmemek ayıp değil öğrenmek isteyene öğretmemek ayıp:)
Re: Table deki field type lerini almak!!
Selamlar,
SQL 2003 Standardlarında INFORMATION_SCHEMA isimli bir nesne mevcut ve buradan DB Hakkında istediğiniz herhangi bir şeyin bilgisini çekebiliyorsunuz. Örneğin SELECT * FROM INFOTMATION_SCHEMA.TABLES ya da SELECT * FROM INFOTMATION_SCHEMA.VIEWS vs.
Ancak Firebird'de henüz bu sistem desteklenmiyor, onun yerine RDB$ tabloları mevcut bunun hakkında detaylı örnekleri aşağıdaki linkten edinebilirsiniz.
http://www.alberton.info/firebird_sql_meta_info.html
Yukarıdaki linkte, tablolar, viewler, constraintler, indexler vs. var oğlu var.
Kolay Gelsin
SQL 2003 Standardlarında INFORMATION_SCHEMA isimli bir nesne mevcut ve buradan DB Hakkında istediğiniz herhangi bir şeyin bilgisini çekebiliyorsunuz. Örneğin SELECT * FROM INFOTMATION_SCHEMA.TABLES ya da SELECT * FROM INFOTMATION_SCHEMA.VIEWS vs.
Ancak Firebird'de henüz bu sistem desteklenmiyor, onun yerine RDB$ tabloları mevcut bunun hakkında detaylı örnekleri aşağıdaki linkten edinebilirsiniz.
http://www.alberton.info/firebird_sql_meta_info.html
Yukarıdaki linkte, tablolar, viewler, constraintler, indexler vs. var oğlu var.
Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/