Espero me puedas ayudar
Tengo un problema, espero me puedas ayudar... Tengo una base de datos en mysql, realizo una conexión a ella mediante myodbc, la conexión a esta no me da problemas, el problema radica en que los cursores un cursor que abro dentro del formulario siempre me devuelve BOF = TRUE Y EOF = TRUE AUNQUE EXISTAN DATOS DENTRO DE LA TABLA SOBRE LA QUE HAGO EL CURSOR, no se si es las propiedades del cursor o que, he intentado de todas las formas y nada,
mi correo es [email protected], si puedes enviarme el tuyo para explicarte mejor, y enviarte el fuente te lo agradecería, tengo como dos semanas trancado por ese problema, de todas maneras si puedes contestarme por este medio seria de gran ayuda...
Este es el código que utilizo para ver si le encuentras detalles al momento de abrir el curor o cualquier otra cosa:
Public WithEvents Configuracion As ADODB.Recordset
Private IdVida As Integer
Dim MiError As ADODB.error
Dim v_Des As String
Public mNumero As String
Public mFecha As String
Public nTipoD As String
Dim sWhere As String
Private Sub Form_Load()
On Error GoTo CONEXION
Dim sSql As String
Set DB = New ADODB.Connection
Set Configuracion = New ADODB.Recordset
'conecta con la base de datos formara parte del modulo
DB.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" _
& "SERVER=localhost;" _
& "DATABASE=registro;" _
& "UID=root;" _
& "PWD=;" _
& "OPTION=" & 1 + 2 + 8 + 32 + 2048 + 16384
DB.Open
EstadoOpcion False, 0
' indica el tipo de cursor del recordset
With Cb_identificacion
.AddItem ("Cedula")
.AddItem ("Pasaporte")
.AddItem ("Sin Identificación")
End With
'''ABRIR CONFIGURACION PARA HACER LAS PRUEBAS DEL FORM PARA LAS VARIABLES
'''QUE SE UTILIZAN AL GUARDAR
sSql = "SELECT * FROM Configuracion"
With Configuracion
.Open sSql, DB
gv_jefe = !Cfg_Jefe
gv_prefe = !Cfg_prefe
gv_secre = !cfg_secre
'gv_Autor = !Cfg_Autor
gv_gaceta = !Cfg_Gaceta
gv_Fechag = !Cfg_FecGaceta
gv_res = !Cfg_Res
gv_Fecres = !Cfg_FecRes
gv_encargado = !Cfg_encargado
End With
Configuracion.Close
Set Configuracion = Nothing
Set Vida = New ADODB.Recordset
sSql = "SELECT * FROM Vida"
With Vida
.CursorType = adOpenKeyset
.CursorLocation = adUseClient
.Open sSql, DB, adOpenDynamic, adLockOptimistic
End With
'''''''''''''''''' envia mes de error en caso de ocurrir
CONEXION:
If Not Err.Number = Empty Then
For Each MiError In DB.Errors
MsgBox ("Error VB:" & MiError.Number & vbCrLf _
& "Error Oracle:" & MiError.NativeError & vbCrLf _
& "Error SQL:" & MiError.SQLState & vbCrLf _
& "Generado Por:" & MiError.Source & vbCrLf _
& "Descripción:" & MiError.Description)
Next
End If
End Sub
Private Sub Guardar()
On Error GoTo Mensaje
IdVida = tx_control.Text
With Vida
' aqui es donde nunca se cumple
If Not .BOF And Not .EOF Then
.Find "fe_corr = " & IdVida
End If
If Not .EOF Then
asignar 'carga los datos
'!usr_mod
!fe_fecmod = Now
.Update
tx_control.Text = !fe_corr
StatusBar1.Panels(3).Text = "Registro Modificado....."
Else
.AddNew
!fe_fecha = Now
!fe_ano = Year(Now)
Call asignar 'carga los datos
.Update
tx_control.Text = !fe_corr
' INCREMENTAR NRO HASTA QUE CAMBIE DE AÑO
Set ConfActas = New ADODB.Recordset
With ConfActas
.CursorLocation = adUseClient
.CursorType = adOpenDynamic
.LockType = adLockOptimistic
.Open "Conf_Actas", DB
.AddNew
!nro_acta = tx_control.Text '"53" 'Tx_nro.Text ' ESTAS VARIABLES SE CARGARAN EN LA
!ano = Tx_ano.Text 'PANTALLA PRINCIPAL
!tipo_doc = "V"
!jefe = gv_jefe
!secre = gv_secre
!prefectura = gv_prefe
!Gaceta = gv_gaceta
!fec_gaceta = gv_Fechag
!resolucion = gv_res
!fec_resolucion = gv_Fecres
!encargado = gv_encargado
.Update
.Close
Set ConfActas = Nothing
End With
StatusBar1.Panels(3).Text = "Registro Añadido....."
End If
End With
Opcion(1).Enabled = True
Menu(1).Enabled = False
Mensaje:
If Not Err.Number = Empty Then
For Each MiError In DB.Errors
MsgBox ("Error VB:" & MiError.Number & vbCrLf _
& "Error Oracle:" & MiError.NativeError & vbCrLf _
& "Error SQL:" & MiError.SQLState & vbCrLf _
& "Generado Por:" & MiError.Source & vbCrLf _
& "Descripción:" & MiError.Description)
Next
End If
End Sub
mi correo es [email protected], si puedes enviarme el tuyo para explicarte mejor, y enviarte el fuente te lo agradecería, tengo como dos semanas trancado por ese problema, de todas maneras si puedes contestarme por este medio seria de gran ayuda...
Este es el código que utilizo para ver si le encuentras detalles al momento de abrir el curor o cualquier otra cosa:
Public WithEvents Configuracion As ADODB.Recordset
Private IdVida As Integer
Dim MiError As ADODB.error
Dim v_Des As String
Public mNumero As String
Public mFecha As String
Public nTipoD As String
Dim sWhere As String
Private Sub Form_Load()
On Error GoTo CONEXION
Dim sSql As String
Set DB = New ADODB.Connection
Set Configuracion = New ADODB.Recordset
'conecta con la base de datos formara parte del modulo
DB.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" _
& "SERVER=localhost;" _
& "DATABASE=registro;" _
& "UID=root;" _
& "PWD=;" _
& "OPTION=" & 1 + 2 + 8 + 32 + 2048 + 16384
DB.Open
EstadoOpcion False, 0
' indica el tipo de cursor del recordset
With Cb_identificacion
.AddItem ("Cedula")
.AddItem ("Pasaporte")
.AddItem ("Sin Identificación")
End With
'''ABRIR CONFIGURACION PARA HACER LAS PRUEBAS DEL FORM PARA LAS VARIABLES
'''QUE SE UTILIZAN AL GUARDAR
sSql = "SELECT * FROM Configuracion"
With Configuracion
.Open sSql, DB
gv_jefe = !Cfg_Jefe
gv_prefe = !Cfg_prefe
gv_secre = !cfg_secre
'gv_Autor = !Cfg_Autor
gv_gaceta = !Cfg_Gaceta
gv_Fechag = !Cfg_FecGaceta
gv_res = !Cfg_Res
gv_Fecres = !Cfg_FecRes
gv_encargado = !Cfg_encargado
End With
Configuracion.Close
Set Configuracion = Nothing
Set Vida = New ADODB.Recordset
sSql = "SELECT * FROM Vida"
With Vida
.CursorType = adOpenKeyset
.CursorLocation = adUseClient
.Open sSql, DB, adOpenDynamic, adLockOptimistic
End With
'''''''''''''''''' envia mes de error en caso de ocurrir
CONEXION:
If Not Err.Number = Empty Then
For Each MiError In DB.Errors
MsgBox ("Error VB:" & MiError.Number & vbCrLf _
& "Error Oracle:" & MiError.NativeError & vbCrLf _
& "Error SQL:" & MiError.SQLState & vbCrLf _
& "Generado Por:" & MiError.Source & vbCrLf _
& "Descripción:" & MiError.Description)
Next
End If
End Sub
Private Sub Guardar()
On Error GoTo Mensaje
IdVida = tx_control.Text
With Vida
' aqui es donde nunca se cumple
If Not .BOF And Not .EOF Then
.Find "fe_corr = " & IdVida
End If
If Not .EOF Then
asignar 'carga los datos
'!usr_mod
!fe_fecmod = Now
.Update
tx_control.Text = !fe_corr
StatusBar1.Panels(3).Text = "Registro Modificado....."
Else
.AddNew
!fe_fecha = Now
!fe_ano = Year(Now)
Call asignar 'carga los datos
.Update
tx_control.Text = !fe_corr
' INCREMENTAR NRO HASTA QUE CAMBIE DE AÑO
Set ConfActas = New ADODB.Recordset
With ConfActas
.CursorLocation = adUseClient
.CursorType = adOpenDynamic
.LockType = adLockOptimistic
.Open "Conf_Actas", DB
.AddNew
!nro_acta = tx_control.Text '"53" 'Tx_nro.Text ' ESTAS VARIABLES SE CARGARAN EN LA
!ano = Tx_ano.Text 'PANTALLA PRINCIPAL
!tipo_doc = "V"
!jefe = gv_jefe
!secre = gv_secre
!prefectura = gv_prefe
!Gaceta = gv_gaceta
!fec_gaceta = gv_Fechag
!resolucion = gv_res
!fec_resolucion = gv_Fecres
!encargado = gv_encargado
.Update
.Close
Set ConfActas = Nothing
End With
StatusBar1.Panels(3).Text = "Registro Añadido....."
End If
End With
Opcion(1).Enabled = True
Menu(1).Enabled = False
Mensaje:
If Not Err.Number = Empty Then
For Each MiError In DB.Errors
MsgBox ("Error VB:" & MiError.Number & vbCrLf _
& "Error Oracle:" & MiError.NativeError & vbCrLf _
& "Error SQL:" & MiError.SQLState & vbCrLf _
& "Generado Por:" & MiError.Source & vbCrLf _
& "Descripción:" & MiError.Description)
Next
End If
End Sub
1 Respuesta
Respuesta de the_santo
1