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 13-06-2018
carlos gonzalez carlos gonzalez is offline
Miembro
 
Registrado: may 2005
Posts: 108
Poder: 20
carlos gonzalez Va por buen camino
Ya hice la prueba y me marca que no encuentra el parámetro, esta es la función que espero cachar el resultado que retorna

CREATE FUNCTION [dbo].[VALIDACION]
(@FOLIO as varchar(50) )

returns varchar(10)
as
begin
declare @ent as integer, @sal as integer,@resul varchar(10)
set @ent = (select count(*) from dbo.entrada WHERE FOLIO=@FOLIO)
set @SAL = (select count(*) from dbo.SALIDAS WHERE FOLIO=@FOLIO)


set @resul = convert(varchar(10), @ent) +convert(varchar(10), @SAL)

return @resul
end
Responder Con Cita
  #2  
Antiguo 13-06-2018
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Poder: 11
bucanero Va camino a la fama
Hola a todos,

como ya te ha comentado CASIMIRO NOTEVI, al tratarse de una funcion debes de utilizar un TSQLQuery, el problema lo puedes tener por la forma en que hay que realizar llamadas en MSSQLServer a funciones y procedimientos, prueba este código:

Código Delphi [-]

  function validacion(folio: string): string;
  begin
    // SQLQuery1 es de tipo TSQLQuery
    with SQLQuery1 do begin
      SQLConnection := SQLConnection1;
      SQL.clear;
      SQL.Add('SELECT [dbo].[VALIDACION](:folio) as RES;');
      Params.ParamByName('folio').Value := folio;
      open;
      Result:=FieldByName('RES').value;

      close;
    end;
  end;

begin
  MessageDlg(validacion('tu valor'), mtInformation, [mbOK], 0);
end;
Responder Con Cita
  #3  
Antiguo 13-06-2018
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Generando una función como esta (que es la misma que la tuya, pero usando una par tablas mías):


Código SQL [-]
CREATE FUNCTION dbo.VALIDACION (@FOLIO as VARCHAR(10) )

returns varchar(10)
as
begin
declare @ent as integer, @sal as integer,@resul varchar(10)

set @ent = (select count(*) from usuarios )
set @SAL = (select count(*) from tablas )

set @resul = convert(varchar(10), @ent) +convert(varchar(10), @SAL)

return @resul
end
GO


Y ejecutrando esta consulta:


Código SQL [-]
  SELECT dbo.validacion('11') AS RESULTADO


Obtienes un único registro con el valor resultado.
Para obtenerlo desde Delphi, tal y como han comentado un TQuery (derivado).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 13-06-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.
Cita:
Empezado por carlos gonzalez Ver Mensaje
Ya hice la prueba y me marca que no encuentra el parámetro, esta es la función que espero cachar el resultado que retorna
...
Ayudaría mucho que copiaras/pegaras exáctamente el mensaje de error que te indica.

Una misma función o stored procedure debería poderse llamar desde ambos componentes, ya sea TSQLStoredProc o TSQLQuery con el mismo resultado.

Repitiendo el ejemplo anterior, del mismo modo funciona:
Código Delphi [-]
...
begin
  SQLQuery1.Close;
  SQLQuery1.SQL.Text := 'SELECT RESULT FROM POS(:SUBSTR, :STR)';
  SQLQuery1.ParamByName('SUBSTR').AsString := 'MUNDO';
  SQLQuery1.ParamByName('STR').AsString    := 'HOLA MUNDO';
  SQLQuery1.Open;
  ShowMessage(SQLQuery1.Fields[0].AsString);  { muestra: 6 }
end;
Para el primer ejemplo usé el TSQLStoredProc ya que ese figuraba en tu intento.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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
ORDER BY No resulta con CHAR MAXIUM Firebird e Interbase 17 14-03-2017 09:07:43
Obtener el parametro de salida de una funcion de Sql en Delphi titooo MS SQL Server 6 17-06-2013 15:35:46
(DBExpress)la función IsIndexField del TSQLQuery siempre me devuelve falso amezeta32 Conexión con bases de datos 0 17-08-2006 00:20:46
Como obtener los parametros para dbexpress al conectarme por odbc..! Arturo Conexión con bases de datos 2 20-05-2006 00:51:42
consulta SQL que me resulta compleja j2mg SQL 5 29-05-2003 22:50:13


La franja horaria es GMT +2. Ahora son las 03:50:44.


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