FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Nuevas funciones harbour para tablas dbf
Posts: 79
Joined: Wed Mar 06, 2019 08:28 PM
Nuevas funciones harbour para tablas dbf
Posted: 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
Posts: 79
Joined: Wed Mar 06, 2019 08:28 PM
Re: Nuevas funciones harbour para tablas dbf
Posted: 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
Posts: 346
Joined: Mon Oct 05, 2009 03:35 PM
Re: Nuevas funciones harbour para tablas dbf
Posted: 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
Posts: 79
Joined: Wed Mar 06, 2019 08:28 PM
Re: Nuevas funciones harbour para tablas dbf
Posted: Fri Aug 23, 2019 04: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 (fw): Select all Collapse
*****************************************************************************************************************
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
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Nuevas funciones harbour para tablas dbf
Posted: Fri Aug 23, 2019 05:31 PM
Code (fw): Select all Collapse
#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
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Nuevas funciones harbour para tablas dbf
Posted: Fri Aug 23, 2019 05:40 PM
Code (fw): Select all Collapse
   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
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Nuevas funciones harbour para tablas dbf
Posted: Fri Aug 23, 2019 06: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)
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Nuevas funciones harbour para tablas dbf
Posted: Fri Aug 23, 2019 06:07 PM
Code (fw): Select all Collapse
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)
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Nuevas funciones harbour para tablas dbf
Posted: Fri Aug 23, 2019 06:12 PM
puede usar asi...

Code (fw): Select all Collapse
   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)
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Nuevas funciones harbour para tablas dbf
Posted: Fri Aug 23, 2019 07:07 PM
.OR.

Code (fw): Select all Collapse
   //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
Posts: 632
Joined: Tue Dec 12, 2006 07:34 PM
Re: Nuevas funciones harbour para tablas dbf
Posted: Fri Aug 23, 2019 07: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 (fw): Select all Collapse
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 (fw): Select all Collapse
FERASE(S91)
     FERASE("EMP"+TSTR(nNumEmp)+"\"+Ind1Tmp1+".CDX")



Saludos .

Continue the discussion