Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-03-2020
Ncvg Ncvg is offline
Registrado
 
Registrado: mar 2020
Posts: 4
Poder: 0
Ncvg Va por buen camino
Question Como capturar una variable de Firebird en Delphi

Buenas comunidad, tengo un problema, hace no mucho que uso delphi y quisiera saber como puedo hacer consultas con el text de un edit y al mismo tiempo capturar esa variable.
Para dejarme entender tengo esta consulta en firebird.
Select Sum(monto) from Montos WHERE NOMBRES = 'Roberto Ramirez' AND CAST(FECHA as DATE) = CURRENT_DATE

Teniendo esa consulta sumó el monto del campo monto de dicha persona (En este caso Roberto Ramirez) en la fecha actual.

Ahora quiero llevar eso a un IBQuery en Delphi7, pero que en vez de encontrar a Roberto Ramirez, use el dato de un Edit para buscar a la persona que yo ponga en el text del edit y completando dicha consulta, agarrar el SUM y ponerlo dentro de una variable int llamada monto dentro de Delphi, hasta el momento tengo esto dentro de un boton.

IBQuery1.Close();
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('Select Sum(monto) from Montos');
IBQuery1.SQL.Add('WHERE NOMBRES = '+ENOMBRE.Text);
IBQuery1.SQL.Add('AND CAST(FECHA as DATE) = CURRENT_DATE');
IBQuery1.ExecSQL;
Monto := IBQuery1.FieldByName('SUM').AsInteger;
ShowMessage(InttoStr(Monto));

Pero me sale un error con 'Token unknow Ramirez' (Buscando el nombre de la consulta anterior en el edit), cual es el error que tengo y que codigo puedo usar para lograr lo que busco, de antemano les agradezco mucho amigos, puesto que busco y busco y no encuentro algo que me sirva
Responder Con Cita
  #2  
Antiguo 27-03-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hola, te recomiendo que uses parámetros.
Código Delphi [-]
IBQuery1.Close();
IBQuery1.SQL.Text := 'Select Sum(monto) from Montos WHERE NOMBRES = :nombre AND CAST(FECHA as DATE) = CURRENT_DATE';
ibquery.params[0].asstring := edit1.Text;
IBQuery1.ExecSQL;
Monto := IBQuery1.Fields[0].AsInteger;
ShowMessage(InttoStr(Monto));
Y recuerda usar etiquetas cuando pongas código. Bienenido a clubdelphi

Responder Con Cita
  #3  
Antiguo 27-03-2020
Ncvg Ncvg is offline
Registrado
 
Registrado: mar 2020
Posts: 4
Poder: 0
Ncvg Va por buen camino
Question Como capturar una variable de Firebird en Delphi

Cita:
Empezado por Casimiro Notevi Ver Mensaje
Hola, te recomiendo que uses parámetros.
Código Delphi [-]
IBQuery1.Close();
IBQuery1.SQL.Text := 'Select Sum(monto) from Montos WHERE NOMBRES = :nombre AND CAST(FECHA as DATE) = CURRENT_DATE';
ibquery.params[0].asstring := edit1.Text;
IBQuery1.ExecSQL;
Monto := IBQuery1.Fields[0].AsInteger;
ShowMessage(InttoStr(Monto));
Y recuerda usar etiquetas cuando pongas código. Bienvenido a clubdelphi
Buenas gracias por la bienvenida y el consejo me es de mucha ayuda encontrar un lugar donde pueda consultar y ser ayudado, acabo de arreglarlo a algo asi.

Código Delphi [-]
IBQuery1.Close();
IBQuery1.Open();
IBQuery1.SQL.Text := 'Select Sum(monto) from Montos WHERE NOMBRES = :nombre AND CAST(FECHA as DATE) = CURRENT_DATE';
ibquery1.params[0].asstring := ENOMBRE.Text;
IBQuery1.ExecSQL;
Monto := IBQuery1.Fields[0].AsInteger;
ShowMessage(InttoStr(Monto));

Pero ahora me aparece el siguiente error 'Empty SQL Statement' probe quitando el IBQuery.Open(), pero me aparece el error 'Use open for a select Statement'. a que se puede deber.


Lo uso en SQL y me da un solo dato por lo que la columna 0 me debería devolver ese dato, que puede estar mal?
Imágenes Adjuntas
Tipo de Archivo: jpg Sin título-1.jpg (13,7 KB, 3 visitas)
Responder Con Cita
  #4  
Antiguo 27-03-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Código Delphi [-]
IBQuery1.Close();
// IBQuery1.Open();
Quita esa línea.
Responder Con Cita
  #5  
Antiguo 27-03-2020
Ncvg Ncvg is offline
Registrado
 
Registrado: mar 2020
Posts: 4
Poder: 0
Ncvg Va por buen camino
Como capturar una variable de Firebird en Delphi

Ahora me aparece 'Use Open for a Select Statement' dejo el error en adjunto

No se a que se puede deber.
Imágenes Adjuntas
Tipo de Archivo: jpg Sin título-2.jpg (32,9 KB, 2 visitas)
Responder Con Cita
  #6  
Antiguo 27-03-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Quería decirte que quitaras el .Open de ahí, pero que lo pusieras en lugar del ExecSql.
Código Delphi [-]
IBQuery1.Close();
IBQuery1.SQL.Text := 'Select Sum(monto) from Montos WHERE NOMBRES = :nombre AND CAST(FECHA as DATE) = CURRENT_DATE';
ibquery1.params[0].asstring := ENOMBRE.Text;
IBQuery1.Open();
Monto := IBQuery1.Fields[0].AsInteger;
ShowMessage(InttoStr(Monto));
El Open es cuando se hace Select. El ExecSql cuando es delete, insert, update.
Responder Con Cita
  #7  
Antiguo 27-03-2020
Ncvg Ncvg is offline
Registrado
 
Registrado: mar 2020
Posts: 4
Poder: 0
Ncvg Va por buen camino
Acaba de funcionar, te agradezco mucho, no conozco mucho de Delphi pero esto me ayuda a aprender mucho, deje una recomendación de reputación en tu nombre, gracias
Responder Con Cita
  #8  
Antiguo 27-03-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues mira este hilo.
De ahí te recomiendo La cara oculta de Delphi 4, que está enfocado principalmente a bases de datos.
Aparte, en nuestro FTP encontrarás gigas de información, cursos, programas, componentes, libros, ejemplos, etc.
Responder Con Cita
  #9  
Antiguo 28-03-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por cierto, los paréntesis en close y open también sobran.
Código Delphi [-]
IBQuery1.Close;
IBQuery1.SQL.Text := 'Select Sum(monto) from Montos WHERE NOMBRES = :nombre AND CAST(FECHA as DATE) = CURRENT_DATE';
ibquery1.params[0].asstring := ENOMBRE.Text;
IBQuery1.Open;
Monto := IBQuery1.Fields[0].AsInteger;
ShowMessage(InttoStr(Monto));
Responder Con Cita
  #10  
Antiguo 10-04-2020
Neeruu Neeruu is offline
Miembro
 
Registrado: oct 2007
Posts: 485
Poder: 17
Neeruu Va por buen camino
Cita:
Empezado por Ncvg Ver Mensaje
Buenas comunidad, tengo un problema, hace no mucho que uso delphi y quisiera saber como puedo hacer consultas con el text de un edit y al mismo tiempo capturar esa variable.
Para dejarme entender tengo esta consulta en firebird.
Select Sum(monto) from Montos WHERE NOMBRES = 'Roberto Ramirez' AND CAST(FECHA as DATE) = CURRENT_DATE

Teniendo esa consulta sumó el monto del campo monto de dicha persona (En este caso Roberto Ramirez) en la fecha actual.

Ahora quiero llevar eso a un IBQuery en Delphi7, pero que en vez de encontrar a Roberto Ramirez, use el dato de un Edit para buscar a la persona que yo ponga en el text del edit y completando dicha consulta, agarrar el SUM y ponerlo dentro de una variable int llamada monto dentro de Delphi, hasta el momento tengo esto dentro de un boton.

IBQuery1.Close();
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('Select Sum(monto) from Montos');
IBQuery1.SQL.Add('WHERE NOMBRES = '+ENOMBRE.Text);
IBQuery1.SQL.Add('AND CAST(FECHA as DATE) = CURRENT_DATE');
IBQuery1.ExecSQL;
Monto := IBQuery1.FieldByName('SUM').AsInteger;
ShowMessage(InttoStr(Monto));

Pero me sale un error con 'Token unknow Ramirez' (Buscando el nombre de la consulta anterior en el edit), cual es el error que tengo y que codigo puedo usar para lograr lo que busco, de antemano les agradezco mucho amigos, puesto que busco y busco y no encuentro algo que me sirva
Hola, error que te aparece se debe a que estas concatenando mal el parámetro.

Código Delphi [-]
IBQuery1.Close();
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('Select Sum(monto) from Montos');
IBQuery1.SQL.Add('WHERE NOMBRES = '+QuotedStr(ENOMBRE.Text));
IBQuery1.SQL.Add('AND CAST(FECHA as DATE) = CURRENT_DATE');
IBQuery1.ExecSQL;
Monto := IBQuery1.FieldByName('SUM').AsInteger;
ShowMessage(InttoStr(Monto));

Interpreto que nombres es un string, por eso agregue el QuotedStr

Prueba y avisame.
Saludos.
__________________
Saluda Atte Neeruu!!! :)
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Capturar Valor de variable dentro de Procedimiento oscarac OOP 2 24-09-2014 06:59:01
Capturar codigos de error de firebird en delphi JAI_ME Firebird e Interbase 1 14-12-2010 00:36:01
Capturar una excepcion en Delphi producida por FIREBIRD ronson Firebird e Interbase 21 01-09-2010 21:18:10
SQLite 3 --> Capturar el contenido de los campos en una variable kakarotv5 Conexión con bases de datos 4 27-11-2007 09:56:54
capturar el valor de una variable en una pagina web DISIMULA Internet 0 19-03-2007 18:34:31


La franja horaria es GMT +2. Ahora son las 21:06:17.


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
Copyright 1996-2007 Club Delphi