[Lazarus-es] Resumen de Lazarus-es, Vol 14, Envío 7
Antonio Dominguez
antonio2minguez en gmail.com
Dom Nov 16 10:09:53 CET 2008
Hola, quizás sea una tontería pero como veo que no dais con la solución, yo
propongo la idea que pensé desde el principio.
¿Has pensado en meter el nombre de la tabla en una variable string? Luego la
concatenas con el resto de la consulta y si quieres puedes preguntar por el
último valor de la variable o guardarla en un registro con: Date,
Nombre_Tabla, Consulta, Resultado, etc. según lo que necesites.
Un saludo, Antonio
P.D. No se si es corecta la edición del asunto. Es mi primera respuesta en
la lista.
El 15 de noviembre de 2008 18:00, <lazarus-es-request en lazarus.freepascal.org
> escribió:
> Envíe los mensajes para la lista Lazarus-es a
> lazarus-es en lazarus.freepascal.org
>
> Para subscribirse o anular su subscripción a través de la WEB
> http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
> O por correo electrónico, enviando un mensaje con el texto "help" en
> el asunto (subject) o en el cuerpo a:
> lazarus-es-request en lazarus.freepascal.org
>
> Puede contactar con el responsable de la lista escribiendo a:
> lazarus-es-owner en lazarus.freepascal.org
>
> Si responde a algún contenido de este mensaje, por favor, edite la
> linea del asunto (subject) para que el texto sea mas especifico que:
> "Re: Contents of Lazarus-es digest...". Además, por favor, incluya en
> la respuesta sólo aquellas partes del mensaje a las que está
> respondiendo.
>
>
> Asuntos del día:
>
> 1. Prueba. NO leer ... (Antonio Caballero Martínez)
> 2. Re: [MySQL] Obtener el nombre de una tabla consultada
> (Markisich Emiliano)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Fri, 14 Nov 2008 23:38:28 +0100
> From: Antonio Caballero Martínez
> <antonio.caballero.martinez en gmail.com>
> Subject: [Lazarus-es] Prueba. NO leer ...
> To: Spanish version of Lazarus List
> <lazarus-es en lazarus.freepascal.org>
> Message-ID: <491DFDE4.5070408 en gmail.com>
> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>
> Hola.
>
> Esto es una prueba de envío de mensaje.
>
> Saludos
>
>
> ------------------------------
>
> Message: 2
> Date: Sat, 15 Nov 2008 11:01:50 -0300
> From: Markisich Emiliano <markisoft en yahoo.com.ar>
> Subject: Re: [Lazarus-es] [MySQL] Obtener el nombre de una tabla
> consultada
> To: Spanish version of Lazarus List
> <lazarus-es en lazarus.freepascal.org>
> Message-ID: <491ED64E.8020205 en yahoo.com.ar>
> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>
> 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
> >
>
>
>
> ------------------------------
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lazarus.freepascal.org
> http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
>
> Fin de Resumen de Lazarus-es, Vol 14, Envío 6
> *********************************************
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20081116/3905667a/attachment-0001.html>
More information about the Lazarus-es
mailing list