Visual Basic - ADO DC

Life is soft - evento anual de software empresarial
 
Vista:

ADO DC

Publicado por LUCKYTA (13 intervenciones) el 19/02/2007 18:41:22
Tengo un programilla para consultar codigos postales, pero usábamos un solo estado (República mexicana, está dividida por estados), y ahora que estamos trabajando con varios estados, requiero hacer la búsqueda en esos.
He puesto un combobox y allí el usuario selecciona el estado de la busqueda..
el problema es que estoy trabajando con un Adodc, y en la propiedad de Recordsource antes tenia seleccionado el único estado de la búsqueda..
he intentado hacer esto con un select case y según la selección del usuario, sea el recordsource que asigne al adodc,
y si la propiedad recordsource la dejo en blanco me marca error, y si dejo lo que tenia antes (el único estado), no asigna nada al recordsource según la selección

esto es lo que hago:

Select Case Combo1.text
Case SONORA
Adodc1.RecordSource = "Select * FROM SONORA"
Case SINALOA
Adodc1.RecordSource = "Select * FROM SINALOA"

alguna sugerencia.. gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

A ver si es esto:

Publicado por Y@ahir (19 intervenciones) el 19/02/2007 18:53:35
Pues según tu ejemplo ¿ LAS TABLAS se llaman SONORA, SINALOA ? porque eso estás indicando en tus consultas.
¿Tienes una tabla de códigos postales PARA CADA ESTADO, o están todos en una sola tabla?

Si los tienes en una sola tabla, las consultas serían más o menos así:

Select Case Combo1.text
Case "SONORA" ' te faltan comillas, porque es de tipo cadena.
Adodc1.RecordSource = "Select * FROM CPS where Estado='SONORA' "
Case "SINALOA"
Adodc1.RecordSource = "Select * FROM CPS where estado = 'SINALOA' "

en este ejemplo supuse que tu tabla de los códigos postales se llamaría CPS, puesto que no dices como se llama la tabla desde la cual estás tomando los datos.
Si nos das más información podremos ayudarte mejor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ADO DC

Publicado por ivan (1039 intervenciones) el 19/02/2007 19:31:28
Tengo algo parecido funcionando, avísame cuando estes en línea para pasartelo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ADO DC

Publicado por Y@ahir (12 intervenciones) el 19/02/2007 22:16:13
¿y eso es una respuesta? Si tienes un código, lo pones y no hay que esperar a se esté en línea.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ADO DC

Publicado por Fernando Flores (12 intervenciones) el 19/02/2007 21:34:27
Creo que lo que te falta es la linea

Adodc1.refresh

Aunque si quieres un consejo en vez de usar un control Adodc deberias usar el Adodb. es mas practico y funciona mejor.
Te envio un ejemplo.

El Adodb hay que referenciarlo en El menu de Proyecto, Referencias como:
Microsoft Activex Data Objects 2.x Library.

'Esta es la conexion
Dim CnnAccess as Adodb.Connection
Set CnnAccess = New ADODB.Connection
CnnAccess.CursorLocation = adUseServer
CnnAccess.Open CnnStrAccess = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\tubase.mdb;Persist Security Info=False"

'y Este es un recordset

Dim MisDatos as adodb.recordset
set MisDatos=New adodb.recordset

with MisDatos
.ActiveConnection = CnnAccess
.CursorLocation = adUseServer
.CursorType = adOpenDynamic
.LockType = adLockOptimistic
.Source = "Select * from Sinaloa"
.Open
End With

el source lo puedes cambiar a "Select * from Sonora" Segun el caso

Tal vez te paresca mas codigo, pero veras que es mas practico y seguro.

Espero que te esto te sirva de algo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ADO DC

Publicado por ivan (1039 intervenciones) el 20/02/2007 02:17:53
no solo le pretendia pasar el código, sino tambien la base de datos con los códigos postales del país... si quieres te la paso a ti tambien yahir

pero, ok, atenderé tu peticion yahir

Combo29 - Entidad
Combo33 - Delegacion o Municipio
Combo6 - Ciudad
Combo38 - Codigos Postales
Combo2 - Colonia

Primero en el evento Form_Load lleno los combos donde guardo las entidades federativas, en otros los municipios o delegaciones, en otros las ciudades, en otros las colonias y en otros los códigos postales, las base de datos la baje delñ sitio de SEPOMEX y estaba en excel.

