field yapısını tespit etmek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
MakPRO
Üye
Mesajlar: 251
Kayıt: 31 Eki 2003 05:21
Konum: Antalya
İletişim:

field yapısını tespit etmek

Mesaj gönderen MakPRO »

mrb .

for i:=0 to SimpleDataSet1.FieldCount-1 do begin
ListBox1.Items.Add(SimpleDataSet1.Fields.Fields.FieldName);
end;

komutu ile field isimlerini listbox a alıyorum . bunlar beraber

eğer o field yapısı CHAR(30) ise onuda görmek istiyorum . data yapısın gösteren sistemi yapamadım yardımcı olabilirseniz sevinirim. iyi çalışmalar.
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

Kod: Tümünü seç

Var
  x : TFieldType;
begin
  x := Table1.FieldDefs[0].DataType;
end;
Başlıca Field Tipleri; ftStrimg, ftInteger, ftBoolean vs.
Help ten TFieldType diye bakabilirsin.
DeveloperToolKit

..::|YeşilMavi|::..
Kullanıcı avatarı
MakPRO
Üye
Mesajlar: 251
Kayıt: 31 Eki 2003 05:21
Konum: Antalya
İletişim:

slm

Mesaj gönderen MakPRO »

fakat bunu string bir değişkene aktaramıyorum. nasıl string olarak yazabilirim ? tşk.
fahri
Üye
Mesajlar: 5
Kayıt: 18 Haz 2003 08:59

Mesaj gönderen fahri »

Adı bilinen bir alanın tipini bulmak için aşağıdaki fonksiyon kullanılabilir.
Function TypeField(DatabaseName, TableName, FieldName: String): String;
Var
Table : TTable;
FieldIndex : Integer;
FieldType : TFieldType;
Begin
Result := '';
If Not IsTable(DatabaseName, TableName) Then Exit;
If Not IsField(DatabaseName, TableName, FieldName) Then Exit;
Table := TTable.Create(nil);
Try
Try
Table.Active := False;
Table.DatabaseName := DatabaseName;
Table.TableName := TableName;
Table.Active := True;
FieldIndex :=
Table.FieldDefs.IndexOf(FieldName);
FieldType :=
Table.FieldDefs[FieldIndex].DataType;

If FieldType=ftUnknown Then Result := 'Unknown';
If FieldType=ftString Then Result := 'String';
If FieldType=ftSmallInt Then Result := 'SmallInt';
If FieldType=ftInteger Then Result := 'Integer';
If FieldType=ftWord Then Result := 'Word';
If FieldType=ftBoolean Then Result := 'Boolean';
If FieldType=ftFloat Then Result := 'Float';
If FieldType=ftCurrency Then Result := 'Currency';
If FieldType=ftBCD Then Result := 'BCD';
If FieldType=ftDate Then Result := 'Date';
If FieldType=ftTime Then Result := 'Time';
If FieldType=ftDateTime Then Result := 'DateTime';
If FieldType=ftBytes Then Result := 'Bytes';
If FieldType=ftVarBytes Then Result := 'VarBytes';
If FieldType=ftBlob Then Result := 'Blob';
If FieldType=ftMemo Then Result := 'Memo';
If FieldType=ftGraphic Then Result := 'Graphic';
{$IFDEF WIN32}
If FieldType=ftAutoInc Then Result := 'AutoInc';
If FieldType=ftFmtMemo Then Result := 'FmtMemo';
If FieldType=ftParadoxOle Then Result := 'ParadoxOle';
If FieldType=ftDBaseOle Then Result := 'DBaseOle';
If FieldType=ftTypedBinary Then Result := 'TypedBinary';
{$ENDIF}
Except
End;
Finally
Table.Free;
End;
End;
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

merhaba ,
mesela MySQL gibi bir veritabanında bir tablonun tüm filedlerini indexlerine kadar öğrenmek için,

Kod: Tümünü seç

