Error en fw_adoexporttodbf con campos autoincrementales

Post Reply
User avatar
mariordz
Posts: 127
Joined: Tue Dec 26, 2006 4:50 pm
Location: Ciudad de México

Error en fw_adoexporttodbf con campos autoincrementales

Post by mariordz »

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

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

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 _ 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
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: Error en fw_adoexporttodbf con campos autoincrementales

Post by nageswaragunupudi »

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

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

Code: Select all

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

G. N. Rao.
Hyderabad, India
User avatar
mariordz
Posts: 127
Joined: Tue Dec 26, 2006 4:50 pm
Location: Ciudad de México

Error en fw_adoexporttodbf con campo autoincremental (Resuel

Post by mariordz »

Thank you Mr. Rao, it worked.
Post Reply