Problemas con tOle

Post Reply
User avatar
jmua
Posts: 96
Joined: Tue Oct 11, 2005 5:56 am
Contact:

Problemas con tOle

Post by jmua »

Hola foro.
Estoy cambiando una aplicacion de 16 a 32 Bits y me surge un problema
Utilizo tOle para pasar de Excel a Dbf.
al tratar de compilar me dice lo siguiente:
Error unresolved external: 'hb_vmMessage' referenced from C:\MYSISTEMA\FWH26\LIB\HBOLE|Ole2
supongo que igual la libreria tOle es vieja y necesito otra mas nueva.
Alguien me puede decir donde la bajo o si el problema es otro.
El codigo que utilizo es este:

#Include "FiveWin.Ch"
Function PasExcelToDbf(oWnd)
Local oDlg,oLbx,oFont,oBtFin
Local oExcel, oHoja, nRows, nCols
Local tCampos:={}, nRow, nCol
/* creamos conexion OLE con Excel */
oExcel := TOleAuto():New( "Excel.Application" )
? "objeto excel creado"
/*oExcel:Visible := .T. // por si quieres ver la hoja abierta*/
/* abrimos el fichero de hoja de calculo */
oExcel:WorkBooks:Open(cGetFile("*.XLS", "Seleccione Fichero"))
?"hoja abierta"
/* seleccionamos la hoja actual*/
oHoja := oExcel:Get( "ActiveSheet" )
/* contamos cuantos renglones y cuantas columnas existen con datos */
nRows := oHoja:UsedRange:Rows:Count()
nCols := oHoja:UsedRange:Columns:Count()

El caso es que 16 bits si funciona.

Gracias de antemano
José Martin Uriarte
jmuarg@yahoo.es
FiveWiDi
Posts: 910
Joined: Mon Oct 10, 2005 2:38 pm

Re: Problemas con tOle

Post by FiveWiDi »

Buenas,

Yo uso lo siguiente y por este orden en un proceso de importación:

oExcel := CreateOLEObject("Excel.Application")
OLESetProperty(oExcel,"Visible", .T.)



OLEInvoke( OLEGetProperty(oExcel,"Workbooks"), "Open", cPathxls )

oHoja := OLEGetProperty(oExcel,"ActiveSheet")


cCCC := OleGetProperty( OleGetProperty( oHoja, "Cells", nRow, 2 ), "Value" )
If Valtype( cCCC) = "U"
cCCC := "00000000000000000000"
EndIf

ctelefon := OleGetProperty( OleGetProperty( oHoja, "Cells", nRow, 6 ), "Value" )
If Valtype( ctelefon) = "U"
ctelefon := 0
ElseIf Valtype( ctelefon) = "C"
ctelefon := Val(ctelefon)
EndIf

cLOPD := OleGetProperty( OleGetProperty( oHoja, "Cells", nRow, 10 ), "Value" )
If Valtype( clopd) = "U"
clopd := .F.
Else
clopd := .T.
EndIf

cDataAlta := OleGetProperty( OleGetProperty( oHoja, "Cells", nRow, 12 ), "Value" )
If Valtype( cDataAlta ) = "U" .or. empty( cDataAlta )
cDataAlta := CToD("01/01/1900")
elseIf Valtype( cDataAlta ) = "C"
cDataAlta := CToD(cDataAlta)
EndIf

OLEInvoke( oExcel, "Quit" )

Evidentemente falta la declaración de LOCAL de las variables, así como toda la lógica WHILE para su grabación en DBF.


Todo en FWH 2007'04 y su Harbour correspondiente, sin librerías de terceros OLE.

Saludos
Carlos G.
User avatar
jmua
Posts: 96
Joined: Tue Oct 11, 2005 5:56 am
Contact:

Re: Problemas con tOle

Post by jmua »

Carlos agradezco tu respuesta, pero yo no tengo mas fwh26 asi que necesito OLE para poder hacerlo.
Puedes tu ó alguien decirme como puedo conseguirlo.
Tengo otra pregunta.
Como convierto el .RES de 16 Bits a 32 Bits

Muchas gracias
FiveWiDi wrote:Buenas,

Yo uso lo siguiente y por este orden en un proceso de importación:

oExcel := CreateOLEObject("Excel.Application")
OLESetProperty(oExcel,"Visible", .T.)



OLEInvoke( OLEGetProperty(oExcel,"Workbooks"), "Open", cPathxls )

oHoja := OLEGetProperty(oExcel,"ActiveSheet")


