Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Lazarus, FreePascal, Kylix, etc. (https://www.clubdelphi.com/foros/forumdisplay.php?f=14)
-   -   Sin campos Varchar en el TSQLQery (https://www.clubdelphi.com/foros/showthread.php?t=80965)

Chandra_ 27-09-2012 20:52:50

Sin campos Varchar en el TSQLQery
 
Hola. Estaba migrando una aplicación Delphi a Lazarus 1.0 y me he encontrado un problemilla que no sé bien cómo solucionar:

Tengo un TSQLQery que enlaza con un procedimiento almacenado de la base de datos. Por lo tanto, tengo que meter a mano los campos que ese TSQLQery tendrá en tiempo de ejecución (los que devolverá un query al PA).

Pues bien, abro el "Editor de campos" del TSQLQery (con un doble click en el componente) --> "Crear nuevo campo", pero en el tipo de campo no hay varchar (sí veo que hay String, por ejemplo).

¿Me dará problemas en el futuro si uso un String en su lugar? ¿Debería de usar otro tipo?

Como podréis imaginar tengo el mismo problema con los campos calculados.

Gracias.

Casimiro Notevi 27-09-2012 21:05:37

¿Y ese TSQLQuery de qué componentes es?, ¿has echado un vistazo a alguna documentación?, ¿lo has probado?,
¿por qué dices que con los camps calculados tendrás el mismo problema si son numéricos?, ¿usas campos calculados de tipo cadena?.

¡Tantas preguntas! :)

mightydragonlor 27-09-2012 21:43:00

los campos de el TSQLQuery está conformados por tipos de FPC, así que no deberías tener problemas con esto, ya que VARCHAR y CHAR, a la final son simplemente String's, además, no es necesario que los crees, ya que al momento de ejecutar la consulta o el sp, estos mismos se crearán y sólo debes conocer el nombre con que son devueltos para aceder a los mismos con FieldByName, del TSQLQuery.

Saludos.

Chandra_ 27-09-2012 22:33:31

Cita:

Empezado por Casimiro Notevi (Mensaje 445642)
¿Y ese TSQLQuery de qué componentes es?, ¿has echado un vistazo a alguna documentación?, ¿lo has probado?,
¿por qué dices que con los camps calculados tendrás el mismo problema si son numéricos?, ¿usas campos calculados de tipo cadena?.

¡Tantas preguntas! :)

Gracias por leerme, Casimiro ;)

Tienes razón, me ha faltado detallar más la pregunta.

Pues bien, el TSQLQery es nativo de Lazarus, de la pestaña SQLdb. Está enlazado a otros componentes (todos nativos Lazarus): un TIBConnection, un SQLTransaction y su correspondiente TDatasource que lo conecta a una TDBGrid (según en esquema que comenté aquí).

En cuanto a si lo he probado, pues confieso que aún no :o, por eso pregunto, por si alguien ha pasado por ahí y tenía idea de cómo solucionarlo. Como estoy "reconstruyendo" la aplicación en Lazarus, aún no he llegado a la parte en que se usan esos procedimientos almacenados a través de un query. Sería cuestión de crear un entorno de pruebas y poner en práctica el consabido ensayo/error :)

Y en cuanto a documentación, he buscado un montón en Google, pero sigo sin encontrar nada. El problema añadido con Lazarus es que casi todo lo que sale es para Delphi. Y sí, añado "Lazarus" a la búsqueda, pero eso no evita los miles de entradas en las que en algún punto del texto se establece algún paralelismo con el correlato libre de Delphi.

En lo referente a tu pregunta sobre si uso campos calculados tipo cadena, no, no los uso ahora mismo. Sin embargo, no veo el motivo por el que sea tan raro usarlos: partiendo de una premisa, puedes querer mostrar un valor alfanumérico determinado. De hecho, se me ocurren varias situaciones en mi aplicación en las que, dependiendo de unos factores u otros, quiera presentar al usuario una cadena de texto determinada, a modo de etiqueta de un valor: por ejemplo, distintas unidades de medida convertidas a partir de otras y quiero adjuntar un campo con el nombre de la nueva unidad. Esas "etiquetas" se deciden en fase de ejecución y, por lo tanto, no sé en fase de diseño qué tipo de valor es el del campo anterior en la columna del dbgrid, que también estoy calculando. Puedo querer poner "0,8773" en una celda de una columna del dbgrid y en la siguiente celda, "m/s". No sé, da igual... me estoy enrollando :D.

Gracias por tu atención.

Chandra_ 27-09-2012 22:43:42

Cita:

Empezado por mightydragonlor (Mensaje 445647)
los campos de el TSQLQuery está conformados por tipos de FPC, así que no deberías tener problemas con esto, ya que VARCHAR y CHAR, a la final son simplemente String's, además, no es necesario que los crees, ya que al momento de ejecutar la consulta o el sp, estos mismos se crearán y sólo debes conocer el nombre con que son devueltos para aceder a los mismos con FieldByName, del TSQLQuery.

Saludos.

Muchas gracias por la respuesta :)

Pues llevas toda la razón, qué burrada estaba haciendo :o. Qué forma más absurda de complicarme la vida :D. De hecho, yo no creo nunca esos campos en los dataset enlazados a querys y siempre he llamado a los campos con FieldByName.

A veces, por la fuerza de la costumbre, uno perpetúa una tontería sin pararse a pensar por qué lo está haciendo: Estaba pegándome de tortas con el editor de campos, que no me dejaba validar si no e metía el tipo y realmente nada de eso es necesario :D.

Gracias por la aclaración y por "pararme" ;) (qué vergüenza, qué burro soy a veces :o).

Casimiro Notevi 27-09-2012 23:12:26

El que tiene boca... se equivoca :)
Son tantas cosas las que tenemos en la cabeza... bastante hacemos con acordarnos de respirar :)

Chandra_ 27-09-2012 23:42:20

Cita:

Empezado por Casimiro Notevi (Mensaje 445661)
El que tiene boca... se equivoca :)
Son tantas cosas las que tenemos en la cabeza... bastante hacemos con acordarnos de respirar :)

Gracias, Casimiro ;)


La franja horaria es GMT +2. Ahora son las 16:27:19.

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