[Lazarus-es] [MySQL] Obtener el nombre de una tabla consultada

User usuarioanonimomysql en gmail.com
Vie Nov 14 17:16:15 CET 2008


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>

> 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>
>
>> 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>
>>
>>> 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>
>>>
>>>> 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
>>>> http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>>>>
>>>>
>>>
>>>
>>> --
>>> Carlos Germán Tejero
>>>
>>> _______________________________________________
>>> 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
>>
>>
>
>
> --
> Carlos Germán Tejero
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lazarus.freepascal.org
> http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20081114/aa73d84e/attachment-0001.html>


More information about the Lazarus-es mailing list