Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

¿Como puedo hacer esto?

Estas en el tema de ¿Como puedo hacer esto? en el foro de Bases de Datos General en Foros del Web. Hola, buenas noches. Necesitaría que me dén una mano para un proyecto que estoy haciendo pero...quizá lo más importante no me sale. Tengo un sistema ...
  #1 (permalink)  
Antiguo 05/01/2012, 22:24
Avatar de santafesino_lagunero  
Fecha de Ingreso: abril-2007
Mensajes: 17
Antigüedad: 17 años
Puntos: 0
¿Como puedo hacer esto?

Hola, buenas noches. Necesitaría que me dén una mano para un proyecto que estoy haciendo pero...quizá lo más importante no me sale. Tengo un sistema en Access 2003 que es para busqueda de coincidencia de números. La cuestión es que tengo una tabla con cuatro números fijos y tengo cuatro cajas de textos para ingresar números. ¿Como puedo hacer para que me busque coincidencias entre los datos que ingreso en las cuatro cajas de textos con los cuatro números que tengo en la tabla guardados y me diga la cantidad de 'aciertos' que hubo?.

Desde ya muchas gracias y mil gracias. Necesito poder resolver esto porque es para un proyecto de estudio, y me estoy rompiendo la cabeza y no me sale y ya ando un poco entre desausiado y desesperado.

Gracias, y saludos.
  #2 (permalink)  
Antiguo 10/01/2012, 16:24
 
Fecha de Ingreso: enero-2012
Mensajes: 49
Antigüedad: 12 años, 3 meses
Puntos: 4
Respuesta: ¿Como puedo hacer esto?

Hola santafesino_lagunero,


necesitaría muchos más datos para contestar adecuadamente a tu pregunta:
  • ¿Usas o debes usar código VBA?
  • ¿La comprobación se hace a través de un botón?
  • ¿Has de comprobar que no se repitan valores ente unos cuadros de texto y otros?
  • etc...

En adelanto te pongo un pequeño código con una de las mil maneras de resolver tu dilema.

Yo me he creado un formulario con 4 cuadros te texto (numero1,...,numero4) y he creado un botón al que le he agregado el siguiente código:

Código:
Private Sub BuscarAciertos_Click()
    Dim db As Database
    Dim SQLText As String
    Dim rst As DAO.Recordset
    Dim contador As Integer
        
    Set db = CurrentDb()
    contador = 0
    
    SQLText = " SELECT * FROM Numeros" _
            & " WHERE Numero = " & Me![numero1]
    Set rst = db.OpenRecordset(SQLText, dbReadOnly)
    If Not (rst.BOF And rst.EOF) Then
        contador = contador + 1
    End If

    SQLText = " SELECT * FROM Numeros" _
            & " WHERE Numero = " & Me![numero2]
    Set rst = db.OpenRecordset(SQLText, dbReadOnly)
    If Not (rst.BOF And rst.EOF) Then
        contador = contador + 1
    End If
    
    SQLText = " SELECT * FROM Numeros" _
            & " WHERE Numero = " & Me![numero3]
    Set rst = db.OpenRecordset(SQLText, dbReadOnly)
        
    If Not (rst.BOF And rst.EOF) Then
        contador = contador + 1
    End If
    
    SQLText = " SELECT * FROM Numeros" _
            & " WHERE Numero = " & Me![numero4]
    Set rst = db.OpenRecordset(SQLText, dbReadOnly)
    If Not (rst.BOF And rst.EOF) Then
        contador = contador + 1
    End If
    
    MsgBox ("Aciertos: " & contador)

End Sub
Éste código no comprueba que los valores de los cuadros sean idénticos, además se podría hacer con un For pero sería algo más complejo.

Para dar una respuesta adecuada a tu solicitud, tendrías que dar más datos (entre ellos los conocimientos que tienes/deberías tener).

De todos modos, si es por un tema de estudios, imagino que debes tener tanto la información como los medios para resolver tu dilema... pero no me quiero meter donde no me llaman.

Espero que mi código te sirva de pista, pero insisto en que hay que modificarlo para añadirle muchas cosas (como resetear las variables, controlar errores, etc)

Un saludo
  #3 (permalink)  
Antiguo 13/01/2012, 23:13
Avatar de santafesino_lagunero  
Fecha de Ingreso: abril-2007
Mensajes: 17
Antigüedad: 17 años
Puntos: 0
Respuesta: ¿Como puedo hacer esto?

URAN, gracias por la respuesta. Todavía no me puse a probar eso que me mostraste.

Mirá, la verdad es que... algo claro tengo de Visual Basic pero no tanto. Con el paso del tiempo fuí perdiendole un poco la maña. Estaba estudiando y por cuestiones laborales tuve que dejar y ahora que volví a retomar después de unos años para parte del proyecto de finalización me pidieron que resuelva eso pero la verdad, no recuerdo como hacerlo y hay cosas de VB que por no sentarme con tiempo (por falta de tiempo aclaro) lo fuí perdiendo.

El tema que me plantearon es simple: Tenés una tabla en una base de datos con 20 números previamente cargados y tenés 8 textboxs con números para ingresar. Lo que hay que hacer es buscar la mayor cantidad de coincidencias (hasta 8) en esos 20 números y que te muestre en un cuadro de texto cuantos números coinciden.

Espero haberme expresado bien y, gracias por tanta ayuda.
  #4 (permalink)  
Antiguo 14/01/2012, 21:36
 
Fecha de Ingreso: enero-2012
Mensajes: 49
Antigüedad: 12 años, 3 meses
Puntos: 4
Respuesta: ¿Como puedo hacer esto?

Hola de nuevo,


mira se me ha ocurrido una manera de realizar lo que dices con un código bastante simple (aunque tal vez algo largo):

1) Crear una tabla (Numeros), con un campo (numero) de tipo número y la he rellenado
2) He creado un formulario con 9 campos, 8 para los numeros a buscar (numero1, ..., numero8) y uno para los aciertos (aciertos).
3) He creado un botón al que le he agregado (en el evento _Click) el siguiente código:

Código vb:
Ver original
  1. Private Sub buscarAciertos_Click()
  2. On Error GoTo Err_buscarAciertos_Click
  3.  
  4.     Dim db As Database
  5.     Dim SQLText As String
  6.     Dim rst As DAO.Recordset
  7.     Dim numero1 As Boolean
  8.     Dim numero2 As Boolean
  9.     Dim numero3 As Boolean
  10.     Dim numero4 As Boolean
  11.     Dim numero5 As Boolean
  12.     Dim numero6 As Boolean
  13.     Dim numero7 As Boolean
  14.     Dim numero8 As Boolean
  15.     Dim numero As Integer
  16.     Dim aciertos As Integer
  17.            
  18.     Set db = CurrentDb()
  19.    
  20.     numero1 = False
  21.     numero2 = False
  22.     numero3 = False
  23.     numero4 = False
  24.     numero5 = False
  25.     numero6 = False
  26.     numero7 = False
  27.     numero8 = False
  28.     numero = 0
  29.     aciertos = 0
  30.    
  31.     SQLText = " SELECT * FROM Numeros "
  32.     Set rst = db.OpenRecordset(SQLText, dbReadOnly)
  33.    
  34.     If Not (rst.BOF And rst.EOF) Then
  35.         With rst
  36.             Do While Not .EOF
  37.                 numero = .Fields("numero")
  38.                 If numero = Me!numero1 Then
  39.                     numero1 = True
  40.                 End If
  41.                 If numero = Me!numero2 Then
  42.                     numero2 = True
  43.                 End If
  44.                 If numero = Me!numero3 Then
  45.                     numero3 = True
  46.                 End If
  47.                 If numero = Me!numero4 Then
  48.                     numero4 = True
  49.                 End If
  50.                 If numero = Me!numero5 Then
  51.                     numero5 = True
  52.                 End If
  53.                 If numero = Me!numero6 Then
  54.                     numero6 = True
  55.                 End If
  56.                 If numero = Me!numero7 Then
  57.                     numero7 = True
  58.                 End If
  59.                 If numero = Me!numero8 Then
  60.                     numero8 = True
  61.                 End If
  62.                 .MoveNext
  63.             Loop
  64.         End With
  65.         If numero1 Then
  66.             aciertos = aciertos + 1
  67.         End If
  68.         If numero2 Then
  69.             aciertos = aciertos + 1
  70.         End If
  71.         If numero3 Then
  72.             aciertos = aciertos + 1
  73.         End If
  74.         If numero4 Then
  75.             aciertos = aciertos + 1
  76.         End If
  77.         If numero5 Then
  78.             aciertos = aciertos + 1
  79.         End If
  80.         If numero6 Then
  81.             aciertos = aciertos + 1
  82.         End If
  83.         If numero7 Then
  84.             aciertos = aciertos + 1
  85.         End If
  86.         If numero8 Then
  87.             aciertos = aciertos + 1
  88.         End If
  89.         Me.aciertos = aciertos
  90.     Else
  91.         MsgBox ("Tabla no encontrada o no hay números para comparar.")
  92.     End If
  93.  
  94.     Set rst = Nothing
  95.     Set db = Nothing
  96.    
  97. Exit_Err_buscarAciertos_Click:
  98.     Set rst = Nothing
  99.     Set db = Nothing
  100.     Exit Sub
  101.  
  102. Err_buscarAciertos_Click:
  103.     MsgBox Err.Description
  104.     Resume Exit_Err_buscarAciertos_Click
  105. End Sub


Como ves funciona correctamente. Pero en el momento en el que se te añada un campo más al formulario hay que modificar el código...

Mira a ver si éste código te vale.
  #5 (permalink)  
Antiguo 15/01/2012, 08:09
Avatar de santafesino_lagunero  
Fecha de Ingreso: abril-2007
Mensajes: 17
Antigüedad: 17 años
Puntos: 0
Respuesta: ¿Como puedo hacer esto?

Hola Uran, te agradezco por el enorme esfuerzo que dedicás en ayudarme. También confieso que me ayuda mucho después de tanto tiempo ver código de otros programadores para "pulir" formas de programar o tratar quizás de entender mejor el lenguaje. Cuando lo pruebe bien te digo como fué.
  #6 (permalink)  
Antiguo 15/01/2012, 08:49
 
Fecha de Ingreso: enero-2012
Mensajes: 49
Antigüedad: 12 años, 3 meses
Puntos: 4
Respuesta: ¿Como puedo hacer esto?

No hay de qué, prueba y nos cuentas

Etiquetas: access, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:57.