dBfast - Ayuda

 
Vista:

Ayuda

Publicado por Bizarro (4 intervenciones) el 17/12/2002 04:35:54
Que bueno encontrar algo asi en internet, estoy por pasar un programa DOS y quiero utilizar DBFAST (es mi opcion rapida), una pregunta que paso con el comando CREATE ¿cual se emplea? ese de: (ejemplo)
create TEMP.DBF
append blank
replace field_name with "ID"
replace field_type with "C"
replace field_len with 6
replace field_dec with 0
append blank
replace field_name with "IB"
replace field_type with "C"
replace field_len with 1
replace field_dec with 0
append blank
replace field_name with "CODE"
replace field_type with "C"
replace field_len with 2
replace field_dec with 0
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda

Publicado por Ramon (7 intervenciones) el 17/12/2002 19:31:04
En dBFast no hay ninguna función o comando que permita crear DBF directamente, por esa razón adjunto una función para crear DBF a través de dBFast.
Solo pido que todo aquel que la utilice y la mejore que la publique donde pueda para que todos los usuarios la puedan utilizar, ya que como debéis saber no tenemos muchos recursos para mejorar dbFast y es muy importe que todos nos ayudemos.

NOTA: esta función no esta probada.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda - Seguna Parte

Publicado por Ramon (7 intervenciones) el 17/12/2002 19:34:41
/////////////////////////////////////////////////////////////////////////////////////////
// Extraida de Clipper para dBFast.
// Adaptada por Ramon Denuc para dBFast 2.0-D2
// Función para crear Bases de Datos.
// Se necesita un archivo con el nombre s$ext.dbf o otro nombre
// Como esta función es Libre, si la utilizas y la mejoras seria bueno poderla compartir
// con más usuario de dBfast, si no te importa publícala, donde puedas o en la sección
// de dBFast de mi página. http://www.rdcsoftware.com/dbfast.htm

cMyFields = 'S_NAME;F_NAME;ADD1;ADD2;CITY;STATE;PC;COUNTRY;DX_LOC;DX_CODE;I_CODE;C_CODE;PHONE1;PHONE2;FAX;MOBILE;CL_BUS;NOTES'
cMyType = 'C;C;C;C;C;C;C;C;C;C;C;C;C;C;C;C;C;M'
cMyLen = '37;37;37;37;37;37;9;37;25;8;5;5;19;19;19;19;40;10'
cMyDec = '00;00;00;00;00;00;00;00;00;00;00;00;00;00;0;00;00;00'

SET EXCLUSIVE ON
CREATEDBASE(cMyFields,cMyType,cMyLen,cMyDec,18,'CITAS')
SET EXCLUSIVE OFF

* ====================
FUNCTION CreateDbase()
* ====================
PARAMETERS cFields,cType,cLen,cDec,nTotalFields,dbname

SET SAFETY OFF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda - Tercera Parte

Publicado por Ramon (7 intervenciones) el 17/12/2002 19:37:37
If PCOUNT() != 6
Warning('Error', 'Faltan parametros en la función.',387)
lRetValue = .F.
Elseif .Not. File('s$ext.dbf')
Warning("Error", "Archivo S$EXT.dbf no existe." +chr(13)+ "Tiene que crear el archivo S$EXT.dbf.",387)
lRetValue = .F.
Else
Declare aFieldName[nTotalFields]
Declare aFieldType[nTotalFields]
Declare aFieldLen[nTotalFields]
Declare aFieldDec[nTotalFields]
For X = 1 To nTotalFields
cGetName = Substr(cFields,1,(At(';',cFields)-1))
cGetType = Substr(cType,1,(At(';',cType)-1))
nGetLen = Val(Substr(cLen,1,(At(';',cLen)-1)))
nGetDec = Val(Substr(cDec,1,(At(';',cDec)-1)))
aFieldName[X] = cGetName
aFieldType[X] = cGetType
aFieldLen[X] = nGetLen
aFieldDec[X] = nGetDec
cFields = Substr(cFields,(At(';',cFields)+1))
cType = Substr(cType,(At(';',cType)+1))
cLen = Substr(cLen,(At(';',cLen)+1))
cDec = Substr(cDec,(At(';',cDec)+1))
Next X
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda - Cuarta Parte

Publicado por Ramon (7 intervenciones) el 17/12/2002 19:38:16
use s$ext.dbf
zap
For I = 1 To nTotalFields
cNewField = aFieldName[I]
cNewType = aFieldType[I]
nNewLen = aFieldLen[I]
nNewDec = aFieldDec[I]
append blank
repl field_name with cNewField, field_type with cNewType, field_len with nNewLen, field_dec with nNewDec
Next I
commit
create &dbname from s$ext.dbf
lRetValue = .T.
Endif
close database
SET SAFETY ON
Return(lRetValue)
Nota: Si alguien quiere que le pase el original que me lo diga
Se tiene que pegar en un archivo PRG las partes 2, 3 y 4
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda, otra forma.

Publicado por Rodrigo Dinamarca (7 intervenciones) el 17/12/2002 23:16:39
En dBFast no existe el mandato CREATE, pero existen los mandatos COPY STRUCTURE EXTENDED y CREATE FROM.

Otra alternativa quizás más sencilla para crear archivos de datos en form dinámica, es crear un archivo con dBFast (en forma interactiva) que servirá de Plantilla o molde para crear otros archivos:

Por ejemplo, crea un archivo llamado PLANTILL.DBF en la carpeta de tu aplicación. Este archivo puede contener un sólo campo (no necesitamos más)

Estructura del Archivo PLANTILL.DBF:
Campo: Nombre:PLANTILLA, Tipo:CHARACTER, Longitud:1, Decimales:0

Posteriormente haz que tu programa llame a tu archivo de plantilla y copia la estructura extendida en otro archivo, después cierra la plantilla y utiliza el nuevo archivo:

USE C:\MYAPP\PLANTILL.DBF
COPY TO C:\MYAPP\NEWARCH.DBF STRUCTURE EXTENDED
CLOSE DATA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda, otra forma (2).

Publicado por Rodrigo dinamarca (7 intervenciones) el 17/12/2002 23:24:23
Ahora usa el archivo con la estructura extendida, el cual tendrá los campos FIELD_NAME, FIELD_TYPE, FIELD_LEN y FIELD_DEC (esto también existe en clipper, fox y dbase, pero consulta el mandato "COPY STRUCTURE EXTENDED en la ayuda de dBFast") y modifica el único registro mediante el mandato REPLACE y agrega otros con APPEND BLANK

Ejemplo:
USE C:\MYAPP\NEWARCH.DBF
REPLACE FIELD_NAME WITH "NOMBRE"
REPLACE FIELD_NAME WITH "C"
REPLACE FIELD_NAME WITH 50
REPLACE FIELD_NAME WITH 0
APPED BLANK
REPLACE FIELD_NAME WITH ...
REPLACE FIELD_NAME WITH ...
REPLACE FIELD_NAME WITH ...
REPLACE FIELD_NAME WITH ...

(Recuerda que los campos MEMO y PICTURE tiene longitud fija de 10)Cierra el archivo modificado:

CLOSE DATA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda, otra forma (3).

Publicado por Rodrigo Dinamarca (7 intervenciones) el 17/12/2002 23:28:16
Ahora usa el comando CREATE FROM de la siguiente forma:

CREATE C:\MYAPP\CLIENTES.DBF FROM C:\MYAPP\NEWARCH.DBF

Ya has creado tu archivo, revisa el código porque lo escribí sobre la marcha y no lo he verificado, consulta la ayuda de dBFast para los mandatos indicados, ojalá te sirva.


Rodrigo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar