Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Editar msflexgrid con un formulario

Estas en el tema de Editar msflexgrid con un formulario en el foro de Visual Basic clásico en Foros del Web. Hola, quiero editar un msflexgrid con un formulario. Lo que e echo a sido cuando de un click en una de la filas del msflexgrid ...
  #1 (permalink)  
Antiguo 21/04/2010, 04:29
Avatar de Sergio18  
Fecha de Ingreso: abril-2010
Ubicación: No quieras saberlo
Mensajes: 94
Antigüedad: 14 años
Puntos: 0
Editar msflexgrid con un formulario

Hola, quiero editar un msflexgrid con un formulario. Lo que e echo a sido cuando de un click en una de la filas del msflexgrid y este se añade al formulario
aqui codigo:
Código vb:
Ver original
  1. Form1.Text1.Text = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 1)
  2. Form1.Text4.Text = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 2)
  3. Form1.Text5.Text = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 3)
  4. Form1.Combo1.Text = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 4)
  5. Form1.Combo2.Text = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 5)
  6. Form1.Text2.Text = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 6)
  7. Form1.Text6.Text = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 7)
Me deja editar pero a la hora de guardar no se me guarda, esto es lo que llevo echo:
Código vb:
Ver original
  1. Set cnPrueba = New Connection
  2. 'Establecer sus propiedades
  3.     With cnPrueba
  4.         .Provider = "Microsoft.Jet.oledb.4.0"
  5.         .ConnectionString = "prueba.mdb"
  6.     End With
  7. cnPrueba.Open
  8. Set rsTbl_Direccion = New Recordset
  9. With rsTbl_Direccion
  10.     .CursorLocation = adUseClient
  11.     .Open "select * from tbl_direccion", cnPrueba, adOpenDynamic, adLockOptimistic
  12. End With
  13. With rsTbl_Direccion
  14. MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 1) = Form1.Text1.Text
  15. MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 2) = Form1.Text4.Text
  16. MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 3) = Form1.Text5.Text
  17. MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 4) = Form1.Combo1.Text
  18. MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 5) = Form1.Combo2.Text
  19. MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 6) = Form1.Text2.Text
  20. MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 7) = Form1.Text6.Text
  21. End With

Ayuda y Saludos

Última edición por Sergio18; 21/04/2010 a las 05:17
  #2 (permalink)  
Antiguo 22/04/2010, 07:55
 
Fecha de Ingreso: noviembre-2006
Mensajes: 227
Antigüedad: 17 años, 5 meses
Puntos: 6
Respuesta: Editar msflexgrid con un formulario

No te lo edita porque tienes que hacer un UPDATE a la base de datos y posteriormente volver a llenar el Flex
  #3 (permalink)  
Antiguo 22/04/2010, 08:13
Avatar de Sergio18  
Fecha de Ingreso: abril-2010
Ubicación: No quieras saberlo
Mensajes: 94
Antigüedad: 14 años
Puntos: 0
Respuesta: Editar msflexgrid con un formulario

Hola SalomonSab gracias por contestar, he estado investigando mas y me han dicho que es con un insert into, lo tengo echo asi:

Código vb:
Ver original
  1. Private Sub Command5_Click()
  2. Set cnPrueba = New Connection
  3. 'Establecer sus propiedades
  4.     With cnPrueba
  5.         .Provider = "Microsoft.Jet.oledb.4.0"
  6.         .ConnectionString = "prueba.mdb"
  7.      End With
  8.     cnPrueba.Open
  9. Set rsTbl_Direccion = New Recordset
  10. 'Establecer sus propiedades
  11. With rsTbl_Direccion
  12.     .CursorLocation = adUseClient
  13.     .Open "insert into tbl_direccion (Nombre,Apellidos,Direccion,Ciudad,Provincia,Telefono,CP) values('" & _
  14.     Text1.Text & "','" & _
  15.     Text4.Text & "','" & _
  16.     Text5.Text & "','" & _
  17.     Combo1.Text & "','" & _
  18.     Combo2.Text & "','" & _
  19.     Text2.Text & "','" & _
  20.     Text6.Text & "')", cnPrueba, adOpenDynamic, adLockOptimistic
  21. End With
  22. With rsTbl_Direccion
  23.     MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 1) = Form1.Text1.Text
  24.     MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 2) = Form1.Text4.Text
  25.     MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 3) = Form1.Text5.Text
  26.     MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 4) = Form1.Combo1.Text
  27.     MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 5) = Form1.Combo2.Text
  28.     MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 6) = Form1.Text2.Text
  29.     MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 7) = Form1.Text6.Text
  30. End With
  31. End Sub