SHOW FIELDS FROM TABLO_ADI
indexler için

Kod: Tümünü seç

SHOW KEYS FROM TABLO_ADI
bu bir veri kümesi olarak sonucu döndürür.
kolay gelsin.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
MakPRO
Üye
Mesajlar: 251
Kayıt: 31 Eki 2003 05:21
Konum: Antalya
İletişim:

tşk

Mesaj gönderen MakPRO »

ama tam olarak ifade edemedim. sonuçta table ın karakter yapısına kadar nasıl olduğunu yazmak istiyorum.

örneğin

CODE VARCHAR(30) CHARACTER SET WIN1254

yani bir table ın yapısını yazdırmak istediğim .

ibconsole dan interbase table yapısına baktığımızda

properties ekranında

Name Type Character Set Collation Default Value Allow Nulls

şeklinde gösteriyor ve bende aynı bu şekilde ekrana basmak istiyorum ilgili table ın içeriğini
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

sayın MakPRO
şu sıralar MySQL kullanıyorum emin olmamakla birlikte bu komut setlerinin firebird tarafındanda desteklendiğini zannediyorum mesela

Kod: Tümünü seç

SHOW CREATE TABLE TABLO_ADI
şeklide bir ifade bize iki alanlı bir kayt seti döndürüyor ve bunlardan iki numaralı (1 indisli) alan belirttiğimiz tablonun tam olarak tüm yapısıyla indexler dahil oluşturmak için gerekli kodunu veriyor. bence bunları bir dene.
örneğin

Kod: Tümünü seç

SHOW CREATE TABLE EVRAK
şeklinde bir ifade bana ;

Kod: Tümünü seç

CREATE TABLE `evrak` (
  `id` double NOT NULL auto_increment,
  `numara` double default NULL,
  `yer` tinyint(3) unsigned default '0',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `id` (`id`),
  KEY `id_2` (`id`)
) TYPE=InnoDB
şeklinde değere sahiptek satırlı bir sonuç kümesi döndürüyor.

kolay gelsin.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
MakPRO
Üye
Mesajlar: 251
Kayıt: 31 Eki 2003 05:21
Konum: Antalya
İletişim:

:)

Mesaj gönderen MakPRO »

üstadım bunları konsoldan yapınca döndürüyor tahminim. ben dbexpres ve clientdataset kullanıyorum. ve bu bilgileri delphiden almak istiyorum. sql textine bu komutları yazdığım zaman dönen değer nereye atanacak ?
delphi içinde listbox a nasıl aktarabilirim örneğin :)
onaydin

Mesaj gönderen onaydin »

SQL le halletmek isterseniz sistem tablolarını kurcalayarak çekebilirsiniz.
Gerekli tablolar RDB$FIELDS, RDB$TYPES, RDB$COLLATIONS, ve RDB$RELATION_FIELDS.
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Sayın MakPRO
bir önceki mesajımda belirttiğim gibi bu sorguyu sen IBQuery ile gönder sonuç iki fieldli bir tablo gibi dönüyor birisi table diğeri createtable adında iki alan sen yani sen şöyle bir şey dersen;

Kod: Tümünü seç

memo1.text:=IbQuery1.Fields[1].asstring;
bu şekilde almış olursun.
kolay gelsin.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
MakPRO
Üye
Mesajlar: 251
Kayıt: 31 Eki 2003 05:21
Konum: Antalya
İletişim:

:)

Mesaj gönderen MakPRO »

ben dbexpress kullanıyorum. dediğin komutu denedim hata veriyor sql i çalıştırınca. fahri arkadaşımızın dediği gibi bir fonksiyon yazmak lazım. araştırdım biraz.

aşağıdaki linkler arkadaşlara ilham verir bde tabanlı ama faydalı bi link

http://bdn.borland.com/article/0,1410,20868,00.html

cevap yazan tüm arkadaşlara tşk ederim .
iyi çalışmalar
Cevapla