![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Crear tabla .BDF desde delphi
Hola, la verdad es que no se si se puede hacer lo que os comento,
Lo que he hecho es crear desde access unas tablas y despues la he exportado a .BDF con sus indices .NDX, digamos que son tablas externas que las utilizo para guardar momentaneamente unos datos y luego mostrarlos en mi aplicación, pero como no son muy relevantes no quiero crear tablas en la base de datos para guardar esos datos. Pues bien mi pregunta es si se puede crear tablas .BDF con sus indices .NDX desde mi aplicación y como se haría, ya que las tablas con el uso, bueno mejor dicho el indice a veces se corrompe y da errores ó muestra datos que no se corresponden con los guardados, or esto, lo que pretendo es crear la tabla en tiempo de ejecución así tendre una tabla nueva cada vez. No se si lo que pregunto es una tontería, porque es muy facil de hacer ó porque no se puede hacer. Si alguien puede resolver mi duda.... Muchísimas gracias a todos por todo. |
#2
|
|||
|
|||
Crear tabla .dbf desde Delphi
No se muy bien lo de los indices a que te refieres pero te voy a mostrar un codigo donde se puede realizar eso que quieres:
procedure TFormFicheroCadeca.ButtonCrearClick(Sender: TObject); var Ok: Boolean; begin with DataModule1 do begin if FileExists('Cadeca.dbf') then DeleteFile('Cadeca.dbf'); Cadeca.Active:= FALSE; Cadeca.DatabaseName:= 'dBase Files'; Cadeca.TableType:= ttDBase; Cadeca.TableName:= 'Cadeca'; with Cadeca.FieldDefs do begin Clear; Add('COD_UNIDAD', ftString, 4, FALSE); Add('CAJA', ftString, 2, FALSE); Add('NBOLSA', ftString, 8, FALSE); Add('IMPORTE', ftFloat, 0, FALSE); Add('DIFERENCIA', ftFloat, 0, FALSE); Add('MONEDA', ftString, 3, FALSE); Add('FECHA_DEP', ftTime, 0, FALSE); Add('FECHA_CON', ftTime, 0, FALSE); Add('OBS', ftString, 200, FALSE); end; Cadeca.CreateTable; Cadeca.Open; FicheroCadeca1.First; while not FicheroCadeca1.Eof do begin Cadeca.Insert; CadecaCOD_UNIDAD.Value:= FicheroCadeca1cadeca.Value; if FicheroCadeca1caja.Value < 10 then CadecaCAJA.Value:= '0' + IntToStr(FicheroCadeca1caja.Value) else CadecaCAJA.Value:= IntToStr(FicheroCadeca1caja.Value); CadecaNBOLSA.Value:= FicheroCadeca1numero.Value; CadecaIMPORTE.Value:= FicheroCadeca1Importe.Value; CadecaDIFERENCIA.Value:= FicheroCadeca1Diferencia.Value; CadecaMONEDA.Value:= FicheroCadeca1moneda.Value; ConvertirFecha(DateToStr(FicheroCadeca1Fecha1.Value), fecha1); ConvertirFecha(DateToStr(FicheroCadeca1fecha2.Value), fecha2); CadecaFECHA_DEP.Value:= FicheroCadeca1Fecha1.Value - 1; if IArea = 2 then CadecaFECHA_CON.Value:= Date + 1 else CadecaFECHA_CON.Value:= Date + 1; Cadeca.Post; FicheroCadeca1.Next; end; Cadeca.Close; end; NombreFichero; if IArea = 2 then fichero:= DataModule1.ConfiguracionCodigo.Value + 'cd' + dia + mes + '.dbf' else fichero:= DataModule1.ConfiguracionCodigo.Value + 'sd' + dia + mes + '.dbf'; Ok2:= True; if FileExists(fichero) then DeleteFile(fichero); Ok:= CopyFileTo('Cadeca.dbf', Fichero); DataModule1.LogSystem(IdPersonal, 15); ShowMessage(' El fichero de Cadeca: ' + fichero + ' fue creado satisfactoriamente'); end; En este procedimiento se crea desde cero la Tabla dbf y posteriormente se actualiza con los datos que estan en el procedimiento almacenado FicheroCadeca1. Debes en el uses añadir las Unit bde, DBTables. Esperando que te sirva. Saludos Luis Garcia |
![]() |
|
|
![]() |
|