Nuevas funciones harbour para tablas dbf

Nuevas funciones harbour para tablas dbf

Postby wyerco613 » Thu Aug 22, 2019 11:47 pm

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
"Porque Jehová da la sabiduría , Y de su boca viene el conocimiento y la inteligencia Proverbios 2:6"

FWH 1903 + Bcc7 + PellesC + XEdit easycomp613@gmail.com

Waldemar
Colbún Chile
User avatar
wyerco613
 
Posts: 79
Joined: Wed Mar 06, 2019 8:28 pm

Re: Nuevas funciones harbour para tablas dbf

Postby wyerco613 » Fri Aug 23, 2019 12:25 pm

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


Estimados Compañeros

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 easycomp613@gmail.com

Waldemar
Colbún Chile
User avatar
wyerco613
 
Posts: 79
Joined: Wed Mar 06, 2019 8:28 pm

Re: Nuevas funciones harbour para tablas dbf

Postby armando.lagunas » Fri Aug 23, 2019 12:32 pm

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
SkyPe: armando.lagunas@hotmail.com
Mail: armando.lagunas@gmail.com
User avatar
armando.lagunas
 
Posts: 346
Joined: Mon Oct 05, 2009 3:35 pm
Location: Curico-Chile

Re: Nuevas funciones harbour para tablas dbf

Postby wyerco613 » Fri Aug 23, 2019 4:58 pm

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


Estimado aquí el código:

Code: Select all  Expand view  RUN

*****************************************************************************************************************
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 ) )



Armando ya no me funciona y funciones como FErase no borran los archivos CDX que necesito.

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 easycomp613@gmail.com

Waldemar
Colbún Chile
User avatar
wyerco613
 
Posts: 79
Joined: Wed Mar 06, 2019 8:28 pm

Re: Nuevas funciones harbour para tablas dbf

Postby karinha » Fri Aug 23, 2019 5:31 pm

Code: Select all  Expand view  RUN

#Include "Directry.Ch"

   AEVAL(DIRECTORY( "CADPROPO.cdx" ),{ |aFILE| FERASE(aFILE[F_NAME]) } )
 


Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7835
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Nuevas funciones harbour para tablas dbf

Postby karinha » Fri Aug 23, 2019 5:40 pm

Code: Select all  Expand view  RUN

   DELETEFILE( "ERROR.LOG"  )
   DELETEFILE( "GILMER.LOG" )
   DELETEFILE( "TRACE.LOG"  )
   DELETEFILE( cDirExe + "GERAPNFE.LOG" )
 


Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7835
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Nuevas funciones harbour para tablas dbf

Postby carlos vargas » Fri Aug 23, 2019 6:01 pm

Esiste una forma de crear indices temporales sin necesidad de estarlos borrando luego.
INDEX 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]

como puede ver hay una clausula TEMPORARY que permite esta funcionalidad
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)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Nuevas funciones harbour para tablas dbf

Postby carlos vargas » Fri Aug 23, 2019 6:07 pm

Code: Select all  Expand view  RUN

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)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Nuevas funciones harbour para tablas dbf

Postby carlos vargas » Fri Aug 23, 2019 6:12 pm

puede usar asi...

Code: Select all  Expand view  RUN

   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)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Nuevas funciones harbour para tablas dbf

Postby karinha » Fri Aug 23, 2019 7:07 pm

.OR.

Code: Select all  Expand view  RUN

   //SET ORDER TO 0
   // MEMORY ou TEMPORARY
   OrdDestroy( "ARCHTEMP" )  // CLOSE MEMMORY/TEMPORARY
 


Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7835
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Nuevas funciones harbour para tablas dbf

Postby ACC69 » Fri Aug 23, 2019 7:54 pm

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  Expand view  RUN
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  Expand view  RUN
FERASE(S91)
     FERASE("EMP"+TSTR(nNumEmp)+"\"+Ind1Tmp1+".CDX")



Saludos .
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 30 guests