Pero hay un problema, en modo ejecucion si me edita el felxgrid pero cuando salgo y vuelvo a entrar se me ha añadido una fila que es la que he editado y lo que iva a editar se queda igual que antes de editarlo

Saludos
  #4 (permalink)  
Antiguo 22/04/2010, 09:20
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 5 meses
Puntos: 13
Respuesta: Editar msflexgrid con un formulario

Hola

Lo siento pero no comprendo muy bien el código. Que es lo que quieres hacer exactamente, modificar un registro existente o insertar un nuevo registro?

Para insertar un nuevo registro tienes que aplicar la sentencia INSERT y para modificarla utiliza UPDATE. No se si el código que has puesto te funciona, pero para las clausulas insert, update o delete yo utilizo la conexión a la bd, no el recordset, es decir:

Código vb:
Ver original
  1. cnPrueba.Execute "INSERT INTO Tabla1(campo1, campo2,...) VALUES(...

Para actualizar el msflexgrid tienes que hacer lo mismo que te comente en el post anterior, cargar el recordset con una select, vaciar el msflexgrid y llenarlo.

--Saludos--
  #5 (permalink)  
Antiguo 22/04/2010, 09:28
Avatar de Sergio18  
Fecha de Ingreso: abril-2010
Ubicación: No quieras saberlo
Mensajes: 94
Antigüedad: 14 años
Puntos: 0
Respuesta: Editar msflexgrid con un formulario

Lo que quiero es modificarla pero con el update no se como se hace y me dijeron que con el insert to se editaba, y por eso lo he puesto.
Y si pongo cnPrueba.Execute me da un error. Y el codigo que tengo lo que hace es que :
-En modo ejecucion parece que la edita
-Cuando lo cierro y vuelvo a entrar de mede haberse editado la fila seleccionada, se ha añadido a la tabla, o sea si tenia 2 filas ahora tengo 3 (creo que ya se me entiende lo k pasa).
-Lo que quiero es editarla, si se hace con el update dime con es la sentencia sql y lo hago.

Gracias y Salu2
  #6 (permalink)  
Antiguo 22/04/2010, 09:45
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 5 meses
Puntos: 13
Respuesta: Editar msflexgrid con un formulario

Hola

En el siguiente enlace tienes un curso o manual de lenguaje SQL muy sencillo, corto y sobre todo muy bueno: http://www.mailxmail.com/curso-sql

La sentencia Update sería de la siguiente forma:

Cita:
UPDATE Tabla SET Campo1=Valor1, Campo2=Valor2, CampoN=ValorN
WHERE Criterio
--Saludos--
  #7 (permalink)  
Antiguo 22/04/2010, 09:53
Avatar de Sergio18  
Fecha de Ingreso: abril-2010
Ubicación: No quieras saberlo
Mensajes: 94
Antigüedad: 14 años
Puntos: 0
Respuesta: Editar msflexgrid con un formulario

He echo esto:

Código vb:
Ver original
  1. Private Sub Command5_Click()
  2. Dim ID As Integer
  3. Set cnPrueba = New Connection
  4. 'Establecer sus propiedades
  5.     With cnPrueba
  6.         .Provider = "Microsoft.Jet.oledb.4.0"
  7.         .ConnectionString = "prueba.mdb"
  8.      End With
  9.     cnPrueba.Open
  10. Set rsTbl_Direccion = New Recordset
  11. 'Establecer sus propiedades
  12. With rsTbl_Direccion
  13.     .CursorLocation = adUseClient
  14.     .Open "UPDATE tbl_direccion SET nombre='" & Text1 & "', apellidos='" & Text4 & "',direccion='" & Text5 & "',ciudad='" & Combo1 & "',provincia='" & Combo2 & "',telefono='" & Text2 & "',cp='" & Text6 & "' Where id = " & ID & ""
  15.     .ActiveConnection = cnPrueba
  16.     .LockType = adLockOptimistic
  17. End With
  18. With rsTbl_Direccion
  19.     MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 1) = Form1.Text1.Text
  20.     MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 2) = Form1.Text4.Text
  21.     MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 3) = Form1.Text5.Text
  22.     MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 4) = Form1.Combo1.Text
  23.     MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 5) = Form1.Combo2.Text
  24.     MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 6) = Form1.Text2.Text
  25.     MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 7) = Form1.Text6.Text
  26. End With
  27. End Sub

Me da error 3709:No se puede ulizar la conexion para realizar esta operacion. Esta cerrada o no es valida para este contexto.

