Array
(
)

Datas como parametro no Firebird

Neto
   - 29 nov 2005

Olá a todos.
Pesquisei diversos tópicos aqui no forum com diversas dicas, mas ainda não resolveu o problema
Estou usando Firebird + Delphi 7 + ClientDataSet, nas configurações regionais do Windows uso dd/mm/aaaa. Nos campos da tela de seleção dos parametros para o relatório uso MaskEdit para datas.
M_Sql := ´SELECT * FROM PEDIDOS A ´;
M_sQL := M_Sql + ´WHERE PED_COD = :PEDIDO ´;
M_Sql := M_Sql + ´AND A.PED_COD BETWEEN :DTI AND DTF ´;
DM.SQLDTSETPEDIDOS.PARAMBYNAME(´DTI´).ASDATE := STRTODATE(EDIT1.TEXT)
DM.SQLDTSETPEDIDOS.PARAMBYNAME(´DTF´).ASDATE := STRTODATE(EDIT2.TEXT)
É apresentada a seguinte mensagem de erro:
SQLDTSETPEDIDOS: Parameters ´DTI´ not found.
Alguém poderia me dar um dica consistente.
Abraços a todos e Obrigado
Neto


Jairroberto
   - 29 nov 2005

Olá, Neto!

Se você não se enganou ao copiar o código para cá, está faltando atribuir o comando SQL que você montou na variável M_Sql para a propriedade ´CommandText´ do DataSet:

M_Sql := ´SELECT * FROM PEDIDOS A ´;
M_Sql := M_Sql + ´WHERE A.PED_COD = :PEDIDO ´;
M_Sql := M_Sql + ´AND A.PED_COD BETWEEN :DTI AND :DTF ´;

DM.SQLDTSETPEDIDOS.CommandText := M_Sql;

DM.SQLDTSETPEDIDOS.PARAMBYNAME(´DTI´).ASDATE := STRTODATE(EDIT1.TEXT)
DM.SQLDTSETPEDIDOS.PARAMBYNAME(´DTF´).ASDATE := STRTODATE(EDIT2.TEXT)


Um abraço,
Jair


Neto
   - 29 nov 2005

Olá Jair Roberto, obrigado pela atenção.
Eu realmente não mencionei mas estou executando o comando COMMANDTEXT mas a mensagem de erro permanece.
Esta estrutura uso com Paradox mas no FireBird tá dando este problema.
Mas tenho confiança que vamos encontrar o problema PORQUE O FIREBIRD FUNCIONA BEM NÉ.......
Abraços
Neto


Jairroberto
   - 30 nov 2005

Olá, Neto!

O objeto TSQLDataSet não possui a propriedade ParamByName. Você deve estar usando a propriedade Params para fazer isso. O ideal seria você copiar o código exato que está gerando o erro para facilitar a identificação do problema. De qualquer forma, experimente atribuir os valores dos parâmetros pelo índice de cada um:

DM.SQLDTSETPEDIDOS.Params[0].AsInteger := CodigoPedido;
DM.SQLDTSETPEDIDOS.Params[1].AsDate := STRTODATE(EDIT1.TEXT)
DM.SQLDTSETPEDIDOS.Params[2].ASDATE := STRTODATE(EDIT2.TEXT)


Um abraço,
Jair