Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Ayuda con Bases de Datos y busquedas multiples

Estas en el tema de Ayuda con Bases de Datos y busquedas multiples en el foro de Visual Basic clásico en Foros del Web. Necesito que alguien me ayude URGENTE, necesito finalizar un programa y me quede en esto. La funcion que cumple el programa es buscar dentro de ...
  #1 (permalink)  
Antiguo 29/01/2005, 14:28
Avatar de yak_vi  
Fecha de Ingreso: enero-2005
Ubicación: Argentina
Mensajes: 72
Antigüedad: 19 años, 3 meses
Puntos: 1
Exclamación Ayuda con Bases de Datos y busquedas multiples

Necesito que alguien me ayude URGENTE, necesito finalizar un programa y me quede en esto. La funcion que cumple el programa es buscar dentro de una tabla con clientes (con tres campos que llevan numeros de 2 cifras).
Necesito que cuando ingreso 10 numeros que me liste (en un Grid) los que tienen coincidencia con los 3 numeros que tienen en el registro respectivo.

Espero que halla sido claro. Al que me ayuda le agradecere y lo ayudare con lo que este a mi disposicion.

Gracias.
  #2 (permalink)  
Antiguo 31/01/2005, 04:22
Avatar de PherPhenix  
Fecha de Ingreso: enero-2005
Mensajes: 16
Antigüedad: 19 años, 3 meses
Puntos: 0
podrias ser mas especifico. no entiendo bien, pero me parce que deberias hace un do loop por todos los registros e ir conparandolo con la cadena de numeros con un find(), si lo que estas buscando es una instruccion SQL, no se meocurre ninguna.
  #3 (permalink)  
Antiguo 31/01/2005, 04:28
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 19 años, 8 meses
Puntos: 13
Aclarando...

¿podrias poner la estructura de la tabla de clientes? Ademas, ¿Como harias la comparación? Ingresas 10 numeros pero hay tres campos de dos cifras cada uno... No me cierran las matematicas .

Saludos. Lucas
  #4 (permalink)  
Antiguo 16/02/2005, 08:05
Avatar de yak_vi  
Fecha de Ingreso: enero-2005
Ubicación: Argentina
Mensajes: 72
Antigüedad: 19 años, 3 meses
Puntos: 1
Disculpen que me he expresado mal.

Yo tengo una tabla con clientes. La tabla tiene la siguiente estructura;
Id - Numerico
Nombre - Texto
Direccion - Texto
Ciudad - Texto
Nro1 - Numerico
Nro2 - Numerico
Nro3 - Numerico
Gano - verdadero/falso

Cuando yo cargo un cliente le pongo en cada campo de numero (nro1, nro2, nro3) un numero distinto para cada uno de los campos del 00 al 99.

Quisiera saber que si yo cargando 10 primeros numeros de la Loteria Nacional, del 00 al 99, que me liste los que tienen coincidencia (en un Grid), o sea los que tienen esos 3 numeros tienen coincidencia con los 10 que yo puse. Si tienen tres numeros iguales a los 10 que yo puse que me los filtre en un Grid y si es posible que me los imprima en un DataReport o algo similar.

Espero haber explicado bien mi problema. MUCHAS GRACIAS.

Espero que me respondan porque es lo unico que me queda por terminar.

P.D.:
El objetivo de este programa es saber quien de los clientes ha ganado y quien no. Esta basado en el sorteo de la Quiniela (Loteria) Nacional. Soy de Argentina.
  #5 (permalink)  
Antiguo 16/02/2005, 08:08
Avatar de yak_vi  
Fecha de Ingreso: enero-2005
Ubicación: Argentina
Mensajes: 72
Antigüedad: 19 años, 3 meses
Puntos: 1
Perdon, me olvide y ademas que me ponga en verdadero el campo de "Gano" para que sepa cual gano y cual no y que me quede grabado en la base de datos. La base de datos es Access 97. Gracias de nuevo.
  #6 (permalink)  
Antiguo 16/02/2005, 13:22
Avatar de Skalitiko  
Fecha de Ingreso: febrero-2005
Mensajes: 81
Antigüedad: 19 años, 2 meses
Puntos: 0
Los 10 números que ingresas, los ingresas en textbox a parte, en un solo testtbox separado por un caracter, en un listbox, un combo, etc...?.

Suponiendo que ingresas los números separados por "," en un solo textbox y que utilizas Access

Private Cnn As New ADODB.Connection
Private Sub Command1_Click()
Dim rst As New ADODB.Recordset
Dim sql As String
Dim Id As Long