Y me señala el .open y le he puesto cnPrueba.execute pero solo lo edita en ejecucion y no la guarda.

Gracias y saludos
  #8 (permalink)  
Antiguo 22/04/2010, 10:18
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 5 meses
Puntos: 13
Respuesta: Editar msflexgrid con un formulario

Hola

Como te comento anteriormente, las sentencias INSERT, UPDATE o DELETE yo NO las realizo con el recordset, no si de ese modo funcionan, no lo había visto nunca. Yo lo haría despues del cnPrueba.Open

Código vb:
Ver original
  1. cnPrueba.execute "UPDATE tbl_direccion SET nombre='" & Text1 & "', apellidos='" & Text4 & "',direccion='" & Text5 & "',ciudad='" & Combo1 & "',provincia='" & Combo2 & "',telefono='" & Text2 & "',cp='" & Text6 & "' Where id = " & ID & ""

--Saludos--
  #9 (permalink)  
Antiguo 22/04/2010, 14:19
Avatar de Sergio18  
Fecha de Ingreso: abril-2010
Ubicación: No quieras saberlo
Mensajes: 94
Antigüedad: 14 años
Puntos: 0
Respuesta: Editar msflexgrid con un formulario

O sea quieres que primero haga esto:

Código vb:
Ver original
  1. .Open "UPDATE tbl_direccion SET nombre='" & Text1 & "', apellidos='" & Text4 & "',direccion='" & Text5 & "',ciudad='" & Combo1 & "',provincia='" & Combo2 & "',telefono='" & Text2 & "',cp='" & Text6 & "' Where id = " & ID & ""

y debajo

Código vb:
Ver original
  1. cnPrueba.execute "UPDATE tbl_direccion SET nombre='" & Text1 & "', apellidos='" & Text4 & "',direccion='" & Text5 & "',ciudad='" & Combo1 & "',provincia='" & Combo2 & "',telefono='" & Text2 & "',cp='" & Text6 & "' Where id = " & ID & ""

¿no?

saludos
  #10 (permalink)  
Antiguo 22/04/2010, 14:47
Avatar de Sergio18  
Fecha de Ingreso: abril-2010
Ubicación: No quieras saberlo
Mensajes: 94
Antigüedad: 14 años
Puntos: 0
Respuesta: Editar msflexgrid con un formulario

He puesto este codigo:

Código vb:
Ver original
  1. Private Sub Command5_Click()
  2. Dim ID As Integer
  3. Set cnPrueba = New Connection
  4. 'Establecer sus propiedades
  5.     With cnPrueba
  6.         .Provider = "Microsoft.Jet.oledb.4.0"
  7.         .ConnectionString = "prueba.mdb"
  8.      End With
  9.     cnPrueba.Open
  10. Set rsTbl_Direccion = New Recordset
  11. 'Establecer sus propiedades
  12. With rsTbl_Direccion
  13.     .CursorLocation = adUseClient
  14.     cnPrueba.Execute "UPDATE tbl_direccion SET nombre='" & Text1 & "', apellidos='" & Text4 & "',direccion='" & Text5 & "',ciudad='" & Combo1 & "',provincia='" & Combo2 & "',telefono='" & Text2 & "',cp='" & Text6 & "' Where id = " & ID & ""
  15.     .ActiveConnection = cnPrueba
  16.     .LockType = adLockOptimistic
  17. End With
  18. With rsTbl_Direccion
  19.     MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 1) = Form1.Text1.Text
  20.     MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 2) = Form1.Text4.Text
  21.     MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 3) = Form1.Text5.Text
  22.     MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 4) = Form1.Combo1.Text
  23.     MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 5) = Form1.Combo2.Text
  24.     MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 6) = Form1.Text2.Text
  25.     MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 7) = Form1.Text6.Text
  26. End With
  27. End Sub

No da errores pero no me guarda a fila que edito
  #11 (permalink)  
Antiguo 23/04/2010, 01:05
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 5 meses
Puntos: 13
Respuesta: Editar msflexgrid con un formulario

Hola

En principio el código debería ser así:
Código vb:
Ver original
  1. Set cnPrueba = New Connection
  2. 'Establecer sus propiedades
  3.     With cnPrueba
  4.         .Provider = "Microsoft.Jet.oledb.4.0"
  5.         .ConnectionString = "prueba.mdb"
  6.      End With
  7.     cnPrueba.Open
  8.     cnPrueba.execute "UPDATE tbl_direccion SET nombre='" & Text1 & "', apellidos='" & Text4 & "',direccion='" & Text5 & "',ciudad='" & Combo1 & "',provincia='" & Combo2 & "',telefono='" & Text2 & "',cp='" & Text6 & "' Where id = " & ID & ""

