Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Convertir String a Integer en consulta SQL (https://www.clubdelphi.com/foros/showthread.php?t=68109)

Delphitest 25-05-2010 14:11:17

Convertir String a Integer en consulta SQL
 
Buenos días a tod@s,

me estoy liando con algo que posiblemente sea sencillo, pero no acabo de dar con ello.

Estoy trabajando con PostgreSQL y quiero que un DBGrid muestre unos datos resultado de una consulta.

Para ello creo una query y en la sentencia SQL pongo:

Código PHP:

Select obras.cod_obra,obras.descripcion  from obras,clientes  where obras.cod_cliente 

Con esto funciona sin problemas y consigo que el DBGrid muestre los registros cuyo cod_cliente es 2

Sin embargo me interesa que en lugar de ser igual a 2 tenga en cuenta el valor de un DBedit, es decir algo parecido a:

Código PHP:

Select obras.cod_obra,obras.descripcion  from obras,clientes  where obras.cod_cliente '+DBEdit13.Text+' 

El problema es que DBEdit13 es de tipo string y me devuelve un error de incompatibilidad de tipos

Me interesa saber como puedo hacer para convertir en esa linea el string de Dbedit13 a Integer

He probado con la funcion StrtoInt pero lógicamente creo que no viene al caso.

¿Alguien podría echarme una mano?

Muchas Gracias

marcoszorrilla 25-05-2010 14:43:30

Supongo que un Cast te funcione en el SQL de tus componentes de conexión a la tabla.
Código SQL [-]
 cast(MiCampo as integer)

Un Saludo.

marcoszorrilla 25-05-2010 14:48:28

También prueba según este ejemplo:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
n:integer;
begin
n:=DbEdit2.Field.AsInteger;
ShowMessage(IntToStr(n));
end;
Un Saludo.

Delphitest 25-05-2010 17:49:33

Muchas gracias por tu ayuda,

no acabo de saber poner en practica lo que me indicas.

Uso Zeos para la query y por muchas combinaciones que hago no consigo sustituir el núm. del cliente por DBEdit13.Text

El problema que veo es que devuelve un contenido tipo string y no acierto a convertirlo a integer.

¿Te importa decirme en mi ejemplo como lo tengo que escribir?

Código SQL [-]
CObras.SQL.Text:='Select obras.cod_obra,obras.descripcion from obras,clientes  where obras.cod_cliente = 3';


Gracias de nuevo

roman 25-05-2010 19:00:36

Hola,

Creo que debes ser más explícito en la exposición de tu duda. Debería ser indistinto si pones

Código Delphi [-]
CObras.SQL.Text:='Select obras.cod_obra,obras.descripcion from obras,clientes  where obras.cod_cliente = 3';

que si pones

Código Delphi [-]
CObras.SQL.Text:='Select obras.cod_obra,obras.descripcion from obras,clientes  where obras.cod_cliente = ' + DBEdit13.Text;

ya que ambas partes del operador + son strings. Si obtienes una incompatibilidad de tipos puede deberse a que el contenido del DBEdit no representa un número; ¿has verificado eso?

// Saludos

Delphitest 25-05-2010 19:18:52

Lo siento Román, esto pone nervioso:(

Con el código que me has puesto ya funciona perfectamente. Mi fallo estaba en que colocaba el DBEdit dentro de los ' ' , al ponerlo como en tu ejemplo ya lo reconoce sin problema.

Muchas Gracias, mil disculpas por el tiempo que os pueda haber hecho perder

Un abrazo

roman 25-05-2010 19:36:20

Je, je. Ya veo cuál era el error. No te precupes, pasa en las mejores familias :) Lo importantes es que entiendas por qué con esas comillas extras no funciona.

// Saludos


La franja horaria es GMT +2. Ahora son las 03:45:29.

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