• Viernes 15 de Noviembre de 2024, 06:32

Autor Tema:  Re: Conexión Con Base De Datos  (Leído 1190 veces)

Jeremy

  • Miembro activo
  • **
  • Mensajes: 40
    • Ver Perfil
Re: Conexión Con Base De Datos
« en: Jueves 10 de Junio de 2004, 21:14 »
0
Hola amig@s, necesito vuestra ayuda:

Estoy empezando a manejarme con las BBDD. Bueno voy al grano... Conecto mi aplicación VB con una Tabla de Access. Al introducir un valor en el form y al pulsar la tecla ENTER, necesito comprobar si ese dato existe o no en la tabla.

He implementado el siguiente código para dicha comprobación, no sé en dónde puedo estar equivocado:

Código: Text
  1.  
  2. Private Sub cbotienda_KeyPress(KeyAscii As Integer)
  3. Dim cmd As String
  4. Dim sql As String
  5. Dim cn As ADODB.Connection
  6. Dim rs As ADODB.Recordset
  7. If KeyAscii = 13 Then 'Si la tecla es INTRO entonces...
  8.     cmd = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\"Ruta de la BBDD".mdb;Persist Security Info=false"
  9.     Set cn = New ADODB.Connection
  10.     With cn
  11.         .ConnectionString = cmd
  12.         .Open
  13.     End With
  14.    
  15.         sql = "SELECT * FROM DATOS WHERE TIENDA LIKE " & Me.cbotienda.Text  'Ejecuto una consulta SQL en la que comparo el valor introducido en un combo
  16.     Set rs = New ADODB.Recordset
  17.         With rs
  18.             .Open sql, cn, adOpenForwardOnly, adLockReadOnly
  19.             If sql = cbotienda.Text Then 'si el resultado devuelto de la consulta SQL es = al valor introducir entonces que me muestre los datos correspondientes
  20.            
  21.                 cbotienda.Text = rs.Fields("tienda")
  22.                 txtnombre.Text = rs.Fields("nombre")
  23.                 txtrouter.Text = rs.Fields("router")
  24.                 txtservidor.Text = rs.Fields("servidor")
  25.                 txttipo.Text = rs.Fields("tipo")
  26.                 .Close
  27.             ElseIf sql <> cbotienda.Text Then
  28.                 MsgBox "Esta tienda no existe"
  29.                 Exit Sub
  30.             End If
  31.         End With
  32.         Set rs = Nothing
  33.         cn.Close
  34.         Set cn = Nothing
  35. ElseIf KeyAscii <> 13 Then
  36.     Exit Sub
  37. End If
  38. End Sub
  39.  
  40.  
  41.  

Gracias a todos por vuestra ayuda.

º¿º
"Cuando quieres algo, todo el Universo conspira para que realices tu deseo..."

Shiquilla

  • Miembro MUY activo
  • ***
  • Mensajes: 188
  • Nacionalidad: es
    • Ver Perfil
    • http://www.songesoft.com
Re: Conexión Con Base De Datos
« Respuesta #1 en: Jueves 10 de Junio de 2004, 21:36 »
0
If sql = cbotienda.Text Then 'si el resultado devuelto de la consulta SQL es = al valor introducir entonces que me muestre los datos correspondientes

El problema está en que tienes que tienes que comprobar esto:

Código: Text
  1. If Not rs.EOF then  'Mirar si el recordset no está vacio
  2.      cbotienda.Text = rs![tienda]
  3.      txtnombre.Text = rs![nombre]
  4.      txtrouter.Text = rs![router]
  5.      txtservidor.Text = rs![servidor]
  6.      txttipo.Text = rs![tipo]
  7. end if
  8.  


Es decir, tu código quedaría así:

Código: Text
  1. Private Sub cbotienda_KeyPress(KeyAscii As Integer)
  2. Dim cmd As String
  3. Dim sql As String
  4. Dim cn As ADODB.Connection
  5. Dim rs As ADODB.Recordset
  6. If KeyAscii = 13 Then 'Si la tecla es INTRO entonces...
  7.    cmd = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\"Ruta de la BBDD".mdb;Persist Security Info=false"
  8.    Set cn = New ADODB.Connection
  9.    With cn
  10.        .ConnectionString = cmd
  11.        .Open
  12.    End With
  13.   
  14.        sql = "SELECT * FROM DATOS WHERE TIENDA LIKE " & Me.cbotienda.Text  & "%" 'Esto es para que busque la primera tienda que empieze por esos caracteres     
  15.        Set rs = New ADODB.Recordset
  16.        With rs
  17.            .Open sql, cn, adOpenForwardOnly, adLockReadOnly
  18.        End With
  19.       
  20.        If Not rs.EOF then            
  21.           cbotienda.Text = rs![tienda]
  22.           txtnombre.Text = rs![nombre]
  23.           txtrouter.Text = rs![router]
  24.           txtservidor.Text = rs![servidor]
  25.           txttipo.Text = rs![tipo]
  26.           rs.Close
  27.        Else
  28.           cbotienda.Text = ""
  29.           txtnombre.Text = ""
  30.           txtrouter.Text = ""
  31.           txtservidor.Text = ""
  32.           txttipo.Text = ""
  33.           MsgBox "Esta tienda no existe"
  34.        End If
  35.        Set rs = Nothing
  36.        cn.Close
  37.        Set cn = Nothing
  38. End If
  39. End Sub
  40.  

Saludos.
« §hÿqµïllæ »

Jeremy

  • Miembro activo
  • **
  • Mensajes: 40
    • Ver Perfil
Re: Conexión Con Base De Datos
« Respuesta #2 en: Jueves 10 de Junio de 2004, 21:49 »
0
Muchas gracias, me he dado cuenta de mi fallo y con tu ayuda he aprendido algo más  :lol:
"Cuando quieres algo, todo el Universo conspira para que realices tu deseo..."