FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Problemas con tOle
Posts: 96
Joined: Tue Oct 11, 2005 05:56 AM
Problemas con tOle
Posted: Sat Sep 08, 2007 09:19 AM

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
Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
Re: Problemas con tOle
Posted: Sat Sep 08, 2007 11:03 AM

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.

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 96
Joined: Tue Oct 11, 2005 05:56 AM
Re: Problemas con tOle
Posted: Sun Sep 09, 2007 06:37 AM
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
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Problemas con tOle
Posted: Sun Sep 09, 2007 07:45 AM
Jos茅,

Incluye esta funci贸n en un PRG tuyo:
Code:
#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
Posts: 96
Joined: Tue Oct 11, 2005 05:56 AM
Problemas con tOle
Posted: Sun Sep 09, 2007 09:51 AM
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:
#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
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Problemas con tOle
Posted: Sun Sep 09, 2007 11:52 AM

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
Posts: 96
Joined: Tue Oct 11, 2005 05:56 AM
Problemas con tOle
Posted: Mon Sep 10, 2007 05:31 AM
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
Posts: 840
Joined: Thu Oct 13, 2005 07:05 PM
Problemas con tOle
Posted: Tue Sep 11, 2007 03:01 AM

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.
Posts: 96
Joined: Tue Oct 11, 2005 05:56 AM
Problemas con tOle
Posted: Tue Sep 11, 2007 05:10 AM
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

Continue the discussion