![]() |
Problema con una consulta hecha de 3 formas
Hola, tengo un problemón llevo 8 horas para hacer una consulta, la he intentado hacer de 3 formas distintas.
Primeramente utilizo la tabla texportar (contador,fecha,lectura,consumo) son sus campos. Lo que pretendo es exportar datos a esta tabla mediante un query y lo que tiene que hacer la consulta es si el contador (que es la clave principal de la tabla) que pretendo introducir en la tabla texportar ya existe en esa tabla modifico sus datos (fecha,lectura,consumo) y si no existe los inserto. Necesito hacer la consulta de una vez para evitar la conexión repetida al servidor ya que la consulta está dentro de un bucle ó lazo. Acontinuación os pongo el código de como la intentado hacer.Por cierto utilizo Firebird 1.5: La primera opción por la que opté fue:
Creo que no ha resultado porque el replace pertenece a MySql y no a SQL estandar,si no me equivoco. Segunda forma:
Esta opción creo que falla por lo mismo que la anterior porque el on duplicate key es de MySql Tercera:
Esta opción realmente no se porque falla ya que los if si son permitidos en Sql estandar. Por favor, si laguien sabe como resolver esta consulta, ó si sabe otra forma de hacerla aunque sea partiendo la consulta en varias.. P.D: datos.IBADOQ= corresponde a otro query de interbase ya que con el saco los datos que quiero exportar. desde ya mismo , muchas gracias. |
Tu mensaje es casi imposible de leer.
Te sugiero que lo edites para cortar las líneas. Más aún, sería mejor si escribieras las consultas SQL directamente sin código Delphi. // Saludos |
Hola VRO!
Con respecto a esta consulta coincido en que es mejor hacerla directamente en SQL. Ya que estás utilizando FireBird 1.5 puedes aprovechar la sintaxis de los procedimientos almacenados para facilitarte este trabajo. En la definición del procedimiento puedes declarar las variables y los parámetros, utilizar sentencias IF THEN ELSE, WHILE , etc. Un ejemplo:
Te recomiendo que busques información de los procedimientos almacenados en Firebird. Un Saludo. |
Perdonad pero se ma ha olvidado deciros lo mas importante, la tabla texportar no es una tabla de la base de datos Firebird 1.5 si no que es una tabla que he creado yo directamente con codigo Delphi, en Access, solamente para exportar los datos de la tabla lecturas de Firebird 1.5(numero,fecha,lecturas, consumo), por lo que la comprobación de si existe el contador modifico los datos y si no existe inserto el datos es sobre una tabla en Access poerlo que no pùedo utilizar procedimientos almacenado ya que Access no tiene esa función.
Espero que después de esta torpeza siga contando con vuestra ayuda. Muchas gracias |
Gracias
Gracias, en verdad al final lo he hecho con procedimientos almacenado guardandolo en una tabla en Interbase y despues transportanto los registros a Access
|
Cita:
Por otra parte yo no le llamaría torpeza, todos aquí estamos en el mismo proceso de aprendizaje y retroalimentación. Un saludo. ;) |
La franja horaria es GMT +2. Ahora son las 21:55:59. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi