![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
|||
|
|||
|
Hola Caral
Claro que funciona tu metodo de hecho yo alguna que otra vez lo hice asi....
![]() Pero la raiz de lo que estoy planteando es la siguiente no es la instruccion de llenado del conjunto de datos, tampoco es la instruccion update(ni siquiera es como simular las variables Old al puro estilo de los triggers) ... el problema es que el conjunto de datos del query en cuestion se muestra en un grid y la idea es que el usuario por facilidad, llene una de las columnas de dicho grid .... claro al query ser de varias tablas el post no sabe a donde ir a cual tabla y cual columna, te pongo un ejemplo (se me acaba de ocurrir) de lo que quiero decir imaginate una aplicacion que sirva para registrar las notas obtenidas de un grupo de alumnos de una academia ... pues la consulta iria minimo a la tabla ALUMNOS,ASIGNATURAS,CURSO siendo la tabla curso la que tiene la clave principal para el alumno la asignatura la seccion y por supuesto la columna a actualizar la NOTA ... pues por facilidad al usuario le conviene ver un grid con el grupo de alumnos de la asignatura X de la seccion Y y asi vaciar estas notas, y como pues facil cuando ya la consulta esta cargada en el grid pues te vas a la columna nota escribes la nota, luego cursor abajo y nota siguiente y asi ..... vez... al final pues el Profesor asigno las notas correspondientes sin embargo cuando haces esto el sistema al intentar salir de la primera celda modificada te lanza este error informacion insuficiente para actualizar o agregar fila ..... con Corelab tu asignabas el comortamiento de modificacion por medio del contro UpdateSql que permitia instrucciones de modificacion insercion o borrado sobre la tabla a la que referencia el query principal cosa de actuar en consecuencia .... Gracias Caral ..... P.D : por cierto donde estan todos los demas, hace un tiempo tengo la impresion de que este foro se esta quedando sin gente, se fueron por otro lenguaje o que si es asi digan cual para ver si los seguimos .....![]() |
|
#2
|
|||
|
|||
![]() ![]() ![]() ![]() ![]() ![]() |
|
#3
|
|||
|
|||
|
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
|
#4
|
|||
|
|||
|
Hola a todos, no señor nada que ver que es con Caral la cosa, solo que el es el unico que me a dicho algo de algo (lo cual agradezco infinitamente) pero no es a donde quiero llegar ....
lo que quiero es hacer algo que simule el UpdateSql pero con Ado , como ya dije lo hice usando tablas(clientDataSet) y luego aplico en un evento(boton) la sentencias en un ado commnand de actualizacion de datos a la tabla correspondiente... Pero eso implica usar no solo el adocommand sino tambien el DataProvider y el clientDataset .... ![]() Gracias ... Vamos alguien animese y digame algo .... ![]() |
|
#5
|
|||
|
|||
|
Pues nadie me dice nada asi que insisto, el ADoquery me lanza un error cuando intento actulizar un registro, bien la idea es interceptar ese error y en alguna parte colocar el codigo de actualizacion de un AdoCommand,
la pregunta es Donde intercepto el error y Donde coloco el Codigo de Update (adocommand)Please...... Please ... please .. ![]() |
|
#6
|
||||
|
||||
|
Yo no he trabajado con ADO, por eso mismo no he dejado ningun mensaje en este hilo, aunque lo he visitado mucho. Puede me equivoque en las siguientes afirmaciones.
Según veo, has llegado al límite de ADO. Quiero decir, estás intentando hacer algo para lo que ADO no está preparado, así que lo más fácil es: - Cambiar de componentes. Igual no es viable. - hacer las cosas como ADO espera, si para ello necesitas un ClientDataset y otra parafernalia... pues ajo y agua. Como sugerencia, crea un frame que ya tenga todos esos componentes y te quite trabajo en la repetición de código. En cuanto a la nueva pregunta, espero que los ADO tengan un evento OnPostError, lugar donde podrás capturar el error y actuar en consecuencia, pero vamos, no es lo óptimo hacer saltar un error sabiendo que siempre ocurrirá para después parchearlo. Otra opción es usar el evento BeforePost, allí siempre harías lo mismo: - capturar los nuevos valores que el usuario ha editado. - Cancelar el guardado (Dataset.Cancel); - Ejecutar tu AdoCommand. - Hacer un refresh del registro. Quizás lo más complejo de todo, pero "más eficiente", sea usar un StringGrid, o un control no enlazado a datos, de esa forma tendrás total libertad para moverte entre columnas del StringGrid y hacer las actualizaciones. Ésto por supuesto, necesitará mucho más código delphi. El no tener claves primarias, es un error grave de diseño. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#7
|
|||
|
|||
|
en cuanto a lo de las claves primarias
Pues la verdad la bd no la diseñe yo, solo estaba alli con un sistema ya existente, por esa razon no debo hacer grandes cambios porque se afecta el sistema en cuestion, ahora bien lo de las claves primarias no lo entiendo bien (digo el porque del la referencia a ellas y su relacion con lo de ADo
)en efecto existen columnas que uso como clave, (aquellas por medio de las cuales hago el join),ademas dentro de las tablas estan definidos indices sobre una o varias columnas bien sea el caso ..... De verdad no entiendo esta parte, ya fue referenciada por Caral y ahora por Lepe... no me queda mas que rendirme y aceptar que algo estoy haciendo mal (por ignorancia claro esta), en todo caso les pido ayuda.... P.D ... con todo respeto Lepe no creo que sea posible que Esto no se pueda con ADo, es algo muy util y dudo que a los diseñadores de esa tecnologia se les pasara sobre todo habiendo antecedentes (sqlUpdate de Bde), estoy seguro que alguien sabe como hacerlo lo que pasa es que esta de vacaciones del Foro ![]() ![]() ![]() ![]() tu opcion en el BeforePost ya la intente pero con otro orden en las sentencias voy a probar asi como dices .... Gracias amigos |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| MaxRecord de adoquery | Rako | Conexión con bases de datos | 2 | 09-07-2007 16:28:24 |
| ADOQuery | silviodp | Conexión con bases de datos | 15 | 13-12-2006 18:45:34 |
| concatenar en un adoquery | crack_neon | Conexión con bases de datos | 2 | 04-05-2006 22:57:24 |
| Duda con AdoQuery | Telemaco | Conexión con bases de datos | 1 | 26-04-2004 12:27:54 |
| AdoQuery | davidgaldo | Conexión con bases de datos | 1 | 05-02-2004 21:07:29 |
|