FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Error en fw_adoexporttodbf con campos autoincrementales
Posts: 131
Joined: Tue Dec 26, 2006 04:50 PM
Error en fw_adoexporttodbf con campos autoincrementales
Posted: Fri Nov 29, 2019 07:23 PM
Buenas tardes compañeros del foro, cuando transfiero un recordset de sql hacía DBF usando la función fw_adoexporttodbf(oRs0,dbtmp1,.f.) me surgió un detalle del que quisiera saber si me pueden ayudar, muchas de mis tablas tienen un campo autoincremental por ejemplo CampoIndex, al hacer la consulta a sql con las instrucciones:

Code (fw): Select all Collapse
cCadsql0:="select * from tIncide "
oRs0 := TOleAuto():New( "ADODB.Recordset" )
oRs0:CursorType := 1 // opendkeyset
oRs0:CursorLocation := 3 // local cache
oRs0:LockType := 3 // lockoportunistic
TRY
   oRS0:Open( cCadsql0,'Provider='+xPROVIDER+';Data Source='+xSOURCE+';Initial Catalog='+xCATALOGA+';User Id='+xUSERID+'Password='+xPASSWORD )

   CATCH oErr
   MsgInfo( "Error al consultar datos" )
   RETURN(.F.)
END TRY
fw_adoexporttodbf(oRs0,dbtmp1,.f.)


El DBF generado contiene el campo CampoIndex, pero me da un valor nuevo para cada registro del recordset, no el valor que originalmente se tenía grabado en la tabla, para solventarlo ha tenido que generar un campo adicional donde hago un Cast del campoIndex

Code (fw): Select all Collapse
select *,cast(campoIndice as int) Dexri


Solo así obtengo el valor real almacenado en la tabla, la pregunta es como podría hacer mi consulta sin tener que agregar este campo adicional?

Como dato adicional les comento por si a alguien le pasa, cuando usas la función fw_adoexporttodbf, todos los campos del recordset deben tener un nombre, de otra forma no se puede generar el DBF y les manda el error "area de trabajo no usada", se que parecerá obvio, pero a mi me pasó y no tenía idea de cual era el problema, hasta que me di cuenta que uno de mis campos era calculado y no le había definido un nombre al mismo, por lo tanto no podía generar el DBF.
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Error en fw_adoexporttodbf con campos autoincrementales
Posted: Sat Nov 30, 2019 06:16 AM
Solo así obtengo el valor real almacenado en la tabla, la pregunta es como podría hacer mi consulta sin tener que agregar este campo adicional?


Please make this change in the function FW_AdoExportToDBF(...) in \fwh\source\function\adofuncs.prg.

Please locate these lines in the function
Code (fw): Select all Collapse
      if a[ 2 ] == '+'
         a[ 3 ]   := Min( 10, a[ 3 ] )
      elseif a[ 2 ] == 'N'


Modify this code as:
Code (fw): Select all Collapse
      if a[ 2 ] == '+'
         a[ 3 ]   := Min( 10, a[ 3 ] )
         a[ 2 ]   := "N"
      elseif a[ 2 ] == 'N'
Regards



G. N. Rao.

Hyderabad, India
Posts: 131
Joined: Tue Dec 26, 2006 04:50 PM
Error en fw_adoexporttodbf con campo autoincremental (Resuel
Posted: Mon Dec 02, 2019 03:27 PM

Thank you Mr. Rao, it worked.

Continue the discussion