Con este código tendría que cambiar los datos del registro (simpre cuando la sentencia UPDATE este bien realizada). Luego solo te queda volver a cargar el msflexgrid

--Saludos--
  #12 (permalink)  
Antiguo 23/04/2010, 01:15
Avatar de Sergio18  
Fecha de Ingreso: abril-2010
Ubicación: No quieras saberlo
Mensajes: 94
Antigüedad: 14 años
Puntos: 0
Respuesta: Editar msflexgrid con un formulario

Pues e puesto ese codigo k me has dado, y me dice que la opcion no esta permitida si el objeto esta abierto, y me señala el open.
O sea que a lo mejor lo que falla es el update en el

Where id = " & ID & "

Yo el ID lo he puesto como una variable, eso es lo que puede fallar pero entonces que tendria que poner en el where id ?
Código vb:
Ver original
  1. Dim ID As Integer
  2. cnPrueba.Execute "UPDATE tbl_direccion SET nombre='" & Text1 & "', apellidos='" & Text4 & "',direccion='" & Text5 & "',ciudad='" & Combo1 & "',provincia='" & Combo2 & "',telefono='" & Text2 & "',cp='" & Text6 & "' Where id = " & ID & ""

Saludos

edito: Tambien hay una cosa que se me olvido decir aunque no se si es de mucha importancia, es que el campo id no lo tengo en el formulario solo lo tengo en el acces(tipo autonumerico).

Última edición por Sergio18; 23/04/2010 a las 01:30
  #13 (permalink)  
Antiguo 23/04/2010, 01:35
Avatar de Sergio18  
Fecha de Ingreso: abril-2010
Ubicación: No quieras saberlo
Mensajes: 94
Antigüedad: 14 años
Puntos: 0
Respuesta: Editar msflexgrid con un formulario

Ya esta:

Código vb:
Ver original
  1. Private Sub Command5_Click()
  2. Set cnPrueba = New Connection
  3. 'Establecer sus propiedades
  4.     With cnPrueba
  5.         .Provider = "Microsoft.Jet.oledb.4.0"
  6.         .ConnectionString = "prueba.mdb"
  7.      End With
  8.     cnPrueba.Open
  9. Set rsTbl_Direccion = New Recordset
  10. 'Establecer sus propiedades
  11. With rsTbl_Direccion
  12.     .CursorLocation = adUseClient
  13.     cnPrueba.Execute "UPDATE tbl_direccion SET nombre='" & Text1 & "', apellidos='" & Text4 & "',direccion='" & Text5 & "',ciudad='" & Combo1 & "',provincia='" & Combo2 & "',telefono='" & Text2 & "',cp='" & Text6 & "' Where id  = " & Text3 & ""
  14.     .ActiveConnection = cnPrueba
  15.     .LockType = adLockOptimistic
  16. End With
  17. With rsTbl_Direccion
  18.     MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 1) = Form1.Text1.Text
  19.     MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 2) = Form1.Text4.Text
  20.     MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 3) = Form1.Text5.Text
  21.     MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 4) = Form1.Combo1.Text
  22.     MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 5) = Form1.Combo2.Text
  23.     MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 6) = Form1.Text2.Text
  24.     MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 7) = Form1.Text6.Text
  25. End With
  26. End Sub

La culpa fue mia no sabia que tambien tenia que añadir el id en el formulario, muchas gracias y saludos
  #14 (permalink)  
Antiguo 23/04/2010, 01:38
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 5 meses
Puntos: 13
Respuesta: Editar msflexgrid con un formulario

Hola

Ese mensaje te esta diciendo que la conexión a la bd ya esta abierta (lo habrás abierto en otra parte del código), lo que puedes hacer es comprobar si la conexión esta abierta y si no, abrirla, para ello:

Cita:
If cnPrueba.State = adStateClosed Then cnPrueba.Open
Para controlar la sentencia UPDATE mete su valor en una variable y pon un punto de interrupción para controlar el valor final que tiene la UPDATE y luego probarla en access.

--Saludos--
  #15 (permalink)  
Antiguo 23/04/2010, 02:28
Avatar de Sergio18  
Fecha de Ingreso: abril-2010
Ubicación: No quieras saberlo
Mensajes: 94
Antigüedad: 14 años
Puntos: 0
Respuesta: Editar msflexgrid con un formulario

OK, gracias Insomnia

Etiquetas: formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:08.