Private Sub LlenaCombosCodigos()
Bloquea = True
Combo2.Clear: Combo6.Clear: Combo33.Clear: Combo29.Clear: Combo38.Clear
SQL= "SELECT DISTINCT Municipio FROM ciudades WHERE Estado = '" & Combo29.Text & "'"
Codigos.Open SQL, Conexion, adOpenKeyset, adLockOptimistic
For i = 1 To Codigos.RecordCount
Codigos.AbsolutePosition = i
Combo33.AddItem (Codigos("Municipio"))
Next i
Combo33.Text = -----Establece un Municipio Inicial
If Codigos.State Then Codigos.Close
SQL = "SELECT DISTINCT Ciudad FROM ciudades WHERE Estado = '" & Combo29.Text & "'"
SQL = SQL & " AND Municipio = '" & Combo33.Text & "'"
Codigos.Open SQL, Conexion, adOpenKeyset, adLockOptimistic
For i = 1 To Codigos.RecordCount
Codigos.AbsolutePosition = i
Combo6.AddItem (Codigos("Ciudad"))
Next i
Combo6.Text = ---- Establece una ciudad Inicial
' Llena el campo de LOS CP'S, de acuerdo a la CIUDAD, MUNICIPIO y ESTADO elegidos
If Codigos.State Then Codigos.Close
Combo38.Clear
Combo38.AddItem ("DESCONOCIDO")
SQL = "SELECT num FROM ciudades WHERE ciudad ='" & Combo6.Text & "'"
SQL = SQL & " AND municipio = '" & Combo33.Text & "'"
SQL = SQL & " AND estado = '" & Combo29.Text & "'"
If Codigos.State Then Codigos.Close
Codigos.Open SQL, Conexion, adOpenKeyset, adLockReadOnly
ClaveCiudad = RCiudad("num")
End If
If Codigos.State Then Codigos.Close
SQL = "SELECT DISTINCT cp FROM cod_pos WHERE cve_ciudad = " & ClaveCiudad
Codigos.Open SQL, Conexion, adOpenKeyset, adLockOptimistic
For i = 1 To Codigos.RecordCount
Codigos.AbsolutePosition = i
Combo38.AddItem (Codigos("cp"))
Next i
' el COMBO DE LAS COLONIAS CAMBIARÁ CUANDO CP TENGA UN VALOR
Combo2.AddItem ("ELIGA UN CODIGO POSTAL")
Combo2.Text = "ELIGA UN CODIGO POSTAL"
Bloquea = True
End Sub

El valor de los combos varían de acuerdo al contenido de los mismos, por ejemplo, si el combo 29 cambia, se tendrán que rellenar los combos 33, 6, 38 y 2

Si el combo 33 cambia, se tendrán que rellenar los combos 6, 38 y 2

Si el combo 6 cambia se tendrán que rellenar los combos 38 y 2

y por ultimo si el combo 38 cambia se tendrá que rellenar el combo2

Si el usuario no conoce el codigo postal elige una colonia y en base a ese valor se puede buscar el codigo postal.

La tabla ciudades tiene como campos
num - ciudad - municipio - estado

la tabla cod_pos tiene como campos
cp - colonia - cve_ciudad

espero que esto resuelva la duda sobre consultar códigos postales, la cual era mi intensión contestar, este ejemplo funciona sobre ADODB, no tuve tiempo de cambiarlo para que funcione usando ADODC

aqui no puedo subir la base de datos, asi por eso ofrecía pasárselo en línea o bien a su correo

disculpas yahir por no poner toda la informacion requerida, espero esto cumpla con tu cometido

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Gracias, Ivan pero yo no te respondí

Publicado por Y@ahir (19 intervenciones) el 20/02/2007 16:20:41
Sólo por aclarar:
Ivan, el 2º mensaje firmado por Y@ahir no es mío. Y como en este foro es muy fácil firmar con otros nombres pues alguien quiso molestar y responder de esa manera, pero te aseguro que yo no fui.
En fin, ya lo hemos visto con los "quiques" y los "nuevos", por citar dos ejemplos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ok

Publicado por ivan (1039 intervenciones) el 20/02/2007 20:43:15
no importa, espero haya servido, saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ADO DC

Publicado por LUCKYTA (13 intervenciones) el 20/02/2007 02:50:52
Gracias chicos.. lo intentaré.. y les aviso k pasó..
son unos lindos..
bytes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar