[Lazarus-es] [MySQL] Obtener el nombre de una tabla consultada
Markisich Emiliano
markisoft en yahoo.com.ar
Sab Nov 15 15:01:50 CET 2008
Hola, eso lo podes hacer con un Trigger, creas una tabla de historial y
un trigger que cuando se realize un insert o delete o update se dispare
y agregue un registro en la tabla historial.
lo que no se si funciona con un select.
otra cosa esto depende de que motor de base de datos estes usando.
saludos
CREATE TRIGGER NOMBRE ACTIVE
BEFORE INSERT OR UPDATE POSITION 12
AS
BEGIN
IF (INSERTING) THEN
BEGIN
/(AGREGO en la tabla de historial)/
END
ELSE
IF (UPDATING) THEN
BEGIN
/(AGREGO en la tabla de historial)/
END
END^
SET TERM ; ^
User escribió:
>
> Hola de nuevo, no, no es eso, yo lo único que le digo al sistema es:
>
> toma aquí tienes esta consulta: 'selec * from Carros'
>
> ahora dime que tabla ha sido la consultada, y el sistema me devuelva:
> Carros o la que sea
>
> No se si me explico.
>
> Saludos.
>
>
> 2008/11/14 Carlos German Tejero <german_tejero en yahoo.com.ar
> <mailto:german_tejero en yahoo.com.ar>>
>
> Entonces podrias hacer algo asi:
>
> procedure TForm1.ProcesaConsulta(const TABLE_NAME:string);
>
> const
>
> QUERY = 'SELECT * FROM %s;';
>
> var
>
> i: integer; // Contador para recorrer los campos de un registro
>
> NombreTabla: string; // Variable de tipo string para almacenar
> el nombre de la tabla
>
> begin
>
> SQLQuery1.SQL.Text := Format(QUERY, [TABLE_NAME]);
> SQLQuery1.Open;
> SQLQuery1.First;
> while not SQLQuery1.EOF do // Este bucle recorre todos los
> registros de la consulta, desde el primero al último
> begin
> for i := 0 to SQLQuery1.Fields.Count - 1 do // Muestra
> en mensajes el contenido de cada campo del registro
> ShowMessage('Nombre del campo: ' +
> SQLQuery1.Fields.Fields[i].FieldName +
> ' Contenido: ' +
> SQLQuery1.FieldByName(SQLQuery1.Fields.Fields[i].FieldName).AsString);
> SQLQuery1.Next; // Pasa al siguiente registro
> end;
> NombreTabla := TABLE_NAME
> end;
>
>
> y llamar a ProcesaConsulta('carros');
>
>
> 2008/11/14 Usuario Anónimo <usuarioanonimomysql en gmail.com
> <mailto:usuarioanonimomysql en gmail.com>>
>
> Pero según eso que has puesto el nombre de la tabla siempre va
> a ser el contenido de la constante TABLE_NAME y yo quiero que
> sea algo dinámico, independientemente de la consulta, es
> decir, quiero obtener el nombre de la tabla.
>
> Saludos.
>
>
> 2008/11/14 Carlos German Tejero <german_tejero en yahoo.com.ar
> <mailto:german_tejero en yahoo.com.ar>>
>
> Podrias probar con algo asi, porque el componente
> TSQLQuery no sabe cual es la tabla, ya que podrian ser mas
> de una:
>
>
> procedure TForm1.ProcesaConsulta;
>
> const
>
> QUERY = 'SELECT * FROM %s;';
>
> TABLE_NAME = 'carros';
>
> var
>
> i: integer; // Contador para recorrer los campos de un
> registro
>
> NombreTabla: string; // Variable de tipo string para
> almacenar el nombre de la tabla
>
> begin
>
> SQLQuery1.SQL.Text := Format(QUERY, [TABLE_NAME]);
> SQLQuery1.Open;
> SQLQuery1.First;
> while not SQLQuery1.EOF do // Este bucle recorre todos
> los registros de la consulta, desde el primero al último
> begin
> for i := 0 to SQLQuery1.Fields.Count - 1 do //
> Muestra en mensajes el contenido de cada campo del
> registro
> ShowMessage('Nombre del campo: ' +
> SQLQuery1.Fields.Fields[i].FieldName +
> ' Contenido: ' +
> SQLQuery1.FieldByName(SQLQuery1.Fields.Fields[i].FieldName).AsString);
> SQLQuery1.Next; // Pasa al siguiente registro
> end;
> NombreTabla := TABLE_NAME
> end;
>
>
>
> 2008/11/14 Usuario Anónimo <usuarioanonimomysql en gmail.com
> <mailto:usuarioanonimomysql en gmail.com>>
>
> Hola, pongamos que tengo un programa que procesa
> consultas simples MySQL del tipo select * from Tabla
> mediante el componente TSQLQuery. Necesito guardar en
> una variable de tipo string el nombre de la tabla
> consultada. Ejemplo:
>
> El programa procesa la siguiente consulta: select *
> from Carros;
>
> procedure TForm1.ProcesaConsulta;
>
> var
>
> i: integer; // Contador para recorrer los campos de
> un registro
>
> NombreTabla: string; // Variable de tipo string
> para almacenar el nombre de la tabla
>
> begin
>
> SQLQuery1.SQL.Text := 'select * from Carros';
> SQLQuery1.Open;
> SQLQuery1.First;
> while not SQLQuery1.EOF do // Este bucle recorre
> todos los registros de la consulta, desde el primero
> al último
> begin
> for i := 0 to SQLQuery1.Fields.Count - 1
> do // Muestra en mensajes el contenido de cada campo
> del registro
> ShowMessage('Nombre del campo: ' +
> SQLQuery1.Fields.Fields[i].FieldName +
> ' Contenido: ' +
> SQLQuery1.FieldByName(SQLQuery1.Fields.Fields[i].FieldName).AsString);
> SQLQuery1.Next; // Pasa al siguiente registro
> end;
> NombreTabla := <no sé qué asignar aquí>;
> // NombraTabla ha de contener Carros
> end;
>
> ¿Cómo puedo saber qué tabla es la consultada? Ya se
> que es Carros y que puedo obtenerla mediante un manejo
> de cadenas pero me gustaría saber si hay alguna forma
> más inmediata de hacerlo, pienso que puede que el
> sistema lo almacene por algún lado y no haga falta que
> haga un tratamiento de la cadena select * from Tabla
> para obtener el nombre de la tabla.
>
> Muchas gracias.
>
>
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lazarus.freepascal.org
> <mailto:Lazarus-es en lazarus.freepascal.org>
> http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
>
>
>
> --
> Carlos Germán Tejero
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lazarus.freepascal.org
> <mailto:Lazarus-es en lazarus.freepascal.org>
> http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
>
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lazarus.freepascal.org
> <mailto:Lazarus-es en lazarus.freepascal.org>
> http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
>
>
>
> --
> Carlos Germán Tejero
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lazarus.freepascal.org
> <mailto:Lazarus-es en lazarus.freepascal.org>
> http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lazarus.freepascal.org
> http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
More information about the Lazarus-es
mailing list