PDA

Ver la Versión Completa : Crear tabla DB


userlazarus
22-06-2006, 23:41:55
Hola,

Intento crear una tabla Dbf y me da error en el tipo de campo (este lo recojo de un TEdit. El código que empleo es el siguiente:

procedure TForm1.Button2Click(Sender: TObject);
begin
basedatos := TDbf.Create(nil);
try
basedatos.TableLevel := 4
basedatos.Exclusive := True;
basedatos.TableName := Edit1.Text+'.dbf';
With basedatos.FieldDefs do begin
Add('nombre',Edit1.Text,80,True);
Add('Apellidos',Edit2.Text,80,True);
End;
basedatos.CreateTable;
basedatos.Open;
basedatos.Close;
finally
basedatos.Free;
end;
end;

Gracias

nemesio
23-06-2006, 00:06:44
¿Qué colocas en el Edit que recoge el Tipo de Campo?

ContraVeneno
23-06-2006, 00:41:49
Pues el detalle esta en que utlilizas el mismo edit1 para el nombre de la base de datos y para definir el tipo de dato del primer campo.

como ya dijo nemesio, habría que ver que pones en el edit1 y en el edit2, que se supone debería ser un tipo de datos válido.

userlazarus
23-06-2006, 08:26:02
En el TEdit pongo por ejemplo ftString y me sigue dando tipo de datos
erroneo.
Utilizo lo siguiente:


procedure TForm1.Button2Click(Sender: TObject);
begin
basedatos := TDbf.Create(nil);
try
basedatos.TableLevel := 4
basedatos.Exclusive := True;
basedatos.TableName := Edit1.Text+'.dbf';
With basedatos.FieldDefs do begin
Add('nombre',Edit2.Text,80,True);
Add('Apellidos',Edit3.Text,80,True);
End;
basedatos.CreateTable;
basedatos.Open;
basedatos.Close;
finally
basedatos.Free;
end;
end;

userlazarus
23-06-2006, 12:38:29
:confused:
Upps..., alguien sabe lo que me falla..?
Gracias

nemesio
23-06-2006, 16:48:13
Ok, ya veo cual es tu error. Cuando recibes por teclado el tipo de Datos, estás recibiendo un Texto, el ftString es una variable de tipo TFieldType que se encuentra en el Unit "DB". Tienes que saber diferenciar que es un texto y que es una Variable. Te recomiendo lo siguiente: usa en vez de un Edit un ComboBox en el cual tendrás los tipos de campos que quieras usar. Cuando escojas uno entonces harás lo siguiente:
if combobox1.ItemIndex=0 then
Add('nombre',ftString,80,True);
claro que es solo una idea ya que ese codigo lo puedes optimizar. Prueba y verás que tu problema estará resuelto.

userlazarus
23-06-2006, 17:59:56
Ok.
Solucionado. Muchas gracias