With rst
.LockType = adLockOptimistic
.CursorType = adOpenKeyset
sql = "select * from clientes where instr('" & Text1.Text & "',nro1) and "
sql = sql & "instr('" & Text1 & "',nro2) and instr('" & Text1 & "',nro3)"
.Source = sql
Set .ActiveConnection = Cnn
.Open
If Not .EOF And Not .BOF Then
.MoveFirst
While Not .EOF
UpdateCliente !Id
.MoveNext
Wend
.Close
sql = "select * from clientes where gano = true"
.Source = sql
.Open
Set Flex1.Recordset = rst
Flex1.Refresh

End If


End With
End Sub
Private Sub UpdateCliente(Id As Long)
Dim sql As String
sql = "Update Clientes set gano = true where id = " & Id
Cnn.Execute (sql)
End Sub
Private Sub Form_Load()
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\My Documents\Cojones.mdb;Persist Security Info=False"
Cnn.Open

End Sub

PD: La grilla que utilizo en este ejemplo es la Microsof Hierarchical FlexGrid Contrl 6.0
  #7 (permalink)  
Antiguo 17/02/2005, 08:32
Avatar de yak_vi  
Fecha de Ingreso: enero-2005
Ubicación: Argentina
Mensajes: 72
Antigüedad: 19 años, 3 meses
Puntos: 1
Exclamación Otro Agregado!

Perdonen que siempre termino agregando algo pero esto es lo que tengo en un form:

Tengo tres cuadros de texto de 2 caracteres cada uno (del 00 al 99).

En otros 10 cuadros de texto pongo los 10 primeros numero del sorteo de la loteria nacional (soy de argentina) de 2 cifras.

Lo que quiero hacer es que cuando yo ponga los 10 numeros en esos diez campos (o en vez de 10 campos los numeros separados por coma o punto y coma, igual me sirve) y que me liste los que tienen coincidencia con los 3 numeros que pusieron en esos 3 campos propios de cada cliente.

Todo esto mostrado en un grid o en un DataReport.

Muchas gracias !!!!
  #8 (permalink)  
Antiguo 17/02/2005, 12:47
Avatar de Skalitiko  
Fecha de Ingreso: febrero-2005
Mensajes: 81
Antigüedad: 19 años, 2 meses
Puntos: 0
Ahora si que no te entendi nada!!

Quies comparar los 10 números con los 3 textbox o con los números existentes en la bd??
  #9 (permalink)  
Antiguo 18/02/2005, 20:24
Avatar de yak_vi  
Fecha de Ingreso: enero-2005
Ubicación: Argentina
Mensajes: 72
Antigüedad: 19 años, 3 meses
Puntos: 1
Exclamación Ultimo pedido

Quiero comparar los 10 numeros con los 3 que estan en los 3 campos de la bases de datos para saber quien tiene coincidencia con los 10 numeros que yo puse y entonces listarlos en un DataGrid (o Flexgrid). Espero que alguien me pueda ayudar que es lo unico que me queda.

  #10 (permalink)  
Antiguo 19/02/2005, 16:48
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
consulta sql

para obtener la lista de los ganadores, suponiendo que los 10 numeros (ganadores en la loteria) no los tienes en una tabla. Debes realizar una consulta mas o menos asi.

Select c.id from clientes c where
(c.nro1 = txtNumero1.text or c.nro1 = txtnumero2.text....) and
(c.nro2 = txtNumero1.text or c.nro2 = txtnumero2.text....) and
(c.nro3 = txtNumero1.text or c.nro3 = txtnumero2.text....)

la serie debe continuar hasta el 10. donde txtnumeroX.text son los valores capturados en los cuadros de texto. Esto resultaria en una cadena bastante larga pero debe funcionar. Aunque tomando el cta el numero de registros llevaria algo de tiempo, sobre todo por el uso del motor Jet.

La otra es guardando los 10 numeros en la BD y ejecutando una consulta mas o menos asi.

Select c.id from clientes c where
(c.nro1 in select * from numsGanadores) and
(c.nro2 in select * from numsGanadores) and
(c.nro3 in select * from numsGanadores)

El recordset resultado lo puedes utilizar para actualizar el campo ganador en la tabla de clientes.

Una vez relizado ambas operaciones puedes crear un datareport o datagrid de forma sencilla, solo seleccionando los ID ganadores(el data source seria la consulta select * from clientes c where c.gano = true).

Espero te sirva.

Saludos!
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 08:33.