Delphi - Ayuda sobre ADO

 
Vista:

Ayuda sobre ADO

Publicado por Rubén Regalado (5 intervenciones) el 14/08/2002 03:44:21
Hola a todos.
Estoy tratando de aprender ADO en Delphi 5, así que traté de desarrollar una pequeña aplicación con dos TADOQuerys, uno para consultar y otro para insertar, cada uno conectado con un TDataSource. Tengo un TADOConnection utilizando ODBC para conectar a tablas Paradox.
El detalle es que me permite consultar cuando ejecuto el Open, pero al utilizar el método Post, ya sea que utilice el método Insert o Edit, me envía un error de TOleException: 'insufficient base table information for updating o refreshing'. En ambos querys utilizo un 'select * from', no utilizo ninguna otra claúsula de SQL, tal como 'group by' u 'order by'.
Mis preguntas son:
¿Tengo que usar 'insert into ...' o 'update ... set ...' en lugar de 'select ...'?
¿Qué más tengo que configurar?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda sobre ADO

Publicado por BigLuis (463 intervenciones) el 14/08/2002 16:29:00
Para introducir nuevos registros debes utilizar Insert y para modificalos Update.La sentencia Select es unicamente para traer un cursor(bloque de registros) hasta el cliente y en ocasiones, tal cual no son editables,.Luego los cambios se hacen en memoria y para volcarlos en la base de datos hay que utilizar UpdateBatch o Commit si utilizas transacciones.Te recomiento que utlices TADODataset ya que es mas potente y tiene mas métodos y eventos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda sobre ADO

Publicado por Rubén Regalado (5 intervenciones) el 14/08/2002 20:25:49
Gracias, BigLuis.
Sustituí el ADOQuery por un ADOCommand. En CommandText tengo lo siguiente: insert into TABLA (CAMPO1) values (:Param1)
Después escribo las siguientes instrucciones: Parameters.ParamValues['Param1'] := '1';
Prepared := true;
Execute;
...
Pero despliega el siguiente mensaje de error:
Operation must be use an updateable query
...
¿Donde indicas que querys son actualizables?
¿Cuál es el error?

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda sobre ADO

Publicado por BigLuis (463 intervenciones) el 15/08/2002 16:23:31
No se si con el Query que estás utilizando existe la propiedad CanModify, si es asi puedes hace : if Query1.CanModify then showmessage('Actualizable'); De todas formas casi con toda seguridad que la sentencias SELECT que lleven GRPOUP BY O DITINCT NO SON ACTUALIZABLES ni muchas en las que se relacionen dos tablas.Cada sistema y base de datos es un mundo.
Pero ¿porque no utilizas una base de datos Access? en vez de una tabla Paradox.A cada uno so suyo.Si quieres utilizar Paradox usa el BDE y los componentes Table, Query etc pues todo es nativo y correrá sin problemas. ADO se ha hecho, no solamente pero si principalmente, para el acceso a Access.Yo lo he probado y corre de maravilla con las limitaciones de Access (a mi no me gusta)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda sobre ADO

Publicado por Rubén Regalado (5 intervenciones) el 17/08/2002 00:19:46
En mi trabajo utilizamos Oracle y MS SQL para las bases de datos distribuidas y tablas de tipo Paradox o Dbase para algunas aplicaciones locales. Hemos tratado de estandarizar los nombres de aliases junto con las rutas de acceso. De ahí surgió la idea de utilizar ADO para controlar vía programación el acceso a los datos, sin tener que instalar el BDE en las máquinas donde se instalen los sistemas.
Tal vez siga tu consejo de utilizar solo componentes nativos, aunque también haya detalles que no me gusten.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda sobre ADO

Publicado por BigLuis (463 intervenciones) el 17/08/2002 16:25:56
Pienso que el problema viene por el controlador para acceder a los datos ODBC ya que según la documentacion que yo he leido sobre ADO de Delphi, cuando se accede Access por ejemplo, no solo son actualizables las sentencias Select sencillas sino las que llevan vinculadas dos tablas ya que el motor de acceso Jet 4 diferencia perfectamente entre los campos de las distintas tablas y los actualiza sin problemas, pero yo no lo he probado.
De todas formas podias tambien contemplar la idea de utilizar de forma local Interbase ya que al ser un servidor SQL podrías utilizar parte de las sentencias escritas para Oracle y SQLServer para trabajar en local.No es sencillo dar una opinion sobre un sistema serio, como parece que es el tuyo, sin conocer su construccion,estructura y finalidad.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar