Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-04-2007
molinero1 molinero1 is offline
Miembro
 
Registrado: abr 2007
Posts: 59
Poder: 20
molinero1 Va por buen camino
Pasar parametro a una sentencia sql

Queria hacer una instruccion para eliminar tablas en un tquery, xo no se como pasar el parametro del TEdit, creo q es DROP TABLE :tabla o algo parecido, gracias.
Responder Con Cita
  #2  
Antiguo 12-04-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 23
gluglu Va por buen camino
A cualquier sentencia SQL se le puede pasar un parámetro.

La forma es :

Código SQL [-]
SelectSQL.Clear;
SelectSQL.Add('DROP TABLE :Param1');
ParamByName('Param1').AsString := Edit1.Text;
ExecSQL;

Saludos
__________________
Piensa siempre en positivo !
Responder Con Cita
  #3  
Antiguo 12-04-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.437
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Puedes usar el parámetro:

Código Delphi [-]
  SQL := 'DROP TABLE :NombreTabla';
  // Luego deberás sustituir el parámetro por el valor
  Query1.ParamByName('NombreTable').AsString := Edit1.Text;

O concatenarlo manualmente:

Código Delphi [-]
  SQL := 'DROP TABLE' + Edit1.Text;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 12-04-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
La primera forma (sin probarlo) intuyo que no funcionaría, ya que al usar Parambyname, Delphi incluirá las comillas simples al principio y fin del nombre de tabla, así que provocaría un error en ejecución.

Otra forma más es:
Código Delphi [-]
const DeleteTable = 'delete from %s %s';
begin
  query1.sql.text := Format(DeleteTable, ['NombreTabla', '']);

// o bien

  query1.sql.text := Format(DeleteTable, ['NombreTabla', 'where codigo = 3']);

  Query1.ExecSql;
end;

También puedes usar un ComboBox para elegir la tabla de la que quieres borrar, dichos nombres de tablas los puedes extraer del objeto TDatabase, que tendrá un método "GetTableNames".

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 12-04-2007
molinero1 molinero1 is offline
Miembro
 
Registrado: abr 2007
Posts: 59
Poder: 20
molinero1 Va por buen camino
El problema es que hoy es el segundo dia que utilizo delphi, como se haria lo del combobox y unirlo a la base de datos?
Responder Con Cita
  #6  
Antiguo 12-04-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 23
gluglu Va por buen camino
El parámetro lo debes de pasar antes del ExecSQL. No puedes utilizar Open, te dará un error, ya que no estás solicitando ningún Set de Datos, sino lo que intentas es ejecutar una Sentencia SQL, que para ello se utiliza ExecSQL.

Además podrías ahorrarte la variable Param, ya que puedes pasar directamente como Parámetro el valor del TEdit.

Respecto a lo de las comillas, la verdad es que no lo he probado y no sé como va a actuar. Es cuestión de probar.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #7  
Antiguo 12-04-2007
molinero1 molinero1 is offline
Miembro
 
Registrado: abr 2007
Posts: 59
Poder: 20
molinero1 Va por buen camino
Sin el query.open no me da ningun error, pero tampoco me elminina la tabla
Responder Con Cita
  #8  
Antiguo 12-04-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.437
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por molinero1
Sin el query.open no me da ningun error, pero tampoco me elminina la tabla
El Open es para consultas que devuelven resultados (SELECT); Para INSERT, DELETE, DROP,... debes utilizar el ExecSQL o Exec (no recuerdo ahora cual es).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #9  
Antiguo 12-04-2007
molinero1 molinero1 is offline
Miembro
 
Registrado: abr 2007
Posts: 59
Poder: 20
molinero1 Va por buen camino
dentro del tquery tengo: DROP TABLE :tabla
y luego en delphi:
procedure TForm1.Button3Click(Sender: TObject);
begin
query3.open;
param := tablaeliminar.Text;
query3.parambyname('tabla').value := param;
Así tendria q irme? o q debo cambiar? gracias
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
Pasar un parametro a Crystal Report? danytorres Impresión 7 26-08-2006 17:09:52
pasar parametro pharaonhx Conexión con bases de datos 3 10-05-2006 19:02:50
pasar parametro con un grid pharaonhx Varios 1 10-04-2005 20:21:56
Pasar parametro a un procedimiento? danytorres Varios 2 12-12-2003 09:55:09
pasar una variable a una sentencia sql acrophet SQL 6 03-11-2003 17:01:02


La franja horaria es GMT +2. Ahora son las 08:12:27.


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