Duda con datagrid

Hola buenas tardes/dias tengo una base de datos en access 2000 y esta se muestra en una datagrid (visual basic 6) el problema que tengo es que en mi base de datos tengo registros del siguiente formato:
E1L1
E1L2
¿E1L3
cuándo yo ingreso los datos en E1L1 en todos los registros que tiene E1 me pone el mismo registro como puedo resolver este problema para que solo actualice los registros que se visualizan en la grilla y no todos?
De antemano muchas gracias por tus comentarios
Un saludo

1 Respuesta

Respuesta
1
Pues puedes realizar una consulta sql y decirle que solo modifique los parecidos a los registros que tu le digas por ejemplo si solo quieres modificar el E1L1 especificarías así:
//Primero en este ejemplo tengo un recordset para los registros existentes y otro para los que se modificaran. Aquí empiezas el ciclo en tu recordset hasta que sea EOF(Fin de Archivo) y cuando llegue al ultimo se salga.
While Not rs3.EOF 'Inicia el ciclo
        RsSelect. Close '<---- En esta parte cierras el recordset para poder realizar el ciclo
                                        Abriéndolo y cerrándolo(esto es para cargar los INDEX o claves
                                         Principales de tu tabla, *Lo inicias en el evento LOAD.)
        rsSelect.Open "Select * From (TU TABLA) where (TU CLAVE)=" &
        DataGrid1.Columns.Item(*INDICE).Text, cn, adOpenStatic, adLockOptimistic
       Ahora realizas la consulta SQL de los campos a modificar
       cn.Execute "Update (TU TABLA) Set (CAMPO A MODIFICAR) = " & (TEXTBOX
       O CON LO QUE LOS MODIFIQUES) " Where (TU CLAVE) = " & 
       DataGrid1. Columns.Item(*INDICE).Text
       Cuando termines, el recordset se mueve al siguiente registro de tu tabla y repite el
ciclo verificando los campos a modificar, por si hay más de 1 a modificar.
       Rs3. MoveNext
Wend 'Termina el ciclo
*INDICE = Tu indice el el numero de columna en el que se encuentra el campo con el que quieres comparar los nuevos registros.
Espero te sea útil esta información, mi correo es [email protected] por si necesitas que te explique algunas cosas más de los datagrid o código que no entiendas.
Hola muchas gracias por contestar tengo una pequeña duda en el código, ya que el data grid hace consultas mediante filtros con combobox; mi duda es si puedo hacer lo siguiente en el código que me diste:
While Not rs3.EOF 'Inicia el ciclo 
        rsSelect.Close 
        rsSelect.Open "Select * From sqcaptura where combo3=" & 
        DataGrid1.Columns.Item(*INDICE).Text, cn, adOpenStatic, adLockOptimistic
Lo del *INDICE no lo entiendo bien
Un Saludo y gracias por tu tiempo :)
Aaa ok!
Entonces si solo quieres que te filtre al momento de que selecciones un campo en tu combobox pues seria más fácil, mira pues si sabes cuál es la clave principal de la tabla "sqcaptura", por ejemplo "idCaptura", cargas todos los id al combobox en el evento "LOAD" del formulario usando Add Item, quedaría algo parecido al código que te pongo:
Para este ejemplo se necesita:
1 Formulario
1 Componente ADO
1 Componente Datagrid
1 ComboBox
2 Botones
 
Primero creas un proyecto EXE Estándar, luego creas todos los controles dentro del mismo (Sin cambiarles el nombre), después copias este código tal y como está, ya te puse lo que hace cada función y evento en comentarios de vb.
'Declaracion del Recordset y la Conexion
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Private Sub Form_Load()
On Error Resume Next 'Control de errores
Me.Caption = "Filtrar mediante un ComboBox"
Me.Command1.Caption = "Seleccionar"
Me.Command2.Caption = "Mostrar Todos"
'Creamos la Conexion a la BD
Set cnn = New ADODB.Connection
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                       "Data Source =" & App.Path & "\bd1.mdb; " & _
                       "Persist Security Info=False"
cnn.CursorLocation = adUseClient
cnn.Open
'Cargamos los datos al recordset
Set rst = New ADODB.Recordset
rst.Open "Select * From sqcaptura", cnn, adOpenStatic, adLockOptimistic
'Claves primarias de la tabla
Combo1.AddItem (1)
Combo1.AddItem (2)
Combo1.AddItem (3)
Combo1.AddItem (4)
End Sub
Private Sub Command1_Click()
If Combo1.Text <> "" Then '<- Por si no se ha seleccionado un id
Else
    MsgBox "Selecciona un ID", vbInformation, "Aviso"
    Exit Sub
End If
    'Filtramos y los mostramos en el Datagrid
    rst.Filter = "id" & " LIKE " + Combo1.Text + ""
    Set DataGrid1.DataSource = rst
End Sub
Private Sub Command2_Click()
    'Reiniciamos el Filtro
    rst.Filter = ""
    Set DataGrid1.DataSource = rst
End Sub
Cuando ejecutes el proyecto verificas si hace lo que quieres y sino pues me dices y te lo modifico para que funcione como tu quieras, en mi caso no tuve a nadie que me ayudara y me puse a leer bastante para aprender pero ahora que se me da la oportunidad de ayudar lo hago con gusto porque sé que es difícil ir solos y sin ayuda, ya sabes que estoy aquí por si te atoras en otra cosa más.
Hola jiji si dicen que la mejor forma de aprender es con ensayo y error y es muy cierto o.o.
Creo que no me explicado bien lo que pasa es que mi proyecto trata sobre cuantas personas entran en los torniquetes que están a la entrada del metro los números los dan en libretas y la finalidad del proyecto es que tengo que crear un sistema para poder capturar los números que son de 6 cifras.
Ya tengo casi todo como puedes ver en el proyecto pero cuando trato de ingresar los números me pone el mismo registro en todos los id de torniquete que tengan coincidencia con el id de estación :S no entiendo porque me lo hace espero que puedas seguir ayudándome u.u
Te mando un saludo y te pido disculpas por no explicarme bien
Te agradezco mucho tu tiempo y paciencia n.n!
Que te parece si me mandas el código, solo del formulario para poder checar que es lo que esta haciendo mal, de otra forma pues en verdad no se como avanzar en tu problema, pero pues haz eso, amm si quieres pásamelo y entre los 2 tratamos de sacar tu proyecto adelante, mira si te preguntas si te robare código o no pues ami no me gusta mucho hacer ese tipo de cosas y aparte aquí en san luis potosí no hay nada parecido al metro je je...
En verdad me gustaría poder seguir ayudándote, porqué a nadie he dejado con la duda y no me gustaría que fuera esta la primera vez.
Amm creo te había dejado mi correo, ahí con toda confianza puedes mandar el código para que no lo postees aquí si quieres que sea más personalizada mi ayuda, de antemano gracias por seguir preguntando, yo no descartare la pregunta a menos que tu quieras.
La finalidad de esto es aprender!..
Mmm pues no no me preocupa mucho el código ya que ha sido creado por varias mentes xD pero si claro que si te mando el proyecto creo que ya te lo había mandado pero no importa te lo vuelvo a mandar :)
Gracias por ayudarme n.n
Ya te mande un ejemplo de lo que quieres, aver si es así sino pues nos ponemos a modificarlo hasta que salga bien tu proyecto.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas