Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-04-2012
gaijin50 gaijin50 is offline
Registrado
 
Registrado: feb 2008
Posts: 7
Poder: 0
gaijin50 Va por buen camino
Novato en FireBird

Hola a todos, ante todo gracias por este foro que es una tremenda ayuda para los novatos como yo. Me he leido la guia de estilo y espero no meter la pata. Tengo un problema. seguro que para los expertos es una verdadera tontería pero para mí es una montaña.

Tengo una aplicacion hecha con delphi conectada con firebird 2.5, y una tabla creada en IBexpert. Mi problema es que necesito vaciar la tabla para volverla a llenar con datos diferentes.
En el query de la tabla (llamada RESULTADO) y desde delphi, pongo :

QResultado.SQL.Text := 'DELETE FROM RESULTADO';
QResultado.ExecSQL;

Si despues de estas pongo

QResultado.SQL.Text := 'SELECT * FROM RESULTADO';
QResultado.ExecSQL;

Me dice "Use Open antes de un SELECT"

Y si quito las dos ultimas lineas, cuando vuelvo a intentar llenar la tabla con otros datos me da "Key Violation". Vuelve a funcionar cuando lo hago un par de veces, es decir que parece que a la segunda vez sí ejecuta el vaciado de la tabla y funciona correctamente, pero después de esta vez correcta, a la vez siguiente siempre me da el "Key Violation".
Seguro que es que no "obligo" a que se vacie la tabla, pero no sé cómo hacerlo.

No sé si me he explicado correctamente.

Por favor, podríais echarme una mano

Gracias de antemano.

EDITO : nada más lanzar esta petición de ayuda me he dado cuenta del problema ¡¡dejaba la tabla abierta!!. SOLUCIONADO

Gracias de todos modos.

Última edición por gaijin50 fecha: 29-04-2012 a las 21:59:03.
Responder Con Cita
  #2  
Antiguo 29-04-2012
Avatar de champy
champy champy is offline
Miembro
 
Registrado: sep 2003
Ubicación: Alicante, España
Posts: 75
Poder: 21
champy Va por buen camino
Muy buenas.

Creo que tu problema es que estás usando Execsql cuando lo que en realidad quieres hacer es un open. Me explico. Execsql se debería utilizar para "lanzar" un comando SQL del que no esperas ningún resultado, como un INSERT, pero si lo que quieres es abrir un Dataset con información que despuedas recorrer tendrias que usar OPEN.


QResultado.SQL.Text := 'DELETE FROM RESULTADO';
QResultado.ExecSQL;



QResultado.SQL.Text := 'SELECT * FROM RESULTADO';
QResultado.Open;
Responder Con Cita
  #3  
Antiguo 29-04-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Recordad poner los tags al código fuente, ejemplo:



.
Responder Con Cita
  #4  
Antiguo 30-04-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Poder: 13
MartinS Va por buen camino
Hola gaijin50: A simple vista me parece que no estas actualizando las transacciones. Recorda que Firebird usa transacciones que seguramente has definido para puedas realizar la conexion a la base de datos. Luego de hacer algun tipo de modificacion a la base de datos ya sea agregar, modificar o eliminar registros debes hacer un commit o commitretaining para confirmar o bien rollback o rollbackretaining para cancelar los cambios.

Por ejemplo

Código Delphi [-]
  QResultado.Sql.Clear;
  QResultado.SQL.Text := 'DELETE FROM RESULTADO';
  QResultado.ExecSQL;
  // y despues
  TuTransaccion.CommitRetaining; // para confirmar

Saludos.-
Responder Con Cita
  #5  
Antiguo 30-04-2012
gaijin50 gaijin50 is offline
Registrado
 
Registrado: feb 2008
Posts: 7
Poder: 0
gaijin50 Va por buen camino
Muchas gracias por contestar, como muy bien decís, el problema era que no actualizaba la transacción y mantenía la tabla abierta. Lo he resuelto, cerrando la tabla antres, haciendo el vaciado y luego volviendola a abrir y ahora funciona.

De nuevo, muchas gracias por responder.

Un saludo
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Novato en Firebird salvica Firebird e Interbase 17 03-11-2011 19:22:56
Novato: Guardar a Firebird desde un edit juanmfer2002 Firebird e Interbase 2 09-03-2008 18:22:59
Novato en firebird ckaki Firebird e Interbase 2 01-07-2006 12:00:00
Novato en Firebird Delphos Firebird e Interbase 5 21-01-2005 17:07:47
Novato en firebird, tengo una duda chakal Firebird e Interbase 2 03-03-2004 13:48:49


La franja horaria es GMT +2. Ahora son las 18:36:21.


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