Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Saber si ADOTable Existe (https://www.clubdelphi.com/foros/showthread.php?t=22485)

Barzaugc 16-06-2005 20:14:09

Saber si ADOTable Existe
 
Un gran saludo al mundo delphi, no se si me podrían ayudar con una duda, lo que pasa es que deseo crear una tabla temporal con un omponente ADOTable, donde al iniciar la aplicacion se destruya la tabla existente y por medio de un boton crearla de nuevo, pero como saber si la tabla existe al iniciar la aplicacion ya que marca un error cuando no se ha creado, con el componente Table es mas facil, ya que tiene la propiedad Table.Exists, pero con ADO no se como hacerlo, tal vez ustedes tengan algunas buenas sugerencias.

Saludos y Gracias.

Neftali [Germán.Estévez] 17-06-2005 09:49:38

No comentas la BD que usas, ya que con ADO puedes conectar a varias de ellas. De todas formas, se me ocuurren 2. Algunas Base de Datos poseen una tabla (sysObjects, por ejemplo para SQLServer) donde están todos los objetos de la BAse de Datos, basta con que consultes si hay algun elemento de tipo tabla con ese nombre. Otra más "ruda", pero más simple, es lanzar una SQL como ésta:

Código SQL [-]
   Select * from tabla1

Y capturar el posible error (por si no existe); Si no da error es que ya existe.
MEJORA: Haz un TOP 1 (si lo permite) y pregunta por un único campo en lugar de por todos (*).

Barzaugc 17-06-2005 15:55:36

Estoy usando un base de datos en Access, me dices que capture el error, pero para ese error no se como hacerlo, cuando ejecuto la consulta en SQL, sale "class EOleException, el motor de BD no encuentra la tabla INVTABLA", Hice esto para reconocer el error, pero me marca error en el EOleException, lo tengo asi:

adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from INVTABLA');
try
adoquery1.ExecSQL;
except
On EOleException do
Showmessage('No Existe la Tabla');
end;

Esta es la manera de capturar el error o hay otras?

Neftali [Germán.Estévez] 20-06-2005 10:41:03

Pues esa es una buena manera:

Código Delphi [-]
   try
     ADOQuery1.ExecSQL;
     MessageDlg('Si sale éste mensaje es que la tabla existe.', mtWarning, [mbOK], 0);
   except
     On E:EOleException do begin
       Showmessage('Si sale éste, es que no existe');
     end;
   end;

Barzaugc 20-06-2005 18:03:40

Con esos ajustes ya salio muy bien, te agradezco mucho tu tiempo.

Hasta Luego!

MaMu 12-06-2006 12:41:08

Cita:

Empezado por Neftali
Pues esa es una buena manera:


Código Delphi [-]
try
ADOQuery1.ExecSQL;
MessageDlg('Si sale éste mensaje es que la tabla existe.', mtWarning, [mbOK], 0);
except
On E:EOleException do begin
Showmessage('Si sale éste, es que no existe');
end;
end;



Tenia el mismo problema y la misma duda, pero no me funciona, me sigue saltando la excepcion, no la captura.

Listo, lo solucione, era una pavada, habia hecho un par de procedimientos con nombres muy similares y seleccionaba mal, jejej, a veces pasa.

Neftali [Germán.Estévez] 12-06-2006 13:52:59

Esta es otra manera; Mira este hilo:
http://www.clubdelphi.com/foros/show...67&postcount=3


La franja horaria es GMT +2. Ahora son las 23:31:12.

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