Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-12-2004
NeWNeO NeWNeO is offline
Miembro
 
Registrado: ago 2003
Posts: 35
Poder: 0
NeWNeO Va por buen camino
Exclamation Simple TIBSQL

Hola:
Me gustaría saber si mi forma de ejecutar consultas desde un TIBSQL es la forma correcta o si hay otra via mejor.

Uso:
Código Delphi [-]
fQuery: TIBSQL
...
Constructor Create...;
begin
fQuery := TIBSQL.Create(Self);
fQuery.Database := MiBaseDeDatos;
fQuery.Transaction := MiTransacción;
end;
...
function ExecuteQuery(Query: string):boolean;
...
function ExecuteQuery(Query: string):boolean;
begin
 result := false;
 fQuery.Close;
 fQuery.SQL.Clear;
 fQuery.SQL.Add(query);
 fQuery.ExecQuery;
 result := true;
end;
NOTA: La base de datos está conectada y activa, las consultas con un DBGRID por ejemplo funciona a la perfección.

Cuando ejecuto la función con por ejemplo:
UPDATE La_Table Set ID="1",DIA='Martes';
voy a mi programa de gestión de base de datos (EMS IBManager) y la consulta no se ha ejecutado o su resultado no ha sido positivo. Ejecuto la MISMA consulta en la consola del EMS IBManager y la actualización se hace efectiva. ¿Es correcto todo lo que hago ó falta algun paso?
Muchas Gracias.

Última edición por NeWNeO fecha: 21-12-2004 a las 13:54:51.
Responder Con Cita
  #2  
Antiguo 21-12-2004
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Poder: 21
DarKraZY Va por buen camino
¿Has tenido cuidado al poner las comillas?
La consulta sería así:
Código Delphi [-]
ExecuteQuery('UPDATE La_Table Set ID="1",DIA=''Martes');
Responder Con Cita
  #3  
Antiguo 22-12-2004
NeWNeO NeWNeO is offline
Miembro
 
Registrado: ago 2003
Posts: 35
Poder: 0
NeWNeO Va por buen camino
Question Comillas Si

Si, uso otra funcion (SQLFormat) parecida a la de format, en la que uso constantes como por ejemplo
Código Delphi [-]
unit SQL

implementation

ResourceString
 SQL_MI_CONSULTA = 'UPDATE Empleados SET Nombre="%s",Apellidos"%s"';

...

Un ejemplo de Esa función Seria

Código Delphi [-]

begin
ExecuteQuery(SQLFormat(SQL_MI_CONSULTA,[NeWNeO,2005]));
end;
Y la función devuelve la consulta como:
UPDATE Empleados SET Nombre="NeWNeO",Apellidos"2005"
la pego en el EMS Interbase manager, consola SQL y se que se actualiza, vamos, que por problemas de sintaxis no es. ¿Que se esté ejecutando en un Thread puede tener algo que ver para que no se actualize si la base de datos está en una unidad externa al thread? ¿Sería necesario un Synchronize dentro del a función ExecuteQuery, en la parte de fQuery.ExecQuery?

Última edición por NeWNeO fecha: 22-12-2004 a las 10:48:36.
Responder Con Cita
  #4  
Antiguo 22-12-2004
NeWNeO NeWNeO is offline
Miembro
 
Registrado: ago 2003
Posts: 35
Poder: 0
NeWNeO Va por buen camino
Lightbulb Vale xD

Bueno bueno... uno siempre piensa en todo menos en lo más tonto..
Código Delphi [-]
function TCDEXplorerThread.ExecuteQuery(Query: string):boolean;
begin
 result := false;
 fQuery.Close;
 fQuery.SQL.Clear;
 fQuery.SQL.Add(query);
 Synchronize(fQuery.ExecQuery);
 result := true;
 Synchronize(SQLDev);
end;

Ahí estaba el problema, al estar la base de datos en un formulario externo necesitaba usar synchronize para que funcionara la interacción con elementos externos...
Gracias de todas formas por la ayuda dark, me ha abierto un poco la mente.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 05:20:36.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi