SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: 9tnix en Viernes 23 de Febrero de 2007, 00:34
-
Hola amigos
Tengo el siguiente problema y necesito su ayuda. El problema es: Cuando hago el binding a mis controles TextBox el VB se cierra inesperadamente, a continuacion el codigo.
Tengo 2 Proyectos:
Proyecto DLL ActiveX
Uso como propiedad: MultiUse
y Actua como Origen de Datos
ClsSesion : Maneja la conexion al servidor SQL
ClsCargo : Maneja el mantenimiento de la tabla Cargo
'En la clase ClsSesion
Private cnnSesion as ADODB.Connection
Public Property Get Sesion() As ADODB.Connection
Set Sesion=cnnSesion
End Property
'En la clase ClsCargo
'Como es origen de datos saben que hay un procedimiento
'que obtiene el objeto recordset y su codigo es:
Private WithEvents rstCargo As ADODB.Recordset
Private cnnSesion As ADODB.Connection
Private Sub Class_GetDataMember(DataMember As String, Data As Object)
Set Data = RstCargo
End Sub
Private sub Class_Initialize()
Set rstCago=New ADODB.Recordset
End Sub
Private sub Class_Terminate()
If rstCargo.State = adStateOpen Then rstCargo.Close
Set rstCargo = Nothing
End Sub
Public Property Set Sesion(cnnParam1 As ADODB.Connection) As ADODB.Connection
Set cnnSesion = cnnParam1
End Property
Public Function Buscar(strQry as String) As Byte
Buscar = 0
With rstCargo
.Open strQry, Sesion, 2,3,1
If Not (.BOF() And .EOF()) Then
Buscar = 1
End If
End With
End Sub
Proyecto EXE Estandar
Tengo un form que es un mantenimiento de Cargo aqui tengo lo sgte:
'Declaraciones Generales
Private cCargo As New ClsCargo
Private oBind as BindingCollection 'variable para el bindeo no recuerdo exactamente como se declara
Form_Load
Set cCargo.Sesion = cSesion
cmdBuscar_Click
If Buscar("Select * From Cargo") = 1 Then
Bindear
End If
Private Sub Bindear
'Aqui hago binding a mis controles
....
Set oBind.DataSource = cCargo < Esta linea es la del error y VB se cierra
inesperadamente el proyecto EXE Estandar
End Sub
Espero me puedan ayudar a encontrar la falla, ya busque en la ayuda y bueno no logro dar con la solucion, quiza he pasado mucho tiempo frente a la computadora jejeje :) bueno espero su colaboracion.
Att. zeekel
-
Vamos gente
Se que pueden ayudarme a esclarecer cual es la falla, hasta ahora no logro dar con la falla que produce cuando intento acceder al origen de datos a traves de la clase clsCargo.
Posteare el codigo completo para que lo bajen y puedan echarle un vistazo, lastima que en este momento no lo tenga a la mano.
Sigo esperando su colaboracion
Saludos
zeekel ®
-
Saludos amigos
Pues encontre la solucion a mi problema despues de mucho intentar jejeje bueno pues aqui lo comparto con uds se trata de lo siguiente:
Les hable que tenia 2 Proyectos: 1 EXE Estandar y 1 DLL ActiveX
Cuando ejecutaba el EXE Estandar y el DLL ActiveX cada uno en un proyecto separado, pues sucede que todo me funcionaba bien excepto que cuando trataba de recuperar los datos de mi clase que actuaba como origen de datos no se podia. Sucede que se me ocurrio agregar el proyecto DLL Active X a mi proyecto EXE Estandar y lo ejecute Zaz que creen FUNCIONO mi clase origen de datos que no me devolvia los datos ahora ya lo hacia, lo que aun no logro esclarecer es porque no se puede lograr lo mismo cuando ejecuto los proyectos por separado. Por favor si alguien puede resolver mi duda lo agradeceria bastante, por el momento ya logre lo que no podia pero aun esta en codigo la prueba realmente de fuego sera cuando sea implementado en la empresa a donde va a parar mi programa.
Bueno eso es todo compañeros, espero que este aporte sea de utilidad para uds
Saludos
zeekel
PD: El code lo posteare en cuanto corrija algunas cosas como para dejar un ejemplo funcional en su totalidad. :D
-
Saludos compañeros del foro
Aqui dejo el programa que intentaba hacer, espero que este pequeño proyecto acerca de el uso de clases que sean origenes de datos les sirva y si hay alguna otra idea la puedan postear para compartirla.
Gracias compañeros
Saludos zeekel
PD: El proyecto es un grupo de proyectos esta formado por 1 EXE Estandar y 1 DLL ActiveX asi que no lo carguen por separado usa una base de datos de access.