Autor Tema: Controlar Error de Conexion BD  (Leído 4767 veces)

0 Usuarios y 1 Visitante están viendo este tema.

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Controlar Error de Conexion BD
« en: Abril 24, 2015, 11:59:31 am »
Hola, tengo este codigo para conectar a mi base datos MySQL

Código: (VB) [Seleccionar]
Public cnADO As ADODB.Connection    '// Conexion ADO
Public rsADO As ADODB.Recordset     '// RecordSet ADO

Public Sub ConectarADO()
   
    On Error GoTo ErrorHandler
   
    Set cnADO = New ADODB.Connection    '// Crear la nueva conexion
    Set rsADO = New ADODB.Recordset     '// Crear nuevo recordset
   
    rsADO.CursorLocation = adUseClient  '// Tipo de cursor a utilizar
    cnADO.ConnectionString = "Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=control_hotel; User=root;Password=123987;Option=3;"
    cnADO.Open                          '// Abrir la nueva conexion
           
ErrorHandler:
   
    If Err <> 0 Then
        MsgBox "Error Nº: " & Format(Err.Number, "##,###0") & vbCrLf & vbCrLf & Err.Source & vbCrLf & vbCrLf & Err.Description, vbCritical, "Error"
    End If

End Sub

Public Sub CerrarADO()
   
    If Not cnADO Is Nothing Then
   
    Else
        cnADO.Close            '// Cerrar la conexion
        Set cnADO = Nothing    '// Liberar conexion de la memoria
        Set rsADO = Nothing    '// Liberar recorset de la memoria
    End If
   
End Sub


Y Este para hacer un SELECT

Código: (VB) [Seleccionar]
Sub CARGAR_ARTICULOS()
       
    '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
    '// Conectar la Base Datos con ADO
        Call ConectarADO
    '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
                       
        If cnADO.State = False Then
           
            MsgBox "No se puede conectar con el Servidor", vbInformation
           
        Else
           
            StrSQL = "SELECT * FROM articulos"
            rsADO.Open StrSQL, cnADO, adOpenStatic, adLockOptimistic, adCmdText

            Do Until rsADO.EOF
                Set Lv = LArticulos.ListItems.Add()
                With rsADO
                    Lv.Text = .Fields("codigo")
                    Lv.SubItems(1) = .Fields("nombre") & ""
                    rsADO.MoveNext
                End With
            Loop
           
        End If
       
    '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
    '// Cerrar la base de datos y liberar la memoria
        Call CerrarADO
    '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
       
End Sub


Ahora el error que quiero controlar es cuando el servidor no esta listo para conectarse que solo me salga un error informando que no se puede conectar y ya nada.

Con este metodo si voy a hacer por ejemplo 4 o 5 consultas me sale 5 veces el error informando que no hay conexion
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

Jeronimo

  • Gigabyte
  • ****
  • Mensajes: 402
  • Reputación: +33/-2
    • Ver Perfil
Re:Controlar Error de Conexion BD
« Respuesta #1 en: Abril 24, 2015, 12:08:44 pm »
Se me ocurre que así como está, si el servidor no está listo te van a salir dos mensajes de error: uno al intentar abrir la conexión (rutina ConectarADO) y otro al verificar el estado de la conexión (rutina CARGAR_ARTICULOS).
Lo que yo haría es evitar la verificación del estado de la conexión:
Código: (VB) [Seleccionar]
Sub CARGAR_ARTICULOS()
       
    '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
    '// Conectar la Base Datos con ADO
        Call ConectarADO
    '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
                       
        If cnADO.State = True Then
           
            StrSQL = "SELECT * FROM articulos"
            rsADO.Open StrSQL, cnADO, adOpenStatic, adLockOptimistic, adCmdText
 
            Do Until rsADO.EOF
                Set Lv = LArticulos.ListItems.Add()
                With rsADO
                    Lv.Text = .Fields("codigo")
                    Lv.SubItems(1) = .Fields("nombre") & ""
                    rsADO.MoveNext
                End With
            Loop
           
        End If
       
    '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
    '// Cerrar la base de datos y liberar la memoria
        Call CerrarADO
    '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
       
End Sub
No sé por qué te salen 4 o 5 mensajes de error. ¿Estás ejecutando más de una vez la rutina CARGAR_ARTICULOS?

Saludos.

Jerónimo

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Controlar Error de Conexion BD
« Respuesta #2 en: Abril 24, 2015, 02:55:28 pm »
Si amigo estoy ejecutando la rutina como 20 veces, tengo un cliente que tiene 5 sucursales y que hasta ahora no le convenci que se haga solo de un servidor, y tengo que hacer la consulta por cada sucursal.

