Error en fw_adoexporttodbf con campos autoincrementales

Error en fw_adoexporttodbf con campos autoincrementales

Postby mariordz » Fri Nov 29, 2019 7: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: Select all  Expand view  RUN
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: Select all  Expand view  RUN
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.
User avatar
mariordz
 
Posts: 131
Joined: Tue Dec 26, 2006 4:50 pm
Location: Ciudad de México

Re: Error en fw_adoexporttodbf con campos autoincrementales

Postby nageswaragunupudi » Sat Nov 30, 2019 6: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: Select all  Expand view  RUN

      if a[ 2 ] == '+'
         a[ 3 ]   := Min( 10, a[ 3 ] )
      elseif a[ 2 ] == 'N'
 


Modify this code as:
Code: Select all  Expand view  RUN

      if a[ 2 ] == '+'
         a[ 3 ]   := Min( 10, a[ 3 ] )
         a[ 2 ]   := "N"
      elseif a[ 2 ] == 'N'
 
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10681
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Error en fw_adoexporttodbf con campo autoincremental (Resuel

Postby mariordz » Mon Dec 02, 2019 3:27 pm

Thank you Mr. Rao, it worked.
User avatar
mariordz
 
Posts: 131
Joined: Tue Dec 26, 2006 4:50 pm
Location: Ciudad de México


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 46 guests