Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Problema con Dll
Message
From
20/12/2004 12:55:20
 
 
To
All
General information
Forum:
Visual FoxPro
Category:
COM/DCOM and OLE Automation
Title:
Problema con Dll
Environment versions
Visual FoxPro:
VFP 7 SP1
OS:
Windows XP SP2
Network:
Windows NT
Database:
MS SQL Server
Miscellaneous
Thread ID:
00970737
Message ID:
00970737
Views:
72
buenos dias a ver si me dan una ayuda, recuerdan que estuve preguntando por lo de los dll bueno todo bien ya he construido par de Dll y funcionan a las mil maravilla, ahora tengo un problema que he dado y dado hasta donde he podido pero que va no doy...

el problemas es el siguiente:

yo tengo en mi aplicacion un ciclo que busca datos segun la seleccion del usuario, por ejemplo estoy trabajando con unas promociones de manera centralizada, asi que el usuario escoje las companias a las que le va asignar la promocion, entonces debo buscar en una bd central de productos si el producto seleccionado en la cia X tiene el precio mayor o no existe para esa cia y asi devolver un mensaje, por eso antes de comenzar a capturar la promocion el usuario debe seleccionar a que cias aplicara la promocion.

bien cuando se selecciona una cia funciona bien el problema es cuando seleccina dos o tres, pense que era porque los objetos quedaban creados asi que les puse el release pero nada...


tengo una rutina que llama al Dll para hacer las busquedas al Sql de esta manera, no se si sea la correcta pero por el momento me esta funcionando:

desde el ciclo
***
cadbls = "exec sp_bprocia '" + Alltrim(Thisform.text4.Value) + "','" + Alltrim(empresa.codigo)+"'"
mival = midll.bpXempre(cadbls)
***
yo llamo este procedimiento de midll asi:

Procedure bpXempre(cadcon as String)
obdatos = CREATEOBJECT("dll2.dll2")
obdatos.bpXempre1(cadcon)
RELEASE obDatos
RETURN
ENDPROC


y esta es la rutina que busca en el dll2

procedure bpxempre1 (cadenasl as string)
oconeccion = createobject("adodb.connection")
oconeccion.open("Driver={SQL Server};Server=server;Database=mibd;Uid=usuario;Pwd=clave")
orecordset=createobject("adodb.recordset")
orecordset.open(cadenasl,oconeccion)
orecordset.movefirst
if used("mprecio")
select mprecio
use
endif
create table mprecio free (precio1 n(12,2) null)
if !orecordset.eof()
do while !orecordset.eof()
select mprecio
append blank
replace precio1 with orecordset.fields("precio1").value
orecordset.movenext
enddo
else
select mprecio
append blank
replace precio1 with 0.00
endif
orecordset.close()
oconeccion.close()
RELEASE orecordset
RELEASE oconeccion
cursortoxml("mprecio", "mprecio.xml", 1, 512, 0,"mprecio.xsd","")
select mprecio
use
if file("mprecio.dbf")
delete file("mprecio.dbf")
endif
return
endproc

Funciona bien pero cuando lo llamo dos veces manda un error que dice asi:

Oledispatch exception code 5 from
midll.midll midll.midll: c:\promociones\midll error line 22
-1073741819...


saludos y mil gracias...
El Hombre que dice
"No Puede Hacerse",
será sorprendido por
"Alguien que lo Haga"
Next
Reply
Map
View

Click here to load this message in the networking platform