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 Buscar Temas de Hoy Marcar Foros Como Leídos

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.079
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.079
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.079
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.079
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.079
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: 494
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


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 05:53:55.


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