![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Actualizar valores desde una consulta
Hola amigos, tengo un formulario de c++Builder donde he colocado los siguientes componentes: mysqlquery, dbgrid, mysqldatabase, datasource (creo que esos eran los nombres) he conseguido conectar todo y que haga una consulta con el mysqlquery y que me lo muestre en el dbgrid. Hasta ahí todo bien. El caso es que no se si puedo hacer que al modificar algo en el dbgrid se actualice en la base de datos. ¿alguien sabe? Estoy usando dac for mysql.
|
|
#2
|
||||
|
||||
|
Dependerá un poco de los componentes en sí y de la consulta que hagas. Una consulta del tipo
normalmente será actualizable (*). Esto quiere decir que bastará con que hagas el POST para que los cambios del DBGrid se reflejen en la base. El POST lo puedes hacer explícitamente, llamando al método correspondiente de mysqlquery, o implícitamente al momento de cambiarte de registro. Si la consulta involucra enlaces a otras tablas (JOINs) entonces es posible que no puedas actualizar los datos de foma tan sencilla pues el componente necesita saber exactamente a qué registro de qué tabla pertenece el campo modificado. Algunos conjuntos de componentes permiten especificar (en un componete auxilar o una propiedad) la consulta SQL necearia paa actualizar. En otros casos, tendrás que armar tú mismo la consulta UPDATE. ---------------------------- (*) Siempre y cuando columnas incluya una llave única de la tabla. // Saludos |
|
#3
|
||||
|
||||
|
Hola aguml.
No he usado los componentes Microolap DAC for MySQL, pero por lo que pude mirar en la ayuda, son muy similares en el uso a los demás. Siendo así, deberías asociar al TMySQLQuery un TMySQLUpdateSQL para poder realizar consultas actualizables. Otra opción sería que optaras por usar el componente TMySQLDataset. Saludos ![]()
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
|
#4
|
||||
|
||||
|
He probado de dos maneras.
He colocado un componente TMySQLUpdateSQL y en el TMySQLQuery he puesto a este en la propiedad oportuna, luego en un botón hago esto: Código:
mySQLUpdateSQL1->ModifySQL->Clear();
mySQLUpdateSQL1->ModifySQL->Add(AnsiString().sprintf("UPDATE \"actor\""
"SET first_name = :%s"
"WHERE actor_id = :%s", EditName->Text, EditId->Text));
mySQLUpdateSQL1->ModifySQL->Clear();
El segundo modo que he intentado es este: Código:
if(DBGrid1->DataSource->DataSet->Active)
DBGrid1->Columns->operator [](1)->Field->Text="CUBO";
Cita:
|
|
#5
|
||||
|
||||
|
Hola aguml.
Para el primer caso tendrías que asociar el TMySQLUpdateSQL mediante la propiedad UpdateObject del TMySQLQuery y luego configurar en el primero las propiedades: DeleteSQL, InsertSQL y ModifySQL (al menos en los componentes como TUpdateSQL y TIBUpdateSQL funciona de ese modo). En el segundo caso, el mensaje de error lo está indicando. Tenes que poner el DataSet en modo edición o inserción antes de intentar la actualización: Código PHP:
Saludos ![]()
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
|
#6
|
||||
|
||||
|
Gracias amigo, ya he conseguido insertar, modificar, y eliminar de la base de datos pero ahora tengo otras dudas. Para eliminar o insertar una fila no tengo que ponerlo en modo Edit o Insert, para modificar si ¿a caso al eliminar o insertar una fila no estoy modificando la base de datos? es mas, si hago uso de Post() despues de insertar me guarda los cambios y sin el no me los guarda pero si lo uso despues de eliminar una fila me tira el error de que tengo que ponerla en Edit o Insert pero la fila ya aparece borrada permanentemente. Supongo que será algo que el creador de este componente ha querido hacer asi.
Otra duda, cuando elimino filas el indice es autonumerico y no queda correlativo ¿como puedo hacer que quede correlativo? Y la última, me gustaria que el indice apareciera con el formato "00000000" pero es un entero y no muestra los ceros a la izquierda ¿Se puede hacer lo que deseo? |
|
#7
|
||||
|
||||
|
Hola aguml.
¿ Que componentes data-aware estas usando ? (DBGrid, DBEdit, etc.) ¿ Como estás realizando el borrado, inserción y modificacion ? ¿ Como y donde confirmas la acción realizada ? Saludos ![]()
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Consulta con valores null | Luis M. | Firebird e Interbase | 15 | 11-03-2012 00:06:56 |
| Como obtener valores de una consulta | Alexandro | SQL | 5 | 26-02-2009 22:21:22 |
| Consulta de valores consecutivos | Guillermosalva | SQL | 5 | 27-07-2007 08:49:15 |
| Consulta entre valores | rruffino | Conexión con bases de datos | 1 | 11-05-2007 03:25:34 |
| Campos de consulta con valores NAN | ElDuc | SQL | 1 | 12-09-2005 10:28:59 |
|