saber o layout de um dbf !!!
02/09/2004
0
Como faço no delphi para saber o layout de um arquivo dbf?
:shock:
:shock:
Jadielson
Curtir tópico
+ 0
Responder
Posts
03/09/2004
Thomaz_prg
Ative uma table, com este DBF, e, utilize um laço para pegar os dados que você quer.
Por exemplo, passar o nome do primeiro campo para um label:
você pode utilizar as outras propriedades do campo, tais como type (tipo), por exemplo...
Por exemplo, passar o nome do primeiro campo para um label:
label1.caption := table1.fields[0].name;
você pode utilizar as outras propriedades do campo, tais como type (tipo), por exemplo...
Responder
03/09/2004
Aroldo Zanela
Colega,
Abaixo em fragmento de uma ferramenta que desenvolvi para upsize de DBF para Firebird. Espero que seja o que procura:
Abaixo em fragmento de uma ferramenta que desenvolvi para upsize de DBF para Firebird. Espero que seja o que procura:
type TDescricao = Array[ 0..MaxInt Div SizeOf( FLDDesc ) - 1 ] of FLDDesc; var I, Total: Integer; Cursor: CURProps; Descricao: ^TDescricao; Tipo, Direito: String; nTam: word; Ligacao: String; Begin If not tbOrigem.Active Then tbOrigem.Open; Check( dbiGetCursorProps( tbOrigem.Handle, Cursor ) ); Descricao := AllocMem( Cursor.iFields*SizeOf( FLDDesc ) ); Try Check( dbiGetFieldDescs( tbOrigem.Handle,@Descricao^ ) ); Total := 0; For i := 0 to Cursor.iFields-1 do With Descricao^[i] do Begin Case iFldType Of 0: Tipo := ´UNKNOWN´; 1: Tipo := ´VARCHAR(´+IntToStr(iUnits1)+ ´)´; 2: Tipo := ´DATE´; 3: Tipo := ´BLOB´; 4: Tipo := ´CHAR(1) /* Logical */´; 5: Tipo := ´SMALLINT´; 6 : Tipo := ´INTEGER´; 7: begin if iUnits1 > 18 then iUnits1 := 18; if iUnits2 > 0 then Tipo := ´NUMERIC(´+IntToStr(iUnits1)+ ´,´ +IntToStr(iUnits2)+´)´ else Tipo := ´NUMERIC(´+IntToStr(iUnits1)+´)´; end; 8: Tipo := ´BCD´; 9: Tipo := ´BYTES´; 10 : Tipo := ´TIME´; 11 : Tipo := ´TIMESTAMP´; 12 : Tipo := ´SMALLINT´; 13 : Tipo := ´INTEGER´; 14 : Tipo := ´DOUBLE PRECISION´; 15 : Tipo := ´BYTES´; End; if i = 0 then begin Tipo := Tipo + ´ NOT NULL´; Result := StrPas(szName); end; IF I = cURSOR.iFields-1 then Ligacao := ´);´ else Ligacao := ´,´; Texto.Lines.Add( ´ ´+PadR(StrPas( szName ),10, ´ ´) + ´ ´ + Tipo + Ligacao ); End; finally FreeMem( Descricao, Cursor.iFields*SizeOf( FLDDesc ) ); End;
Responder
Clique aqui para fazer login e interagir na Comunidade :)