Emerson; clique em sima do tipo DbiName. na declaração com a variavel, que o delphi vai te levar ate a declaração do tipo.
dai se descobre qual que é o tipo de dados ancestral e converte para ele a string. funciona? Atenciosamente; ******************************************* | | | O------. Elazar Dornelles Ceza | | / / / / [EMAIL PROTECTED] | | O O O O (51) 91673488 | | / / / / | | Ábacus - Tecnologia da Informação | | www.abacus.inf.br (54) 3443-5150 | ******************************************* -----Mensagem original----- De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Emerson Cassio Enviada em: terça-feira, 21 de março de 2006 14:34 Para: delphi-br@yahoogrupos.com.br Assunto: Re: [delphi-br] String para DbiName Estou usando algo assim para incluir um campo em uma tabela em tempo de execução: uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, DBTables,Grids, DBGrids, BDE, DBCtrls, Menus, ComCtrls, Buttons; type TForm1 = class(TForm) Table1: TTable; Button1: TButton; Button2: TButton; Table2: TTable; procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; type ChangeRec = packed record szName: dbiname; iType: Word; iSubType: Word; iLength: Word; iPrecision: Byte; end; var MyChangeRec: ChangeRec; procedure AddField(Table: TTable; NewField: ChangeRec); implementation {$R *.DFM} procedure AddField(Table: TTable; NewField: ChangeRec); var Props: CURProps; hDb: hDBIDb; TableDesc: CRTblDesc; pFlds: pFLDDesc; pOp: pCROpType; B: byte; begin if Table.Active = False then raise EDatabaseError.Create('A tabela precisa estar aberta'); if Table.Exclusive = False then raise EDatabaseError.Create('A tabela precisa estar aberta em modo Exclusivo'); Check(DbiSetProp(hDBIObj(Table.Handle), curxltMODE, integer(xltNONE))); Check(DbiGetCursorProps(Table.Handle, Props)); pFlds := AllocMem((Table.FieldCount + 1) * sizeof(FLDDesc)); FillChar(pFlds^, (Table.FieldCount + 1) * sizeof(FLDDesc), 0); Check(DbiGetFieldDescs(Table.handle, pFlds)); for B := 1 to Table.FieldCount do begin pFlds^.iFldNum := B; Inc(pFlds, 1); end; try StrCopy(pFlds^.szName, NewField.szName); pFlds^.iFldType := NewField.iType; pFlds^.iSubType := NewField.iSubType; pFlds^.iUnits1 := NewField.iLength; pFlds^.iUnits2 := NewField.iPrecision; pFlds^.iFldNum := Table.FieldCount + 1; finally Dec(pFlds, Table.FieldCount); end; pOp := AllocMem((Table.FieldCount + 1) * sizeof(CROpType)); Inc(pOp, Table.FieldCount); pOp^ := crADD; Dec(pOp, Table.FieldCount); // Blank out the structure... FillChar(TableDesc, sizeof(TableDesc), 0); // Get the database handle from the table's cursor handle... Check(DbiGetObjFromObj(hDBIObj(Table.Handle), objDATABASE, hDBIObj(hDb))); // Put the table name in the table descriptor... StrPCopy(TableDesc.szTblName, Table.TableName); // Put the table type in the table descriptor... StrPCopy(TableDesc.szTblType, Props.szTableType); // Close the table so the restructure can complete... TableDesc.iFldCount := Table.FieldCount + 1; Tabledesc.pfldDesc := pFlds; TableDesc.pecrFldOp := pOp; Table.Close; // Call DbiDoRestructure... try Check(DbiDoRestructure(hDb, 1, @TableDesc, nil, nil, nil, FALSE)); finally FreeMem(pFlds); FreeMem(pOp); Table.Open; end; end; procedure TForm1.Button2Click(Sender: TObject); var NumCampos:integer; CampoAtual:SmallInt; NomedoCampo,Inserir:string; codloja:string; begin table1.Open; table2.Open; if length(inttostr(table2.Fields[0].value))=1 codloja:='0'+inttostr(table2.Fields[0].value) else codloja:=inttostr(table2.Fields[0].value) //AQUI DÁ O ERRO//////////////////////////////////////////////////////////////////// //// //////////////////////////////////////////////////////////////////////// //// //////////// MyChangeRec.szName := 'qtdlj'+CodLoja;///Aqui preciso atribuir como nome do campo qtdlj+conteudo da variavel codloja //porem da mensagem de erro [Error] Unit1.pas(148): Incompatible types: 'DBINAME' and 'String' pois o szName é do tipo DBINAME //////////////////////////////////////////////////////////////////////// //// //////////////////////////////////////////////////////////////////////// //// ////////////////////////////////////////// MyChangeRec.iType := fldPDXNUM; MyChangeRec.iSubType:=0; MyChangeRec.iLength := 0; MyChangeRec.iPrecision := 0; Table1.Close; Table1.Exclusive := True; Table1.Open; AddField(Table1, MyChangeRec); Table1.Close; Table1.Exclusive := False; Table1.Open; End; ----- Original Message ----- From: "Rubem Nascimento da Rocha" <[EMAIL PROTECTED]> To: <delphi-br@yahoogrupos.com.br> Sent: Tuesday, March 21, 2006 11:26 AM Subject: RE: [delphi-br] String para DbiName > DbiName? De onde vc tirou isso? > Sds. > > > >From: "Emerson Cassio" <[EMAIL PROTECTED]> > >Reply-To: delphi-br@yahoogrupos.com.br > >To: <delphi-br@yahoogrupos.com.br> > >Subject: [delphi-br] String para DbiName > >Date: Tue, 21 Mar 2006 11:17:20 -0400 > > > >Pessoal alguem tem alguma ideia de como converto uma variavel do tipo > >string > >para DbiName? > > > > _________________________________________________________________ > MSN Busca: fácil, rápido, direto ao ponto. http://search.msn.com.br > > > > -- > <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> > > > > Links do Yahoo! Grupos > > > > > > > > > -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> Yahoo! Grupos, um serviço oferecido por: PUBLICIDADE Links do Yahoo! Grupos Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!. _______________________________________________________ Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador agora! http://br.acesso.yahoo.com -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> <*> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages <*> Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html