El problema que a veces pasa es que en uno no esta prendido la pc, o no tiene luz, o por a o b motivo no se puede acceder a la bd de tal local.

Lo que pasa si le saco la verificacion de la conex

sale esto:


http://snag.gy/B1EvE.jpg

Y si sale eso tiene que finalizar el programa cosa que no quiero que haga
« última modificación: Abril 24, 2015, 02:58:16 pm por E N T E R »
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Controlar Error de Conexion BD
« Respuesta #3 en: Abril 24, 2015, 04:25:16 pm »
Ah entonces doc, gestiona ese error, eso es lo que exactamente yo hago. Capturas ese error (3709 o el numero exacto que te salga) y das un mensaje diciendo "No hay conexión a la base de datos" y listo, cierras la ventana pero no sale del programa.

Saludos
Me encuentras en YAcosta.com

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Controlar Error de Conexion BD
« Respuesta #4 en: Abril 24, 2015, 04:36:47 pm »
Este es el form

http://snag.gy/5p8ML.jpg

Pasa que no puedo cerrar esta ventana si no se puede conectar a unos de los sucursales, por que hay datos del local en esta ventana o de otra sucursal.
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Controlar Error de Conexion BD
« Respuesta #5 en: Abril 24, 2015, 06:22:51 pm »
No hay problema doc, no cierres la ventana.
Conectas
Error: Mensaje de error de no conexion
No error: Muestras datos.
Cierras Conexion
Conectas a la tienda 2
Error: Mensaje de error de no conexion
No error: Muestras datos.
Cierras Conexion
Conectas a la tienda 3
Error: Mensaje de error de no conexion
No error: Muestras datos.
Cierras Conexion

Y listo, no te capto donde tienes la complejidad. Otra foma podria ser que uses mejor 3 conectores. cn1, cn2 y cn3 asi que las consultas siguen en las otras pero al final lo veo igual
Me encuentras en YAcosta.com

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Controlar Error de Conexion BD
« Respuesta #6 en: Abril 25, 2015, 12:23:25 pm »
Si amigo eso es justamente como tengo, tengo varias conexiones como esta en la imagen tengo 6 conexiones por cada local

Una conexion es por venta contada, otra por credito cobrados, otra por entregas iniciales. y asi por cada item.

Y si no hay conexión en unos de ellos me aparece 12 mensajes de error de conexion por cada sucursal.
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

Jeronimo

  • Gigabyte
  • ****
  • Mensajes: 402
  • Reputación: +33/-2
    • Ver Perfil
Re:Controlar Error de Conexion BD
« Respuesta #7 en: Abril 25, 2015, 01:52:47 pm »
¿Y por qué tenés tantas conexiones? ¿No te basta con abrir una (por cada tienda) y hacer las tres consultas en la misma conexión?
Si no, lo que yo haría es lo siguiente:
Intentar abrir cada conexión de la tienda 1. Si va bien, muestro los datos. Si alguna falla, guardo en una variable la información que me permita saber de qué tienda se trata y de qué conexión se trata (venta contado, crédito, etc.).
Hasta ahí no muestro ningún mensaje de error.
Al final de todo voy a tener algunos datos en pantalla (de las conexiones que abrieron) y algunas variables que indiquen errores.
Ahí será cuestión de ir revisando esas variables para mostrar, en un solo mensaje, toda la información de las conexiones que no pudieron ser abiertas.
Sería algo como lo que te comentó Yván, pero en lugar de mostrar un mensaje ante cada conexión infructuosa, guardar ese mensaje en una variable y luego, al final, mostrar todos los mensajes en una sola vez (msgbox o lo que uses).
No sé si fui claro.

Jerónimo
« última modificación: Abril 25, 2015, 01:55:17 pm por Jeronimo »

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Controlar Error de Conexion BD
« Respuesta #8 en: Abril 25, 2015, 06:51:23 pm »
Afinando mas mi respuesta y siguiendo el espiritu que comenta Jeronimo, te diria que los mensajes lo muestres en un area de tu pantalla tipo log, de esa forma no se cae ni redundamos con tantos mensajes, algo similar al filezilla.


Me encuentras en YAcosta.com

aedEric

  • Megabyte
  • ***
  • Mensajes: 211
  • Reputación: +20/-0
    • Ver Perfil
Re:Controlar Error de Conexion BD
« Respuesta #9 en: Abril 25, 2015, 07:42:05 pm »
hola amigos saludos desde México buena opcion la que comenta mi amigo YAcosta o tambien podria ocupar el Cartel Notificatorio creado por leandro en lo personal yo es el que ocupo

No he fracasado. He encontrado 10000 soluciones que no funcionan.