cCCC := OleGetProperty( OleGetProperty( oHoja, "Cells", nRow, 2 ), "Value" )
If Valtype( cCCC) = "U"
cCCC := "00000000000000000000"
EndIf

ctelefon := OleGetProperty( OleGetProperty( oHoja, "Cells", nRow, 6 ), "Value" )
If Valtype( ctelefon) = "U"
ctelefon := 0
ElseIf Valtype( ctelefon) = "C"
ctelefon := Val(ctelefon)
EndIf

cLOPD := OleGetProperty( OleGetProperty( oHoja, "Cells", nRow, 10 ), "Value" )
If Valtype( clopd) = "U"
clopd := .F.
Else
clopd := .T.
EndIf

cDataAlta := OleGetProperty( OleGetProperty( oHoja, "Cells", nRow, 12 ), "Value" )
If Valtype( cDataAlta ) = "U" .or. empty( cDataAlta )
cDataAlta := CToD("01/01/1900")
elseIf Valtype( cDataAlta ) = "C"
cDataAlta := CToD(cDataAlta)
EndIf

OLEInvoke( oExcel, "Quit" )

Evidentemente falta la declaración de LOCAL de las variables, así como toda la lógica WHILE para su grabación en DBF.


Todo en FWH 2007'04 y su Harbour correspondiente, sin librerías de terceros OLE.

Saludos
Carlos G.
José Martin Uriarte
jmuarg@yahoo.es
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

José,

Incluye esta función en un PRG tuyo:
Code:

Code: Select all

#pragma BEGINDUMP 

void hb_vmFunction( unsigned short uiParams ); 

void hb_vmMessage( unsigned short uiParams ) 
{ 
   hb_vmFunction( uiParams ); 
} 
#pragma ENDDUMP
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
jmua
Posts: 96
Joined: Tue Oct 11, 2005 5:56 am
Contact:

Post by jmua »

Gracias Antonio,
Lo probare pero ahora tengo el problema siguiente:
Utilizo el Verce 4.3 Fwh26, Pellesc, harbour 45.0
He convertido el Res de 16 a 32 Bits.
Compila bien, pero al enlazar me dice esto:

Turbo Incremental Link 5.00 Copyright (c) 1997,2000 Borland
Fatal access violation. Link terminated.


Nunca me habia pasado esto desde que empece a trabajar en 32 bits, solo ahora al migrar de 16 a 32 bits

Muchas gracias
Antonio Linares wrote:José,

Incluye esta función en un PRG tuyo:
Code:

Code: Select all

#pragma BEGINDUMP 

void hb_vmFunction( unsigned short uiParams ); 

void hb_vmMessage( unsigned short uiParams ) 
{ 
   hb_vmFunction( uiParams ); 
} 
#pragma ENDDUMP
José Martin Uriarte
jmuarg@yahoo.es
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

José,

Prueba a no enlazar el RES por si el problema se debe a un RES no correcto
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
jmua
Posts: 96
Joined: Tue Oct 11, 2005 5:56 am
Contact:

Post by jmua »

Antonio.
Tienes razon sin el RES si enlaza. Asi que al convertirlo a 32 Bits no lo hize bien.
Como lo convierto?
El Res de 16 Bits lo hize con R. Workshop y ahora uso el Pellesc.

Gracias
Antonio Linares wrote:José,

Prueba a no enlazar el RES por si el problema se debe a un RES no correcto
José Martin Uriarte
jmuarg@yahoo.es
R.F.
Posts: 840
Joined: Thu Oct 13, 2005 7:05 pm

Post by R.F. »

No uses .RES, trabaja SIEMPRE con el RC.

Abre el Workshop, abre tu RES y pon Save As.... y le das el nombre con el .RC y listo.

En tu archivo de compilacion agrega el RC y todo listo
Saludos
R.F.
User avatar
jmua
Posts: 96
Joined: Tue Oct 11, 2005 5:56 am
Contact:

Post by jmua »

Rene.
Esto que dices ya lo hice y pasa igual, sigue dando el mismo error al enlazar.
Ademas en RC ocupa mas mas que en RES.
Gracias
En RES ocupa 2.237 KB y
En RC ocupa 7.124 KB
Probare convirtiendo en DLL
Gracias
RF wrote:No uses .RES, trabaja SIEMPRE con el RC.

Abre el Workshop, abre tu RES y pon Save As.... y le das el nombre con el .RC y listo.

En tu archivo de compilacion agrega el RC y todo listo
José Martin Uriarte
jmuarg@yahoo.es
Post Reply