2 recordset abiertos

Miren tengo que hacer una búsqueda pero están en bases distintas
las busco en un textbox y me dice que pocos parámetros se esperaba uno
Tengo una tabla de la bd1 que tiene codigopais
y tengo otra bd2 que tiene codigopais y el nombrepais
Bueno en el texbox coloco el nombre del país y quiero que me de los nombres del codigopais del primera bd1
Private Sub buscar_Click()
Dim rs As Recordset
If Len(Trim(a)) = 0 Then
MsgBox "No ha ingresado el argumento de búsqueda.", vbCritical, "Error"
Exit Sub
End If
If Option1.Value = True Then
Set rs = ex.Execute("select pais from pais where codigopais = m1!codigopais & '" & a.Text & "'")
Do While Not rs.EOF
s_cad = ""
For I_num = 0 To rs.Fields.Count - 1
s_cad = s_cad & rs(I_num) & " - "
Next
List1.AddItem s_cad
rs.MoveNext
Loop
El recordset m1 esta abierto ya

2 Respuestas

Respuesta
1
Tu select esta mal, cambialo por este:
Set rs = ex.Execute("select pais from pais where codigopais = '" & a.Text & "'")
Gracias pero mira tengo bd1 con tabla país y bd2 con tabla enero en las dos tablas esta el codigopais pero solo en la tabla país esta el nombre del país y las base de datos están conectadas y el m1 es el recordset de la tabla enero y rs es el recordset de la tabla país
Y lo que tengo es que en un form1 me conecto a la base de datos y mando el recordset m1 al form2 que esta la 2 base de datos conectada bueno
Lo que quiero es que en el texbox coloque el nombre del país y me lo busque en el recordset rs y me de la información y el codigopais y e lo compare con todos los codigopais que tiene el recordset
Gracias si es mejor te puedo mandar lo que tengo por mail
Gracias
Tu select esta mal, cambialo por este:
Set rs = ex.Execute("select pais from pais where codigopais = '" & m1!codigopais & "'")
Lo que no entiendo porque lo igualas con el control de texto.
Gracias por la rapidez pero es que coloco el nombre en un textbox y ese nombre tiene un codigopais y ese codigopais me busca los mismo que están en otra base de datos
Entonce no se donde comparar en nombre del textbox con el recordset
Gracias
Tienes que agregar el itemdata desde el momento que trabajas con el llenado de tu combo, normalmente siempre se usan por medio de código no como controles enlazados a datos.
La otra posibilidad es que busques antes el código con el nombre del elemento seleccionado en tu combo.
Gracias pero cambie eso ahora lo que tengo que hacer es que en un combo tengo todos los campos de una tabla
y al seleccionar un país quiero que en un botón me muestre el codigopais que esta en otro campo de la misma tabla gracias
Private Sub buscar_Click()
Set rs1 = ex.Execute("select codigopais from pais where '" & Combo1.ListIndex & "'")
If rs1eof Then
MsgBox ("no esta")
Else
a.Text = rs1!codigopais
End If
End Sub
Aquí solo me muestra el primer código pero si busco otro país me tira el primer código otra ves
Gracias
Tienes que agregar la propiedad del itemdata al combo, ya que este elemento deberá de contener la clave del país que mencionas. Al momento de seleccionar puedes usar lo siguiente:
Set rs1 = ex.Execute("select codigopais from pais where '" & Combo1.Itemdate(combo1.ListIndex) & "'")
Private Sub buscar_Click()
Set rs1 = ex.Execute("select codigopais from pais where '" & Combo1.ItemData(Combo1.ListIndex) & "'")
If rs1eof Then
MsgBox ("no esta")
Else
a.Text = rs1!codigopais
End If
End Sub
Me da un error 381
El indice de la matriz de propiedades no es válido
Saludos y gracias
Sugiero que me coloques todo el código para ver realmente lo que me estas comentando.
Checa la siguiente rutina:
Sub CargaMes(ByVal cCombo As ComboBox)
cCombo.AddItem "Enero"
cCombo.ItemData(cCombo.NewIndex) = 1
cCombo.AddItem "Febrero"
cCombo.ItemData(cCombo.NewIndex) = 2
cCombo.AddItem "Marzo"
cCombo.ItemData(cCombo.NewIndex) = 3
cCombo.AddItem "Abril"
cCombo.ItemData(cCombo.NewIndex) = 4
cCombo.AddItem "Mayo"
cCombo.ItemData(cCombo.NewIndex) = 5
cCombo.AddItem "Junio"
cCombo.ItemData(cCombo.NewIndex) = 6
cCombo.AddItem "Julio"
cCombo.ItemData(cCombo.NewIndex) = 7
cCombo.AddItem "Agosto"
cCombo.ItemData(cCombo.NewIndex) = 8
cCombo.AddItem "Septiembre"
cCombo.ItemData(cCombo.NewIndex) = 9
cCombo.AddItem "Octubre"
cCombo.ItemData(cCombo.NewIndex) = 10
cCombo.AddItem "Noviembre"
cCombo.ItemData(cCombo.NewIndex) = 11
cCombo.AddItem "Diciembre"
cCombo.ItemData(cCombo.NewIndex) = 12
cCombo.ListIndex = -1
End Sub
Mira así lleno el combo
Dim rs2 As New ADODB.Recordset
Set rs2 = ex.Execute("SELECT pais FROM pais where pais")
Combo2.Clear
Do While Not rs2.EOF
Combo2.AddItem rs2.Fields("pais")
rs2.MoveNext
Loop
rs2.Close: Set rs2 = Nothing
¿En dónde agrego el itemdata?
Gracias
Gracias pero son 200 países que hago ayuda por favor
Otra cosa seria que en el click del combo
Private Sub cboNombrePais_Click()
Set rs1 = ex.Execute("SELECT codigopais FROM pais WHERE pais = '" & Combo1.Text & "'")
a.Text = rs1!codigopais
If rs1.State = adStateOpen Then rs1.Close
End Sub
Pero me sale error 3021
Gracias
Sustituye y ajusta la rutina, si ves es similar a la que tienes pero sin el recordset, adáptala, este proceso llena lo que requieres, te lo mande como un ejemplo.
Respuesta
1
¿Código país es de tipo texto o numérico?
Hola numérico
Gracias
si es numerico el erro esta aqui codigopais = &'" & a.Text & "'")
Los casmpos numéricos usan comillas simples

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas