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"