Nuevas funciones harbour para tablas dbf
Nuevas funciones harbour para tablas dbf
Estimados compañeros
Esto viene de la pregunta anterior (ERROR/1003 cFile), me dijeron que existen nuevas funciones (que no conozco):
Necesito crear una tabla con fecha ejemplo: FI032019.DBF luego crear 2 indices cdx RUT y NOMBRE (la fecha es para asociarla con otra tabla que fue pasada de EXCEL a DBF) y debo poder borrar los indices y volver a crearlos (osea el archivo FI032019.CDX) pero debo conservar ta TABLA DBF ya que se puede utilizar más adelante. Cuando utilizaba un puro nombre FINAL.DBF no tenia problemas pero ahora que debo crear tablas de diferente nombre se cae en diferentes partes y las funciones que ocupaba antes no funcionan como FERASE. Si alguien puede ayudar en esto por favor es urgente.
Desde ya muchas gracias.
Waldemar
Esto viene de la pregunta anterior (ERROR/1003 cFile), me dijeron que existen nuevas funciones (que no conozco):
Necesito crear una tabla con fecha ejemplo: FI032019.DBF luego crear 2 indices cdx RUT y NOMBRE (la fecha es para asociarla con otra tabla que fue pasada de EXCEL a DBF) y debo poder borrar los indices y volver a crearlos (osea el archivo FI032019.CDX) pero debo conservar ta TABLA DBF ya que se puede utilizar más adelante. Cuando utilizaba un puro nombre FINAL.DBF no tenia problemas pero ahora que debo crear tablas de diferente nombre se cae en diferentes partes y las funciones que ocupaba antes no funcionan como FERASE. Si alguien puede ayudar en esto por favor es urgente.
Desde ya muchas gracias.
Waldemar
"Porque Jehová da la sabiduría , Y de su boca viene el conocimiento y la inteligencia Proverbios 2:6"
FWH 1903 + Bcc7 + PellesC + XEdit
Waldemar
Colbún Chile
FWH 1903 + Bcc7 + PellesC + XEdit
Waldemar
Colbún Chile
Re: Nuevas funciones harbour para tablas dbf
Estimados Compañeroswyerco613 wrote:Estimados compañeros
Esto viene de la pregunta anterior (ERROR/1003 cFile), me dijeron que existen nuevas funciones (que no conozco):
Necesito crear una tabla con fecha ejemplo: FI032019.DBF luego crear 2 indices cdx RUT y NOMBRE (la fecha es para asociarla con otra tabla que fue pasada de EXCEL a DBF) y debo poder borrar los indices y volver a crearlos (osea el archivo FI032019.CDX) pero debo conservar ta TABLA DBF ya que se puede utilizar más adelante. Cuando utilizaba un puro nombre FINAL.DBF no tenia problemas pero ahora que debo crear tablas de diferente nombre se cae en diferentes partes y las funciones que ocupaba antes no funcionan como FERASE. Si alguien puede ayudar en esto por favor es urgente.
Desde ya muchas gracias.
Waldemar
Disculpa que insista pero veo que varios han visto el asunto pero nadie comenta quizás la pregunta es muy fácil, disculpen pero no programo hace muchos años así que me falta mucho para ponerme al día y debo entregar un programa para ayer (muchos estamos en ese caso).
Agradeciendo su aporte, muchas gracias.
Waldemar
"Porque Jehová da la sabiduría , Y de su boca viene el conocimiento y la inteligencia Proverbios 2:6"
FWH 1903 + Bcc7 + PellesC + XEdit
Waldemar
Colbún Chile
FWH 1903 + Bcc7 + PellesC + XEdit
Waldemar
Colbún Chile
- armando.lagunas
- Posts: 340
- Joined: Mon Oct 05, 2009 3:35 pm
- Location: Curico-Chile
- Contact:
Re: Nuevas funciones harbour para tablas dbf
waldemar:
coloca el trozo de programa en donde realizas la acción, es mas fácil ver el código y sugerir correcciones que entender lo que quieres hacer.
espero tu respuesta
Saludos
coloca el trozo de programa en donde realizas la acción, es mas fácil ver el código y sugerir correcciones que entender lo que quieres hacer.
espero tu respuesta
Saludos
Re: Nuevas funciones harbour para tablas dbf
Estimado aquí el código:armando.lagunas wrote:waldemar:
coloca el trozo de programa en donde realizas la acción, es mas fácil ver el código y sugerir correcciones que entender lo que quieres hacer.
espero tu respuesta
Saludos
Code: Select all
*****************************************************************************************************************
antes lo hacia para una pura tabla y ahí funcionaba bien pero con diferentes tablas se cae :
*****************************************************************************************************************
//FErase( ".\TMP\FINAL.DBF" )
//FErase(".\TMP\FINAL.CDX")
aCampos := { { "NUM","N",4,0 }, { "RUT","C",10,0 }, { "NOMBRE","C",40,0 } }
nLargo := Len( aBen ) // aBen?? que es?
FOR i = 1 TO nLargo
Aadd( aCampos, { aBen[i], "N", 10, 0 } )
NEXT
Aadd( aCampos, { "SALDO", "N", 10, 0 } )
Aadd( aCampos, { "TOTAL", "N", 10, 0 } )
DBCreate( ".\FINAL\" + cFile, aCampos )
//DBCreate(".\FINAL\"+cFile+".DBF",aCampos)
MsgInfo( cFile )
DBUSEAREA( .T. , , ".\FINAL\" + cFile )
//DBUSEAREA(.T.,,".\FINAL\"+cFile+".DBF")
ordCreate( ".\FINAL\" + cFile, "RUT", "(cFile)->RUT", {|| ( cFile )->RUT } )
ordCreate( ".\FINAL\" + cFile, "NOMBRE", "(cFile)->NOMBRE", {|| ( cFile )->NOMBRE } )
( cFile )->( OrdSetFocus( 2 ) )
Saludos Waldemar
"Porque Jehová da la sabiduría , Y de su boca viene el conocimiento y la inteligencia Proverbios 2:6"
FWH 1903 + Bcc7 + PellesC + XEdit
Waldemar
Colbún Chile
FWH 1903 + Bcc7 + PellesC + XEdit
Waldemar
Colbún Chile
Re: Nuevas funciones harbour para tablas dbf
Code: Select all
#Include "Directry.Ch"
AEVAL(DIRECTORY( "CADPROPO.cdx" ),{ |aFILE| FERASE(aFILE[F_NAME]) } )
João Santos - São Paulo - Brasil
Re: Nuevas funciones harbour para tablas dbf
Code: Select all
DELETEFILE( "ERROR.LOG" )
DELETEFILE( "GILMER.LOG" )
DELETEFILE( "TRACE.LOG" )
DELETEFILE( cDirExe + "GERAPNFE.LOG" )
João Santos - São Paulo - Brasil
- carlos vargas
- Posts: 1421
- Joined: Tue Oct 11, 2005 5:01 pm
- Location: Nicaragua
Re: Nuevas funciones harbour para tablas dbf
Esiste una forma de crear indices temporales sin necesidad de estarlos borrando luego.
yo lo use mucho cuando usaba sqlrrd el cual me permitia traerme en una tabla dbf temporal los registros de una consulta, en esa tabla craba los indices termporales...
como puede ver hay una clausula TEMPORARY que permite esta funcionalidadINDEX ON <indexExpr> ;
[TAG <cIndexName>] ;
[TO <cIndexFile>] ;
[FOR <lForCondition>] ;
[WHILE <lWhileCondition>] ;
[ALL] ;
[NEXT <nNumber>] ;
[RECORD <nRecNo>] ;
[REST] ;
[EVAL <bBlock>] ;
[EVERY <nInterval>] ;
[UNIQUE] ;
[ASCENDING|DESCENDING] ;
[USECURRENT] ;
[ADDITIVE] ;
[CUSTOM] ;
[NOOPTIMIZE] ;
[TEMPORARY] ;
[USEFILTER] ;
[EXCLUSIVE]
yo lo use mucho cuando usaba sqlrrd el cual me permitia traerme en una tabla dbf temporal los registros de una consulta, en esa tabla craba los indices termporales...
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
Carlos Vargas
Desde Managua, Nicaragua (CA)
- carlos vargas
- Posts: 1421
- Joined: Tue Oct 11, 2005 5:01 pm
- Location: Nicaragua
Re: Nuevas funciones harbour para tablas dbf
Code: Select all
FUNCTION DBCreateMEM( cFile, aStruct, cRDD, lKeepOpen, cAlias )
LOCAL lCreateDBMem := TRUE
DEFAULT cRDD := "DBFCDX", lKeepOpen := TRUE, cAlias := "MEMTMP"
TRY
DBCreate( "mem:" + cFile, aStruct, cRDD, lKeepOpen, cAlias )
CATCH
lCreateDBMem := FALSE
END
RETURN lCreateDBMem
/*-------------------------------------------------------------------------------------------------*/
PROCEDURE DBDropMEM( cFile )
RETURN DBDrop( "mem:" + cFile )
/*-------------------------------------------------------------------------------------------------*/
FUNCTION TmpCursorName()
RETURN "_" + Upper( HB_NumToHex( HB_MilliSeconds(), 10 ) )
/*-------------------------------------------------------------------------------------------------*/
#ifdef __XHARBOUR__
#pragma BEGINDUMP
#include <windows.h>
#include "hbapi.h"
#include "hbdate.h"
HB_FUNC( HB_MILLISECONDS )
{
hb_retnint( ( HB_MAXINT ) hb_dateMilliSeconds() );
}
#pragma ENDDUMP
#endif
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
Carlos Vargas
Desde Managua, Nicaragua (CA)
- carlos vargas
- Posts: 1421
- Joined: Tue Oct 11, 2005 5:01 pm
- Location: Nicaragua
Re: Nuevas funciones harbour para tablas dbf
puede usar asi...
Code: Select all
REQUEST DBFCDX
PROCEDURE Main()
LOCAL cTable := TmpCursorName()
LOCAL aStruct := { ;
{ "MYCHAR", "C", 25, 0 }, ;
{ "MYNUM" , "N", 8, 0 }, ;
{ "MYDATE" , "D", 8, 0 }, ;
{ "MYLOGICAL" , "L", 1, 0 }, ;
{ "MYMEMO1" , "M", 10, 0 }, ;
{ "MYMEMO2" , "M", 10, 0 } ;
}
DbCreate( cTable, aStruct, "DBFCDX", .T., "MYALIAS" )
INDEX ON MYCHAR TAG MYCHAR TEMPORARY
Browse()
SET INDEX TO //index close and delete
RETURN
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
Carlos Vargas
Desde Managua, Nicaragua (CA)
Re: Nuevas funciones harbour para tablas dbf
.OR.
Saludos.
Code: Select all
//SET ORDER TO 0
// MEMORY ou TEMPORARY
OrdDestroy( "ARCHTEMP" ) // CLOSE MEMMORY/TEMPORARY
João Santos - São Paulo - Brasil
Re: Nuevas funciones harbour para tablas dbf
wyerco613 wrote:Estimados compañeros
Esto viene de la pregunta anterior (ERROR/1003 cFile), me dijeron que existen nuevas funciones (que no conozco):
Necesito crear una tabla con fecha ejemplo: FI032019.DBF luego crear 2 indices cdx RUT y NOMBRE (la fecha es para asociarla con otra tabla que fue pasada de EXCEL a DBF) y debo poder borrar los indices y volver a crearlos (osea el archivo FI032019.CDX) pero debo conservar ta TABLA DBF ya que se puede utilizar más adelante. Cuando utilizaba un puro nombre FINAL.DBF no tenia problemas pero ahora que debo crear tablas de diferente nombre se cae en diferentes partes y las funciones que ocupaba antes no funcionan como FERASE. Si alguien puede ayudar en esto por favor es urgente.
Desde ya muchas gracias.
Waldemar
Hola mi estimado yo lo hago de esta manera al crear mis archivos emporales...te paso el codigo sencillo...
Code: Select all
FIELD CUENTAS, SEGNEG, REFERE
CtaIni := SUBS(CtaInif,1,4)+SUBS(CtaInif,6,4)+SUBS(CtaInif,11,4)+SUBS(CtaInif,16,4)
CtaFin := SUBS(CtaFinf,1,4)+SUBS(CtaFinf,6,4)+SUBS(CtaFinf,11,4)+SUBS(CtaFinf,16,4)
cMA_Ini := SUBS(nMA_Ini,3,2)+SUBS(nMA_Ini,1,2)
cMA_Fin := SUBS(nMA_Fin,3,2)+SUBS(nMA_Fin,1,2)
***********************************************************************************
*----- Traspasando cuentas integración de saldos general en archivo temporal -----*
***********************************************************************************
S91 := "EMP"+TSTR(xEMP)+TRIM("\R_INTS"+nStation)+".DBF"
Ind1Tmp1:= "R_INTS"+nStation
Ind1Tmp2:= "R_INTSN"
nReg := 1
IF FILE(S91)
*S91->(DbCloseArea())
FERASE(S91)
FERASE("EMP"+TSTR(nNumEmp)+"\"+Ind1Tmp1+".CDX")
ENDIF
IF !FILE(S91)
CreaDbf1 := {{"TIPO " , "C" , 2 , 0 } ,; // 1
{"NUMPOL " , "N" , 5 , 0 } ,; // 2
{"FHAMOV " , "D" , 8 , 0 } ,; // 3
{"CUENTAS" , "C" , 16 , 0 } ,; // 4
{"SEGNEG" , "N" , 4 , 0 } ,; // 5
{"REFERE " , "C" , 10 , 0 } ,; // 6
{"CONCEP " , "C" , 60 , 0 } ,; // 7
{"SALCARG" , "N" , 12 , 2 } ,; // 8
{"SALCRED" , "N" , 12 , 2 } ,; // 9
{"SALDOS" , "N" , 12 , 2 } ,; //10 Sdo de factura a pagar
{"IMPBS1" , "N" , 12 , 2 } ,; //11 Base 1
{"TASA1" , "N" , 12 , 2 } ,; //12 Tasa 1
{"IVA_1" , "N" , 12 , 2 } ,; //13 IVA 10%
{"IMPBS2" , "N" , 12 , 2 } ,; //14 Base 2
{"TASA2" , "N" , 12 , 2 } ,; //15 Tasa 2
{"IVA_2" , "N" , 12 , 2 } ,; //16 IVA 15%
{"T_0" , "N" , 12 , 2 } ,; //17 Tasa 0
{"T_EXENT" , "N" , 12 , 2 } ,; //18 Exento
{"OTROS" , "N" , 12 , 2 } ,; //19 Otros
{"IMPBS3" , "N" , 12 , 2 } ,; //20 Otras tasas
{"T_Otras" , "N" , 12 , 2 } ,; //21 IVA x 0
{"RET_IVA" , "N" , 12 , 2 } ,; //22 Ret IVA
{"RET_ISR" , "N" , 12 , 2 } ,; //23 Ret ISR
{"TOTFAC" , "N" , 12 , 2 } ,; //24 Importe total por factura
{"REG " , "N" , 3 , 0 }} //25
DbCreate(S91,CreaDbf1)
USE (S91) ALIAS S91 EXCLUSIVE // NEW SHARED
INDEX ON CUENTAS+REFERE TAG (Ind1Tmp1) FOR !DELETED()
INDEX ON STR(SEGNEG,4)+CUENTAS+REFERE TAG (Ind1Tmp2) FOR !DELETED()
S91->(DbSetIndex(Ind1Tmp1))
S91->(OrdSetFocus(1))
ELSE
USE (S91) ALIAS S91 EXCLUSIVE // NEW SHARED
ZAP
INDEX ON CUENTAS+REFERE TAG (Ind1Tmp1) FOR !DELETED()
INDEX ON STR(SEGNEG,4)+CUENTAS+REFERE TAG (Ind1Tmp2) FOR !DELETED()
S91->(DbSetIndex(Ind1Tmp1))
S91->(OrdSetFocus(1))
ENDIF
Y aqui al final puedes cerrar la base de datos CloseDbf() tu propia funcion y eliminar tus archivos.
Es opcional a tu gusto mi estimado.
Code: Select all
FERASE(S91)
FERASE("EMP"+TSTR(nNumEmp)+"\"+Ind1Tmp1+".CDX")
Saludos .