DUDA URGENTE PLEASE COLEGA

EDGAR
20 de Enero del 2005
HOLA COLEGA, EN ESTA OPORTUNIDAD TENGO UNA GRAN DUDA. COMENZARE POR EL PLANEAMIENTO DE MI PROBLEMATICA. POSEO UNA BASE DE DATOS EN ACCESS LA CUAL TIENE DOS TABLAS, UNA QUE ES LLAMADA "Rangos" Y OTRA "Personas".
La tabla rangos contiene los siguientes campos: rango1, rango2, estado, donde por ejemplo:
rango1 rango2 estado
1 5 miranda
6 10 vargas

y la tabla personas posee los siguientes campos: cedula, apellido, nombre. El número de cedula es el mismo valor que el de la tabla rango en rango1 y rango2.
Mi problema radica en que por ejemplo necesito saber como puedo lograr en que el usuario al introducir la cedula que por ejemplo sea 12, automaticamente me haga la comparación de acuerdo a la tabla rango y como puse en el ejemplo anterior:
rango1 rango2 estado
6 10 vargas
la cedula 12 no existiria en el data por lo tanto me mostraria un mensaje de error. Pero en el caso de que la cedula sea por ejemplo 8 me permitira seguir con los procedimientos.
Agradezco de tu ayuda colega, la programación la estoy realizando en DAO.. Gracias de antemano amigo.

l_island
20 de Enero del 2005
Entiendo que lo que deseas saber es que Estado pertenece un Cedula determinada, si es así la respuesta la encuentras en la Clausula Between de SQL, prueba de este modo:

"SELECT * FROM Rangos WHERE '" & miCedula & "' BetWeen Rango1 And Rango2"

También puedes concatenar ambas tablas para obtener todos los datos en de un Persona además del Estado en la misma SQL:

"SELECT * FROM Rangos, Personas WHERE Cedula BetWeen Rango1, Rango2 AND Cedula = '" & miCedula & "'

Saludos!!
l_island

EDGAR
20 de Enero del 2005
HOLA COLEGA, GRACIAS POR TU AYUDA. PERO AHORA TENGO OTRA DUDA MAS EN CUANTO A ESTO, SABES QUE TENGO EL SIGUIENTE CODIGO EL CUAL LO HICE EN EL EVENTO KEYPRESS DEL TXTCEDULA.

If TXTcedula1.MaxLength = Len(TXTcedula1.Text) Or TXTcedula1.MaxLength = 7 Then
CEDORI.Seek "=", TXTcedula1.Text
If CEDORI.NoMatch = True Then
MKBlote.SetFocus
Else
Varmsg1 = MsgBox("Cédula de Identidad ya Existe en la Base de Datos", vbCritical, "Atención")
TXTcedula1.Text = ""
limpiar
Bloquear
TXTnacionalidad = ""
TXTnacionalidad.SetFocus
Exit Sub
End If
llenar
TXTart = Articulo
TXTord = Ordinal
End If

Ahora es que tengo la duda en que parte de este codigo y como tendria que colocar la instrucción que me distes ya que como lo que engo que hacer es una verificación, me imagino que tendria que ser despues de CEDORI.Seek "=", TXTcedula1.Text. Pero como haria en este caso.. Gracias de antemano amigo

l_island
20 de Enero del 2005
No me gusta dar consejos, pero en este caso haré una exeptión: OLVIDA ESO DEL SEEK.
Seek es una instrucción de DAO, te obliga a tener abierta toda la tabla y establecer un Index con el único propósito de obtener un registro o un conjunto relativamente pequeño de ellos. Pero en fin eso lo dejo a tu elección.
En cuanto a donde debes ponerlo:

If TXTcedula1.MaxLength = Len(TXTcedula1.Text) Or TXTcedula1.MaxLength = 7 Then
CEDORI.Seek "=", TXTcedula1.Text
If CEDORI.NoMatch = True Then
MKBlote.SetFocus
Else
Varmsg1 = MsgBox("Cédula de Identidad ya Existe en la Base de Datos", vbCritical, "Atención")
TXTcedula1.Text = ""
limpiar
Bloquear
TXTnacionalidad = ""
TXTnacionalidad.SetFocus
Exit Sub
End If

SET Rangos = Basedatos.OpenRecordset("SELECT Estado FROM Rangos WHERE '" & TXTcedula1.Text & "' Between Rango1 And Rango2")
if rangos.recordcount <> 0 then txtEstado.text = Rangos("Estado") ELSE txtEstado = ""
Rangos.close
Set Rangos = nothing

llenar
TXTart = Articulo
TXTord = Ordinal
End If

Espero no haberme equivocado.

Saludos!!
l_island