Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

crear dbf...

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: crear dbf... Responder citando

Como puedo hacer para crear un dbf?? no desde el DataBase Desktop sino por codigo, a fin de si el archivo dbf no existe lo genere el programa, y si no es mucho pedir, como puedo hacer un alias de igual forma, o ay alguna forma de conectarse a un dbf sin alias, solo por la ruta?

Gracias
_________________
Los problemas mas dificiles tienen las soluciones mas sencillas
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: crear dbf... Responder citando

Mira yo tube un problema similar hace ya un tiempo, me pidieron en la facu que meta datos de oscilacion, a una PC que estaba conectada a una LAN, los datos debian ser tomados por una placa adquisidora de 12bit, yo en ese momento no sabia como programar INTERRUPCIONES ni menos DMA en windows pero si en DOS y solo programo algo de ASM, C y C++, los datos tenian que quedar en un archivos legible por algun programa de gestion...
entonses programe este codigo que me permitia guardar datos enteros a un archivo dBase ll... no es mucha ayuda pero es lo que tengo a mano espero te ayude en algo ya que solo funciona con numeros enteros (+) y (-) .



#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

#define NUMERO 2
#define CARACTER 1
#define BOOLEANO 0

#define CANTIDAD 500

int ConverArrayDbase2(char *file,char *fill,double *data,int size,int typedata);

struct {
char Version;
int NunberData;
char MonthUpdate;
char DayUpdate;
char YearUpdate;
int SizeData;
char NameField[11];
char DataType;
char LengthField;
int AddressDataField;
char Field[498];
} Header;


int main(void)
{
register int i;
double array[CANTIDAD]; //
clrscr();

for(i=0;i<CANTIDAD;i++)
*(array+i)= -i; /* es (-) porque si puede representar
numeros (-) tambien representa (+) */

ConverArrayDbase2("c:\\temp\\uno.dbf","Auto",array,CANTIDAD,NUMERO);


// getch();

return 0;
}

/* Funcion que convierte un Array a Dbf */

int ConverArrayDbase2(char *file,char *field,double *data,int size,int typedata)
{
register unsigned int i,j;
FILE *out;
char *string,Char;
int dec, sign;
int ndig = 10;

if ((out = fopen( file , "wb")) == NULL)
{
fprintf(stderr, "No se puede crear el archivo.\n");
return (-1);
}
Header.Version = 0x2;
Header.NunberData = size;
Header.MonthUpdate = 0x04;
Header.DayUpdate = 0x04;
Header.YearUpdate = 0x66;
Header.SizeData = 0x0C;
for(i=0;i<10;i++)
if('\0' != *(field+i) )
Header.NameField[i]= *(field+i);
Header.NameField[10]= '\0';
if(typedata == CARACTER)
Header.DataType = 'C';
else
if(typedata == NUMERO)
Header.DataType = 'N';
else Header.DataType = 'L';
Header.LengthField = 0xB;
Header.AddressDataField = 0x0;
for(i=0;i<498;i++)
Header.Field[i] = 0x0;
fwrite(&Header , sizeof(Header) , 1 , out);
// fseek(out,0x20F,0);
for(i=0;i<size;i++)
{
string = ecvt(*(data+i), ndig, &dec, &sign);
for(j=0;j<(12-dec-1);j++)
putc(0x20,out);
if(sign) putc(0x2D,out);
else putc(0x20,out);
for(j=0;j<dec;j++)
{
Char=string[j];
putc(atoi(&Char)+0x30,out);
}
/***********
if ( *(data+i) < 10 )
for(j=0;j<7;j++)
putc(0x20,out);
putc((*(data+i))+0x30,out);
**************/



/* else if ( *(data+i) < 100 )
for(j=0;j<6;j++)
putc(0x20,out);
putc((*(data+i))+0x30,out);

*/
//fwrite(data,size*typedata,1,out);

}
putc(0x1A,out);
fclose(out);
return 1;
}




Cualquier cosa que tengas problema con este codigo mandame un mail...
aaaaaa de aqui saque la info para programar.

--------X-DBase II-O------------------------

The DBase II file format. The dBASE II file header has a fixed size of
521 bytes.

OFFSET Count TYPE Description
0000h 1 byte dBASE version, 02h = dBASE II
0001h 1 word Number of data records in file
="NDR"
0003h 1 byte Month of last update
0004h 1 byte Day of last update
0005h 1 byte Year of last update
0006h 1 word Size of each data record
="DRS"
0008h 64 rec Field descriptors
11 char ASCIIZ field name, 0Dh as first
char indicates end of list.
1 char Data type
'C' - Char
'N' - Numerical
'L' - Logical
1 byte Field length
1 word Field data address ( set in RAM )
1 byte Number of decimal places
0208h 1 byte If 0Dh, then all 32 field descriptors were used;
otherwise 00h
EXTENSION:DBF
OCCURENCES:PC
PROGRAMS:DBase
SEE ALSO:DBASE III,XBase
VALIDATION:FileSize="NDR"*"DRS"+0208h
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.