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.<br>¿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.<br>
Un saludo, Antonio<br><br>P.D. No se si es corecta la edición del asunto. Es mi primera respuesta en la lista.<br><div class="gmail_quote">El 15 de noviembre de 2008 18:00, <span dir="ltr"><<a href="mailto:lazarus-es-request@lazarus.freepascal.org">lazarus-es-request@lazarus.freepascal.org</a>></span> escribió:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Envíe los mensajes para la lista Lazarus-es a<br>
<a href="mailto:lazarus-es@lazarus.freepascal.org">lazarus-es@lazarus.freepascal.org</a><br>
<br>
Para subscribirse o anular su subscripción a través de la WEB<br>
<a href="http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es" target="_blank">http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es</a><br>
<br>
O por correo electrónico, enviando un mensaje con el texto "help" en<br>
el asunto (subject) o en el cuerpo a:<br>
<a href="mailto:lazarus-es-request@lazarus.freepascal.org">lazarus-es-request@lazarus.freepascal.org</a><br>
<br>
Puede contactar con el responsable de la lista escribiendo a:<br>
<a href="mailto:lazarus-es-owner@lazarus.freepascal.org">lazarus-es-owner@lazarus.freepascal.org</a><br>
<br>
Si responde a algún contenido de este mensaje, por favor, edite la<br>
linea del asunto (subject) para que el texto sea mas especifico que:<br>
"Re: Contents of Lazarus-es digest...". Además, por favor, incluya en<br>
la respuesta sólo aquellas partes del mensaje a las que está<br>
respondiendo.<br>
<br>
<br>
Asuntos del día:<br>
<br>
1. Prueba. NO leer ... (Antonio Caballero Martínez)<br>
2. Re: [MySQL] Obtener el nombre de una tabla consultada<br>
(Markisich Emiliano)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Fri, 14 Nov 2008 23:38:28 +0100<br>
From: Antonio Caballero Martínez<br>
<<a href="mailto:antonio.caballero.martinez@gmail.com">antonio.caballero.martinez@gmail.com</a>><br>
Subject: [Lazarus-es] Prueba. NO leer ...<br>
To: Spanish version of Lazarus List<br>
<<a href="mailto:lazarus-es@lazarus.freepascal.org">lazarus-es@lazarus.freepascal.org</a>><br>
Message-ID: <<a href="mailto:491DFDE4.5070408@gmail.com">491DFDE4.5070408@gmail.com</a>><br>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed<br>
<br>
Hola.<br>
<br>
Esto es una prueba de envío de mensaje.<br>
<br>
Saludos<br>
<br>
<br>
------------------------------<br>
<br>
Message: 2<br>
Date: Sat, 15 Nov 2008 11:01:50 -0300<br>
From: Markisich Emiliano <<a href="mailto:markisoft@yahoo.com.ar">markisoft@yahoo.com.ar</a>><br>
Subject: Re: [Lazarus-es] [MySQL] Obtener el nombre de una tabla<br>
consultada<br>
To: Spanish version of Lazarus List<br>
<<a href="mailto:lazarus-es@lazarus.freepascal.org">lazarus-es@lazarus.freepascal.org</a>><br>
Message-ID: <<a href="mailto:491ED64E.8020205@yahoo.com.ar">491ED64E.8020205@yahoo.com.ar</a>><br>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed<br>
<br>
Hola, eso lo podes hacer con un Trigger, creas una tabla de historial y<br>
un trigger que cuando se realize un insert o delete o update se dispare<br>
y agregue un registro en la tabla historial.<br>
lo que no se si funciona con un select.<br>
otra cosa esto depende de que motor de base de datos estes usando.<br>
<br>
saludos<br>
<br>
CREATE TRIGGER NOMBRE ACTIVE<br>
BEFORE INSERT OR UPDATE POSITION 12<br>
AS<br>
BEGIN<br>
IF (INSERTING) THEN<br>
BEGIN<br>
/(AGREGO en la tabla de historial)/<br>
END<br>
ELSE<br>
IF (UPDATING) THEN<br>
BEGIN<br>
/(AGREGO en la tabla de historial)/<br>
END<br>
END^<br>
SET TERM ; ^<br>
<br>
User escribió:<br>
><br>
> Hola de nuevo, no, no es eso, yo lo único que le digo al sistema es:<br>
><br>
> toma aquí tienes esta consulta: 'selec * from Carros'<br>
><br>
> ahora dime que tabla ha sido la consultada, y el sistema me devuelva:<br>
> Carros o la que sea<br>
><br>
> No se si me explico.<br>
><br>
> Saludos.<br>
><br>
><br>
> 2008/11/14 Carlos German Tejero <<a href="mailto:german_tejero@yahoo.com.ar">german_tejero@yahoo.com.ar</a><br>
> <mailto:<a href="mailto:german_tejero@yahoo.com.ar">german_tejero@yahoo.com.ar</a>>><br>
><br>
> Entonces podrias hacer algo asi:<br>
><br>
> procedure TForm1.ProcesaConsulta(const TABLE_NAME:string);<br>
><br>
> const<br>
><br>
> QUERY = 'SELECT * FROM %s;';<br>
><br>
> var<br>
><br>
> i: integer; // Contador para recorrer los campos de un registro<br>
><br>
> NombreTabla: string; // Variable de tipo string para almacenar<br>
> el nombre de la tabla<br>
><br>
> begin<br>
><br>
> SQLQuery1.SQL.Text := Format(QUERY, [TABLE_NAME]);<br>
> SQLQuery1.Open;<br>
> SQLQuery1.First;<br>
> while not SQLQuery1.EOF do // Este bucle recorre todos los<br>
> registros de la consulta, desde el primero al último<br>
> begin<br>
> for i := 0 to SQLQuery1.Fields.Count - 1 do // Muestra<br>
> en mensajes el contenido de cada campo del registro<br>
> ShowMessage('Nombre del campo: ' +<br>
> SQLQuery1.Fields.Fields[i].FieldName +<br>
> ' Contenido: ' +<br>
> SQLQuery1.FieldByName(SQLQuery1.Fields.Fields[i].FieldName).AsString);<br>
> SQLQuery1.Next; // Pasa al siguiente registro<br>
> end;<br>
> NombreTabla := TABLE_NAME<br>
> end;<br>
><br>
><br>
> y llamar a ProcesaConsulta('carros');<br>
><br>
><br>
> 2008/11/14 Usuario Anónimo <<a href="mailto:usuarioanonimomysql@gmail.com">usuarioanonimomysql@gmail.com</a><br>
> <mailto:<a href="mailto:usuarioanonimomysql@gmail.com">usuarioanonimomysql@gmail.com</a>>><br>
><br>
> Pero según eso que has puesto el nombre de la tabla siempre va<br>
> a ser el contenido de la constante TABLE_NAME y yo quiero que<br>
> sea algo dinámico, independientemente de la consulta, es<br>
> decir, quiero obtener el nombre de la tabla.<br>
><br>
> Saludos.<br>
><br>
><br>
> 2008/11/14 Carlos German Tejero <<a href="mailto:german_tejero@yahoo.com.ar">german_tejero@yahoo.com.ar</a><br>
> <mailto:<a href="mailto:german_tejero@yahoo.com.ar">german_tejero@yahoo.com.ar</a>>><br>
><br>
> Podrias probar con algo asi, porque el componente<br>
> TSQLQuery no sabe cual es la tabla, ya que podrian ser mas<br>
> de una:<br>
><br>
><br>
> procedure TForm1.ProcesaConsulta;<br>
><br>
> const<br>
><br>
> QUERY = 'SELECT * FROM %s;';<br>
><br>
> TABLE_NAME = 'carros';<br>
><br>
> var<br>
><br>
> i: integer; // Contador para recorrer los campos de un<br>
> registro<br>
><br>
> NombreTabla: string; // Variable de tipo string para<br>
> almacenar el nombre de la tabla<br>
><br>
> begin<br>
><br>
> SQLQuery1.SQL.Text := Format(QUERY, [TABLE_NAME]);<br>
> SQLQuery1.Open;<br>
> SQLQuery1.First;<br>
> while not SQLQuery1.EOF do // Este bucle recorre todos<br>
> los registros de la consulta, desde el primero al último<br>
> begin<br>
> for i := 0 to SQLQuery1.Fields.Count - 1 do //<br>
> Muestra en mensajes el contenido de cada campo del<br>
> registro<br>
> ShowMessage('Nombre del campo: ' +<br>
> SQLQuery1.Fields.Fields[i].FieldName +<br>
> ' Contenido: ' +<br>
> SQLQuery1.FieldByName(SQLQuery1.Fields.Fields[i].FieldName).AsString);<br>
> SQLQuery1.Next; // Pasa al siguiente registro<br>
> end;<br>
> NombreTabla := TABLE_NAME<br>
> end;<br>
><br>
><br>
><br>
> 2008/11/14 Usuario Anónimo <<a href="mailto:usuarioanonimomysql@gmail.com">usuarioanonimomysql@gmail.com</a><br>
> <mailto:<a href="mailto:usuarioanonimomysql@gmail.com">usuarioanonimomysql@gmail.com</a>>><br>
><br>
> Hola, pongamos que tengo un programa que procesa<br>
> consultas simples MySQL del tipo select * from Tabla<br>
> mediante el componente TSQLQuery. Necesito guardar en<br>
> una variable de tipo string el nombre de la tabla<br>
> consultada. Ejemplo:<br>
><br>
> El programa procesa la siguiente consulta: select *<br>
> from Carros;<br>
><br>
> procedure TForm1.ProcesaConsulta;<br>
><br>
> var<br>
><br>
> i: integer; // Contador para recorrer los campos de<br>
> un registro<br>
><br>
> NombreTabla: string; // Variable de tipo string<br>
> para almacenar el nombre de la tabla<br>
><br>
> begin<br>
><br>
> SQLQuery1.SQL.Text := 'select * from Carros';<br>
> SQLQuery1.Open;<br>
> SQLQuery1.First;<br>
> while not SQLQuery1.EOF do // Este bucle recorre<br>
> todos los registros de la consulta, desde el primero<br>
> al último<br>
> begin<br>
> for i := 0 to SQLQuery1.Fields.Count - 1<br>
> do // Muestra en mensajes el contenido de cada campo<br>
> del registro<br>
> ShowMessage('Nombre del campo: ' +<br>
> SQLQuery1.Fields.Fields[i].FieldName +<br>
> ' Contenido: ' +<br>
> SQLQuery1.FieldByName(SQLQuery1.Fields.Fields[i].FieldName).AsString);<br>
> SQLQuery1.Next; // Pasa al siguiente registro<br>
> end;<br>
> NombreTabla := <no sé qué asignar aquí>;<br>
> // NombraTabla ha de contener Carros<br>
> end;<br>
><br>
> ¿Cómo puedo saber qué tabla es la consultada? Ya se<br>
> que es Carros y que puedo obtenerla mediante un manejo<br>
> de cadenas pero me gustaría saber si hay alguna forma<br>
> más inmediata de hacerlo, pienso que puede que el<br>
> sistema lo almacene por algún lado y no haga falta que<br>
> haga un tratamiento de la cadena select * from Tabla<br>
> para obtener el nombre de la tabla.<br>
><br>
> Muchas gracias.<br>
><br>
><br>
><br>
> _______________________________________________<br>
> Lazarus-es mailing list<br>
> <a href="mailto:Lazarus-es@lazarus.freepascal.org">Lazarus-es@lazarus.freepascal.org</a><br>
> <mailto:<a href="mailto:Lazarus-es@lazarus.freepascal.org">Lazarus-es@lazarus.freepascal.org</a>><br>
> <a href="http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es" target="_blank">http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es</a><br>
><br>
><br>
><br>
><br>
> --<br>
> Carlos Germán Tejero<br>
><br>
> _______________________________________________<br>
> Lazarus-es mailing list<br>
> <a href="mailto:Lazarus-es@lazarus.freepascal.org">Lazarus-es@lazarus.freepascal.org</a><br>
> <mailto:<a href="mailto:Lazarus-es@lazarus.freepascal.org">Lazarus-es@lazarus.freepascal.org</a>><br>
> <a href="http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es" target="_blank">http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es</a><br>
><br>
><br>
><br>
> _______________________________________________<br>
> Lazarus-es mailing list<br>
> <a href="mailto:Lazarus-es@lazarus.freepascal.org">Lazarus-es@lazarus.freepascal.org</a><br>
> <mailto:<a href="mailto:Lazarus-es@lazarus.freepascal.org">Lazarus-es@lazarus.freepascal.org</a>><br>
> <a href="http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es" target="_blank">http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es</a><br>
><br>
><br>
><br>
><br>
> --<br>
> Carlos Germán Tejero<br>
><br>
> _______________________________________________<br>
> Lazarus-es mailing list<br>
> <a href="mailto:Lazarus-es@lazarus.freepascal.org">Lazarus-es@lazarus.freepascal.org</a><br>
> <mailto:<a href="mailto:Lazarus-es@lazarus.freepascal.org">Lazarus-es@lazarus.freepascal.org</a>><br>
> <a href="http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es" target="_blank">http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es</a><br>
><br>
><br>
> ------------------------------------------------------------------------<br>
><br>
> _______________________________________________<br>
> Lazarus-es mailing list<br>
> <a href="mailto:Lazarus-es@lazarus.freepascal.org">Lazarus-es@lazarus.freepascal.org</a><br>
> <a href="http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es" target="_blank">http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es</a><br>
><br>
<br>
<br>
<br>
------------------------------<br>
<br>
_______________________________________________<br>
Lazarus-es mailing list<br>
<a href="mailto:Lazarus-es@lazarus.freepascal.org">Lazarus-es@lazarus.freepascal.org</a><br>
<a href="http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es" target="_blank">http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es</a><br>
<br>
<br>
Fin de Resumen de Lazarus-es, Vol 14, Envío 6<br>
*********************************************<br>
</blockquote></div><br>