Comparar registros en tablas en visual basic
Necesito ayuda por favor explico el problema tengo una tabla llamada marca con los siguientes columnas clave marca y modelo, apart en visual basic 6 tengo 4 textbox text1, text2 text3 y text4, el asunto es los sig. En text1 escribe el usuario una clave de 17 dígitos y al presionar enter toma los primeros 5 dígitos y los pasa a un text2 entonces como puedo hacer para que compare el contenido de text2 con el campo clave de mi tabla y si es = text2 a algún registro de la tabla m muestre en text3 la marca y en text4 el modelo y al final guardar los 4 textbox en una nueva tabla llamada nueva.
1 respuesta
Respuesta
1
1
Anónimo
Primero veremos lo de leer solo los 5 primeros dígitos de tu clave:
for i = 1 to 5
text2.text = text2.text & Mid(text1.tex,i,1)
next
En el anterior ciclo le entregamos a text2 los 5 primeros caracteres de la clave.
La función Mid() lee cada uno de los caracteres del textbox.
Ahora a comprar con el campo de la tabla:
"SELECT * FROM marca WHERE clave ='" & text2.text & "'"
text3.text = RS!Marca
text4.text = RS!Modelo
Eso seria lo que tienes que hacer para realizar la comparación.
Ahora si la respuesta no es muy clara o poco consistente no dudes en decírmelo y con gusto te explicare de una mejor manera que para eso estamos.
Bye.
for i = 1 to 5
text2.text = text2.text & Mid(text1.tex,i,1)
next
En el anterior ciclo le entregamos a text2 los 5 primeros caracteres de la clave.
La función Mid() lee cada uno de los caracteres del textbox.
Ahora a comprar con el campo de la tabla:
"SELECT * FROM marca WHERE clave ='" & text2.text & "'"
text3.text = RS!Marca
text4.text = RS!Modelo
Eso seria lo que tienes que hacer para realizar la comparación.
Ahora si la respuesta no es muy clara o poco consistente no dudes en decírmelo y con gusto te explicare de una mejor manera que para eso estamos.
Bye.
Hola perdón por esta pregunta, la verdad no m quedo muy claro lo anterior, donde va la part dl código de la consulta osea en que part dl formulario va y RSMarca y RSModelos aq t refieres con RS si podrías explicarm gracias y buen día.
El código va en el evento KeyPress del textbox.
Ahora el RS es el objeto creado para el recordset Ej:
dim RS as DAO.Recordset o Dim RS as ADODB.Recordset
Con este objeto lees el campo de tu tabla, como también le puedes dar valores al campo de tu tabla.
Ej. De como se puede dar valores:
RS. AddNew
RS!Marca = Text3.text
RS.Update
Cualquier duda me dices, ya que te puedo dar un código más completo da la conexión con la base de datos, etc, por medio de DAO o ADO.
Acá te he dado ejemplos simples ya que no se si has realizado la conexión y demás cosas.
Ahora el RS es el objeto creado para el recordset Ej:
dim RS as DAO.Recordset o Dim RS as ADODB.Recordset
Con este objeto lees el campo de tu tabla, como también le puedes dar valores al campo de tu tabla.
Ej. De como se puede dar valores:
RS. AddNew
RS!Marca = Text3.text
RS.Update
Cualquier duda me dices, ya que te puedo dar un código más completo da la conexión con la base de datos, etc, por medio de DAO o ADO.
Acá te he dado ejemplos simples ya que no se si has realizado la conexión y demás cosas.
Hola muchas gracias por toda tu ayuda creo que todo esta bien, pss hasta ahora si m ha funcionado m costo un poco de trabajo pero todo va bien, quisiera hacerte otra pregunta ojala m pudieras ayudar mira tengo que comparar dos fechas y m muestre todos los registros entre estas dos fechas en un datagrid en otras palabras necesito hacer una consulta que compare el campo FECHA de mi tabla con las fechas dadas por el usuario y muestre estos registros en un datagrid gracias por tu ayuda.
''''''''''''''''''''''''''''' Definidas en general''''''''''''''''''
Dim RS As ADODB.Recordset
Dim conexion As ADODB.Connection
Dim SQL as String
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''Esto lo puedes colocar en el evento click de un boton o donde estimes conveniente
' Para completar un poco mas las cosas te escribo como se realiza la coneccion a la base de datos
' con ADO aunque ya lo tengas pero de algo puede servir.
Set conexionDG = New ADODB.Connection
With conexion
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source = " & RUTADEBASEDATOS & "\" & BASEDATOS
.Open
End With
SQL = "SELECT * FROM TUTABLA WHERE Fecha1 ='" & DTPicker1.value & "' AND " & _
"Fecha2 ='" & DTPicker2.value & "'"
Set RS = New ADODB.Recordset
' Propiedades del Recordset
With RS
.CursorLocation = adUseClient
' Abre el recordset indicando la tabla
.Open SQL, conexionDG, adOpenStatic, adLockOptimistic, adCmdText
End With
Do Until RS. EOF ' Vemos que esxistan registros existen otras maneras
' Pero esta es bien simple
' En caso de no existan registros haciendo esto junto con la condición if
' No se colgara el programa.
RS. MoveNext
Loop
If RS.RecordCount <> 0 Then
Set DataGrid1.DataSource = RS
Else
Set DataGrid1.DataSource = Nothing
End If
''''''''''''''''''''''''' Hasta aca esta hecho con ADO ahora vamos con DAO
''''''''''''''''''''''''' por si usas DAO y no ADO.
''''''''''''''''''''''''''''' Definidas en general''''''''''''''''''
Dim RS As DAO.Recordset
Dim DB As DAO.Database
Dim SQL as String
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Como ya dige anteriomente creo que ya debes saber como se conecta la base de datos ' pero aca te va con DAO
Set DB = OpenDatabase(RUTADETUBASE & "\" & BASEDEDATOS)
SQL = "SELECT * FROM TUTABLA WHERE Fecha1 ='" & DTPicker1.value & "' AND " & _
"Fecha2 ='" & DTPicker2.value & "'"
Set RS = DB.OpenRecordset(SQL)
Do Until RS. EOF ' Vemos que esxistan registros existen otras maneras pero esta es bien simple
' En caso de no existan registros haciendo esto junto con la condición if
' No se colgara el programa.
RS.MoveNext
Loop
If RS.RecordCount <> 0 Then
Set DataGrid1.DataSource = RS
Else
Set DataGrid1.DataSource = Nothing
End If
La variable 'SQL' del tipo String guarda la consulta para ponerla en los procedimientos, más que nada se utiliza para no escribir tantas cosas en el procedimiento del objeto y así no se vea tan desordenado.
Set DataGrid1.DataSource = Nothing
CUando se sabe que no existen registros al DataSource del DataGrid le entregamos un Nothing que significa entregarle NADA (Nothing).
Dim RS As ADODB.Recordset
Dim conexion As ADODB.Connection
Dim SQL as String
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''Esto lo puedes colocar en el evento click de un boton o donde estimes conveniente
' Para completar un poco mas las cosas te escribo como se realiza la coneccion a la base de datos
' con ADO aunque ya lo tengas pero de algo puede servir.
Set conexionDG = New ADODB.Connection
With conexion
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source = " & RUTADEBASEDATOS & "\" & BASEDATOS
.Open
End With
SQL = "SELECT * FROM TUTABLA WHERE Fecha1 ='" & DTPicker1.value & "' AND " & _
"Fecha2 ='" & DTPicker2.value & "'"
Set RS = New ADODB.Recordset
' Propiedades del Recordset
With RS
.CursorLocation = adUseClient
' Abre el recordset indicando la tabla
.Open SQL, conexionDG, adOpenStatic, adLockOptimistic, adCmdText
End With
Do Until RS. EOF ' Vemos que esxistan registros existen otras maneras
' Pero esta es bien simple
' En caso de no existan registros haciendo esto junto con la condición if
' No se colgara el programa.
RS. MoveNext
Loop
If RS.RecordCount <> 0 Then
Set DataGrid1.DataSource = RS
Else
Set DataGrid1.DataSource = Nothing
End If
''''''''''''''''''''''''' Hasta aca esta hecho con ADO ahora vamos con DAO
''''''''''''''''''''''''' por si usas DAO y no ADO.
''''''''''''''''''''''''''''' Definidas en general''''''''''''''''''
Dim RS As DAO.Recordset
Dim DB As DAO.Database
Dim SQL as String
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Como ya dige anteriomente creo que ya debes saber como se conecta la base de datos ' pero aca te va con DAO
Set DB = OpenDatabase(RUTADETUBASE & "\" & BASEDEDATOS)
SQL = "SELECT * FROM TUTABLA WHERE Fecha1 ='" & DTPicker1.value & "' AND " & _
"Fecha2 ='" & DTPicker2.value & "'"
Set RS = DB.OpenRecordset(SQL)
Do Until RS. EOF ' Vemos que esxistan registros existen otras maneras pero esta es bien simple
' En caso de no existan registros haciendo esto junto con la condición if
' No se colgara el programa.
RS.MoveNext
Loop
If RS.RecordCount <> 0 Then
Set DataGrid1.DataSource = RS
Else
Set DataGrid1.DataSource = Nothing
End If
La variable 'SQL' del tipo String guarda la consulta para ponerla en los procedimientos, más que nada se utiliza para no escribir tantas cosas en el procedimiento del objeto y así no se vea tan desordenado.
Set DataGrid1.DataSource = Nothing
CUando se sabe que no existen registros al DataSource del DataGrid le entregamos un Nothing que significa entregarle NADA (Nothing).
Si me falto algo o la respuesta no era lo que tu querías me dices sin ningún problema.
Bye.
Bye.
Me puse a leer nuevamente tu pregunta de las fechas y ahora me doy cuenta que al parecer tu quieres que se muestren los datos que estén entre las fechas:
Por ejemplo 10/15/2008 y 10/18/2008 o 10/10/2008 y 18/10/2008
Si es asi tendrias que modificar la consulta que te realize en la variable SQL y ponerle:
SQL = "SELECT * FROM TUTABLA WHERE Fecha Between #" & DTPicker.value & "# " & _ "And #" & DTPicker2.value & "#"
De esa forma se realiza la consulta para ver datos entre fechas.
Si era eso lo que necesitabas por suerte me di cuenta, si no igual en cualquier momento puede servir.
Bye.
Por ejemplo 10/15/2008 y 10/18/2008 o 10/10/2008 y 18/10/2008
Si es asi tendrias que modificar la consulta que te realize en la variable SQL y ponerle:
SQL = "SELECT * FROM TUTABLA WHERE Fecha Between #" & DTPicker.value & "# " & _ "And #" & DTPicker2.value & "#"
De esa forma se realiza la consulta para ver datos entre fechas.
Si era eso lo que necesitabas por suerte me di cuenta, si no igual en cualquier momento puede servir.
Bye.
HOLA mira ya intent hacer esto que tu m dices de est código pero no funciono osea no m da los resultados que quiero, no respeta el rango de fechas podrías ayudarme, solo respeta el año pero no los meses ni los días gracias por tu ayuda bye y perdón por ser tan preguntona.
Para probar lo que te pase me cree una base de datos con una tabla Fechas y puse:
SQL = "SELECT * FROM Fechas WHERE Fecha Between #" & Me.DTPicker1.value And #" & Me.DTPicker2.value & "#"
Y me funciono muy bien, me respeta el año los días y los meses.
A lo mejor algo esta pasando en tu código o en tu base de datos.
Revisa tu base de datos (A todo esto que motor de base de datos Ocupas ¿Access?) Debes revisar en que formato esta el campo fecha.
También me gustaría saber si estas utilizando un control de Calendario como el DTPicker u otro o solo utilizas unos textbox para que el mismo usuario escriba la fecha.
Mira eso y si sigue el problema me escribes y pones algo del código que estas utilizando a parte del que te di yo para ver que es lo que pasa ¿Ok?, para mi no es ninguna molestia ayudarte así que cualquier cosa escríbeme.
SQL = "SELECT * FROM Fechas WHERE Fecha Between #" & Me.DTPicker1.value And #" & Me.DTPicker2.value & "#"
Y me funciono muy bien, me respeta el año los días y los meses.
A lo mejor algo esta pasando en tu código o en tu base de datos.
Revisa tu base de datos (A todo esto que motor de base de datos Ocupas ¿Access?) Debes revisar en que formato esta el campo fecha.
También me gustaría saber si estas utilizando un control de Calendario como el DTPicker u otro o solo utilizas unos textbox para que el mismo usuario escriba la fecha.
Mira eso y si sigue el problema me escribes y pones algo del código que estas utilizando a parte del que te di yo para ver que es lo que pasa ¿Ok?, para mi no es ninguna molestia ayudarte así que cualquier cosa escríbeme.
Ups me falto concatenar, una comilla y el carácter # eso me pasa por escribir muy rapido.
SQL = "SELECT * FROM Fechas WHERE Fecha Between #" & Me.DTPicker1.value & "# And #" & Me.DTPicker2.value & "#"
Bye.
SQL = "SELECT * FROM Fechas WHERE Fecha Between #" & Me.DTPicker1.value & "# And #" & Me.DTPicker2.value & "#"
Bye.
Hola mira mi bd la tengo hecha en access 2000 el campo fecha lo tengo con formato fecha y est es todo el código de mi formulario por favor si puedes ayudarme a revisarlo y m dices si hay algún error. Gracias.
Option Explicit
Dim RS As ADODB.Recordset
Dim conexion As ADODB.Connection
Dim SQL As String
Private Sub Command1_Click()
Set conexion = New ADODB.Connection
With conexion
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source =C:\DANOS\BD\Orden.MDB"
.Open
End With
SQL = "SELECT * FROM PRINCIPAL WHERE FECHA_LLEGADA Between #" & DTPicker1.value & "# And #" & DTPicker2.value & "#"
Set RS = New ADODB.Recordset
' Propiedades del Recordset
With RS
.CursorLocation = adUseClient
' Abre el recordset indicando la tabla
.Open SQL, conexion, adOpenStatic, adLockOptimistic, adCmdText
End With
Do Until RS.EOF ' Vemos que esxistan registros existen otras maneras
' pero esta es bien simple
' En caso de no existan registros aciendo esto junto con la condicion if
' no se colgara el programa.
RS.MoveNext
end sub
Option Explicit
Dim RS As ADODB.Recordset
Dim conexion As ADODB.Connection
Dim SQL As String
Private Sub Command1_Click()
Set conexion = New ADODB.Connection
With conexion
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source =C:\DANOS\BD\Orden.MDB"
.Open
End With
SQL = "SELECT * FROM PRINCIPAL WHERE FECHA_LLEGADA Between #" & DTPicker1.value & "# And #" & DTPicker2.value & "#"
Set RS = New ADODB.Recordset
' Propiedades del Recordset
With RS
.CursorLocation = adUseClient
' Abre el recordset indicando la tabla
.Open SQL, conexion, adOpenStatic, adLockOptimistic, adCmdText
End With
Do Until RS.EOF ' Vemos que esxistan registros existen otras maneras
' pero esta es bien simple
' En caso de no existan registros aciendo esto junto con la condicion if
' no se colgara el programa.
RS.MoveNext
end sub
Al parecer lo que esta fallando es el orden por el que la base de datos toma el mes y el día por lo mismo modifique tu consulta y la deje así:
"SELECT * FROM PRINCIPAL WHERE FECHA_LLEGADA Between #" & DTPicker1.Month & "/" & DTPicker1.Day & "/" & DTPicker1.Year & "# And #" & DTPicker2.Month & "/" & DTPicker2.Day & "/" & DTPicker2.Year & "#"
Esto es para que primero tome el mes luego el día y por ultimo el año.
Espero te funcione.
Cualquier cosa ya sabes.
Bye.
"SELECT * FROM PRINCIPAL WHERE FECHA_LLEGADA Between #" & DTPicker1.Month & "/" & DTPicker1.Day & "/" & DTPicker1.Year & "# And #" & DTPicker2.Month & "/" & DTPicker2.Day & "/" & DTPicker2.Year & "#"
Esto es para que primero tome el mes luego el día y por ultimo el año.
Espero te funcione.
Cualquier cosa ya sabes.
Bye.
- Compartir respuesta
- Anónimo
ahora mismo