passagem de uma data como parametro sql em tabela paradox

30/10/2013

0

SQL

Prezados, estou precisando passar uma data como parametro em uma consulta SQL em tabela parados.

A data será obtida em um componente DateEdit; na tabela, o campo DtLANCA foi definido como DATE
na minha procedure esta assim:

PROCEDURE...
var
vdata : ?? <<<<>>>>> não sem como definir esta variavel
Begin
vdata := DateEdit.Text <<<<<>>>>> apos a definicao da variavel, como fazer a conversão?
Após isto, as linhas abaixo estão corretas?,
Dtm.DepuraDizimo.Sql.Clear;
Dtm.DepuraDizimo.Sql.Add(''Select * From DepuraDizimo'');
Dtm.DepuraDizimo.Sql.Add(''Where DTLANCA = :vdata'');
Dtm.DepuraDizimo.Sql.ParamByName(vdata) := vData;
Dtm.DepuraDizimo.ExecSql;
Dtm.DepuraDizimo.Open;
.
.
.
Agradeço.

Gilberto Moreira

Gilberto Moreira

Responder

Posts

31/10/2013

Marcos Oliveira

Bom dia!

Você pode declarar a variável como String ou TDate;
Pra pegar o conteúdo do DBEdit, faça o seguinte:

[code]
var
Data: String;
begin
Data := DBEdit1.Text;
end;
/code]

ou


var
Data: TDate;
begin
Data := StrToDate(DBEdit1.Text);
end;


Att,

Marcos
Responder

31/10/2013

Gilberto Moreira

Após sua orientação, meu codigo ficou assim:


procedure Tfrm_DepuraDizimo.BtnAplicarFiltroClick(Sender: TObject);
Var
vdata : Tdate;
begin
vData := StrToDate(DateEdit1.Text);
ShowMessage(DateToStr(vData));
Dtm_Secre.qDepuraDizimo_O.Close;
Dtm_Secre.qDepuraDizimo_O.Sql.Clear;
Dtm_Secre.qDepuraDizimo_O.Sql.Add('Select * From DepuraDizimo');
Dtm_Secre.qDepuraDizimo_O.Sql.Add('Where DtLanca = :vData');
Dtm_Secre.qDepuraDizimo_O.ParamByName('vData').Value:= vData;
Dtm_Secre.qDepuraDizimo_O.ExecSql;
Dtm_Secre.qDepuraDizimo_O.Open;
Qrp_DepuraDizimo.Preview;
end;

Esta apresentando a seguinte mensagem: "TYPE MISMATCH IN EXPRESSION"!


Responder

31/10/2013

Marcos Oliveira

Tente alterar o parâmetro conforme abaixo.

Dtm_Secre.qDepuraDizimo_O.ParamByName('vData').AsDateTime:= vData;


Att,

Marcos
Responder

31/10/2013

Gilberto Moreira

Muito obrigado; funcionou; parabéns.

Gostaria de lhe pedir outras duas orientações, se possivel:

1ª - A sintaxe para uso de COUT e de SUN no paradox. Tudo que tento da erro.
Neste caso estou precisando somar os valores (soma algebrica, pois os estornos são feitos lançando o mesmo valor com sinal negativo) dentro da data que conseguimos filtrar (na sua ajuda anterior) e a quantidade de ocorrencias.

o ultimo teste que realizei foi com a seguinte sintaxe: SELECT VALOR SUN(VALOR) AS VTOTAL FROM DEPURADIZIMO WHERE DTLANCA = :VDATA, retorna erro em SUN(VALOR)

2ª - Toda vez que fecho o sistema, retorna mensagem de erro: ACCESS VIOLATION AT ADDRESS XXXXXXXX. READ OF ADDRESS XXXXXXXXX (xxxx são endereços em hexadecimal). além de todo o incoveniente, quando vou desligar o micro repete erro semelhante e preciso desliga-lo "na tomada".

att
gilberto
Responder

31/10/2013

Marcos Oliveira

Gilberto, tenta o comando abaixo. A sintaxe do SUM está errada.

// O SUM é com "M" e não com "N"
SELECT SUM(VALOR) AS VTOTAL FROM DEPURADIZIMO WHERE DTLANCA = :VDATA;


Att,

Marcos
Responder

02/11/2013

Gilberto Moreira

A troca foi so na hora da digitação (no post). Infelizmente não funcionou. Eu já tentei diversas sintaxes diferentes, e as mensagens de erro são as mais variadas:.

para resolver momentaneamente, fiz um laço While... do para somar e para contar as quantidades, mas quero descobrir como funciona no paradox.

Quanto à mensagem de erro na hora de fechar o relatotrio, ainda permanece.

de outra forma, agradeço sua ajuda.
Responder

APRENDA A PROGRAMAR DO ZERO AO PROFISSIONAL

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar