No value for parameter
tenho seguinte codigo...
no formulário tenho dbgrid, que estará exibindo a consulta com 1 filtro que o tipo de venda.
ao informar data inicial e data final e escolher o tipo de venda e clico em ok,
ocorre o seguinte erro > No value for parameter 'ptipo'.
se não informar o tipo de venda e clicar em ok, ele exibi todos os tipos.
procedure Tprincipal.Button2Click(Sender: TObject);
var
sqltipo:string;
begin
sqltipo:='select funcionario, data, tipo, valor from VENDAS where data>=:pinicial and data<=:pfinal';
if edittipo.Text <> '' then
sqltipo:= sqltipo + ' and tipo=:ptipo'; dm.cdstipoVenda.Close;
dm.cdstipoVenda.CommandText:=sqltipo; dm.cdstipoVenda.Params[0].AsDate:=strtodate(editini.Text);
dm.cdstipoVenda.Params[1].AsDate:=strtodate(editfim.Text); if edittipo.Text <> '' then
dm.cdstipoVenda.Params[2].AsString:=(edittipo.Text); dm.cdstipoVenda.Open;
end; alguem poderia dar uma ajudar?
sqltipo:string;
begin
sqltipo:='select funcionario, data, tipo, valor from VENDAS where data>=:pinicial and data<=:pfinal';
if edittipo.Text <> '' then
sqltipo:= sqltipo + ' and tipo=:ptipo'; dm.cdstipoVenda.Close;
dm.cdstipoVenda.CommandText:=sqltipo; dm.cdstipoVenda.Params[0].AsDate:=strtodate(editini.Text);
dm.cdstipoVenda.Params[1].AsDate:=strtodate(editfim.Text); if edittipo.Text <> '' then
dm.cdstipoVenda.Params[2].AsString:=(edittipo.Text); dm.cdstipoVenda.Open;
end; alguem poderia dar uma ajudar?
Thiago Silva
Curtidas 0
Respostas
Thiago Santana
22/03/2010
Chará vê se isso aí resolve teu problema...
Vc se atrapalhou na ordem dos seus parametros! Vê esse lance da data aí pq a datainicial e a datafinal vc tá comparando com o mesmo campo! Vê se é realmente isso que vc quer! ( Só foi um toque)... procedure Tprincipal.Button2Click(Sender: TObject); var
sqltipo:string;
begin
sqltipo:='select funcionario, data, tipo, valor from VENDAS where data>=:pinicial and data<=:pfinal';
if edittipo.Text <> '' then
sqltipo:= sqltipo + ' and tipo=:ptipo'; dm.cdstipoVenda.Close;
dm.cdstipoVenda.Params[0].AsDate:=strtodate(editini.Text);
dm.cdstipoVenda.Params[1].AsDate:=strtodate(editfim.Text); if edittipo.Text <> '' then
dm.cdstipoVenda.Params[2].AsString:=(edittipo.Text); dm.cdstipoVenda.CommandText:=sqltipo;
dm.cdstipoVenda.Open;
end; Espero ter ajudado! Caso não funcione poste aí para tentarmos resolver o problema!
AbraçoO
Vc se atrapalhou na ordem dos seus parametros! Vê esse lance da data aí pq a datainicial e a datafinal vc tá comparando com o mesmo campo! Vê se é realmente isso que vc quer! ( Só foi um toque)... procedure Tprincipal.Button2Click(Sender: TObject); var
sqltipo:string;
begin
sqltipo:='select funcionario, data, tipo, valor from VENDAS where data>=:pinicial and data<=:pfinal';
if edittipo.Text <> '' then
sqltipo:= sqltipo + ' and tipo=:ptipo'; dm.cdstipoVenda.Close;
dm.cdstipoVenda.Params[0].AsDate:=strtodate(editini.Text);
dm.cdstipoVenda.Params[1].AsDate:=strtodate(editfim.Text); if edittipo.Text <> '' then
dm.cdstipoVenda.Params[2].AsString:=(edittipo.Text); dm.cdstipoVenda.CommandText:=sqltipo;
dm.cdstipoVenda.Open;
end; Espero ter ajudado! Caso não funcione poste aí para tentarmos resolver o problema!
AbraçoO
GOSTEI 0
Thiago Silva
22/03/2010
Chará vê se isso aí resolve teu problema...
Vc se atrapalhou na ordem dos seus parametros! Vê esse lance da data aí pq a datainicial e a datafinal vc tá comparando com o mesmo campo! Vê se é realmente isso que vc quer! ( Só foi um toque)... procedure Tprincipal.Button2Click(Sender: TObject); var
sqltipo:string;
begin
sqltipo:='select funcionario, data, tipo, valor from VENDAS where data>=:pinicial and data<=:pfinal';
if edittipo.Text <> '' then
sqltipo:= sqltipo + ' and tipo=:ptipo'; dm.cdstipoVenda.Close;
dm.cdstipoVenda.Params[0].AsDate:=strtodate(editini.Text);
dm.cdstipoVenda.Params[1].AsDate:=strtodate(editfim.Text); if edittipo.Text <> '' then
dm.cdstipoVenda.Params[2].AsString:=(edittipo.Text); dm.cdstipoVenda.CommandText:=sqltipo;
dm.cdstipoVenda.Open;
end; Espero ter ajudado! Caso não funcione poste aí para tentarmos resolver o problema!
AbraçoO
Vc se atrapalhou na ordem dos seus parametros! Vê esse lance da data aí pq a datainicial e a datafinal vc tá comparando com o mesmo campo! Vê se é realmente isso que vc quer! ( Só foi um toque)... procedure Tprincipal.Button2Click(Sender: TObject); var
sqltipo:string;
begin
sqltipo:='select funcionario, data, tipo, valor from VENDAS where data>=:pinicial and data<=:pfinal';
if edittipo.Text <> '' then
sqltipo:= sqltipo + ' and tipo=:ptipo'; dm.cdstipoVenda.Close;
dm.cdstipoVenda.Params[0].AsDate:=strtodate(editini.Text);
dm.cdstipoVenda.Params[1].AsDate:=strtodate(editfim.Text); if edittipo.Text <> '' then
dm.cdstipoVenda.Params[2].AsString:=(edittipo.Text); dm.cdstipoVenda.CommandText:=sqltipo;
dm.cdstipoVenda.Open;
end; Espero ter ajudado! Caso não funcione poste aí para tentarmos resolver o problema!
AbraçoO
GOSTEI 0
Thiago Silva
22/03/2010
GOSTEI 0
Thiago Silva
22/03/2010
GOSTEI 0
Thiago Silva
22/03/2010
Chará vê se isso aí resolve teu problema...
Vc se atrapalhou na ordem dos seus parametros! Vê esse lance da data aí pq a datainicial e a datafinal vc tá comparando com o mesmo campo! Vê se é realmente isso que vc quer! ( Só foi um toque)... procedure Tprincipal.Button2Click(Sender: TObject); var
sqltipo:string;
begin
sqltipo:='select funcionario, data, tipo, valor from VENDAS where data>=:pinicial and data<=:pfinal';
if edittipo.Text <> '' then
sqltipo:= sqltipo + ' and tipo=:ptipo'; dm.cdstipoVenda.Close;
dm.cdstipoVenda.Params[0].AsDate:=strtodate(editini.Text);
dm.cdstipoVenda.Params[1].AsDate:=strtodate(editfim.Text); if edittipo.Text <> '' then
dm.cdstipoVenda.Params[2].AsString:=(edittipo.Text); dm.cdstipoVenda.CommandText:=sqltipo;
dm.cdstipoVenda.Open;
end; Espero ter ajudado! Caso não funcione poste aí para tentarmos resolver o problema!
AbraçoO
rapaz fiz umas lambanças no post aki, gravo uns em branco...enfim
amigo em relação a data é isso msm, to comparando com o msm campo! o codigo apresentou outro erro
list index out of bounds(1).
o que poderia ser? obrigado pela ajuda
Vc se atrapalhou na ordem dos seus parametros! Vê esse lance da data aí pq a datainicial e a datafinal vc tá comparando com o mesmo campo! Vê se é realmente isso que vc quer! ( Só foi um toque)... procedure Tprincipal.Button2Click(Sender: TObject); var
sqltipo:string;
begin
sqltipo:='select funcionario, data, tipo, valor from VENDAS where data>=:pinicial and data<=:pfinal';
if edittipo.Text <> '' then
sqltipo:= sqltipo + ' and tipo=:ptipo'; dm.cdstipoVenda.Close;
dm.cdstipoVenda.Params[0].AsDate:=strtodate(editini.Text);
dm.cdstipoVenda.Params[1].AsDate:=strtodate(editfim.Text); if edittipo.Text <> '' then
dm.cdstipoVenda.Params[2].AsString:=(edittipo.Text); dm.cdstipoVenda.CommandText:=sqltipo;
dm.cdstipoVenda.Open;
end; Espero ter ajudado! Caso não funcione poste aí para tentarmos resolver o problema!
AbraçoO
GOSTEI 0
Wilson Junior
22/03/2010
Este erro ocorre quando você tenta acessar uma posição não existente em uma lista. Você possui todos os seus parâmetros cadastrados?
Espero ter colaborado.
Espero ter colaborado.
GOSTEI 0
Emerson Nascimento
22/03/2010
tente:
procedure Tprincipal.Button2Click(Sender: TObject);
var
sqltipo:string;
begin
sqltipo:='select funcionario, data, tipo, valor from VENDAS where data between :pinicial and :pfinal';
if edittipo.Text <> '' then
sqltipo:= sqltipo + ' and tipo='+QuotedStr(edittipo.Text);
dm.cdstipoVenda.Close;
dm.cdstipoVenda.CommandText:=sqltipo;
dm.cdstipoVenda.Params[0].AsDate:=strtodate(editini.Text);
dm.cdstipoVenda.Params[1].AsDate:=strtodate(editfim.Text);
dm.cdstipoVenda.Open;
end;
note que só irá funcionar se o provider permitir alteração no commandtext.
procedure Tprincipal.Button2Click(Sender: TObject);
var
sqltipo:string;
begin
sqltipo:='select funcionario, data, tipo, valor from VENDAS where data between :pinicial and :pfinal';
if edittipo.Text <> '' then
sqltipo:= sqltipo + ' and tipo='+QuotedStr(edittipo.Text);
dm.cdstipoVenda.Close;
dm.cdstipoVenda.CommandText:=sqltipo;
dm.cdstipoVenda.Params[0].AsDate:=strtodate(editini.Text);
dm.cdstipoVenda.Params[1].AsDate:=strtodate(editfim.Text);
dm.cdstipoVenda.Open;
end;
note que só irá funcionar se o provider permitir alteração no commandtext.
GOSTEI 0
Thiago Silva
22/03/2010
Este erro ocorre quando você tenta acessar uma posição não existente em uma lista. Você possui todos os seus parâmetros cadastrados?
Espero ter colaborado.
o rapaz estão sim... axo q se nao tivessem o programa nao ia rodar, ou to errado?
mais ta tudo certinho em relação os parametros, as caixas de textos existem. teria outra solução ou uma dica?
grato
Espero ter colaborado.
GOSTEI 0
Thiago Silva
22/03/2010
tente:
procedure Tprincipal.Button2Click(Sender: TObject);
var
sqltipo:string;
begin
sqltipo:='select funcionario, data, tipo, valor from VENDAS where data between :pinicial and :pfinal';
if edittipo.Text <> '' then
sqltipo:= sqltipo + ' and tipo='+QuotedStr(edittipo.Text);
dm.cdstipoVenda.Close;
dm.cdstipoVenda.CommandText:=sqltipo;
dm.cdstipoVenda.Params[0].AsDate:=strtodate(editini.Text);
dm.cdstipoVenda.Params[1].AsDate:=strtodate(editfim.Text);
dm.cdstipoVenda.Open;
end;
note que só irá funcionar se o provider permitir alteração no commandtext.
aí funcionou cara, ficou joia....agora vou aplicar o codigo nos outros formulários que estavam dando o msm erro!
me explica uma coisa... q bizu é esse?
varprocedure Tprincipal.Button2Click(Sender: TObject);
var
sqltipo:string;
begin
sqltipo:='select funcionario, data, tipo, valor from VENDAS where data between :pinicial and :pfinal';
if edittipo.Text <> '' then
sqltipo:= sqltipo + ' and tipo='+QuotedStr(edittipo.Text);
dm.cdstipoVenda.Close;
dm.cdstipoVenda.CommandText:=sqltipo;
dm.cdstipoVenda.Params[0].AsDate:=strtodate(editini.Text);
dm.cdstipoVenda.Params[1].AsDate:=strtodate(editfim.Text);
dm.cdstipoVenda.Open;
end;
note que só irá funcionar se o provider permitir alteração no commandtext.
sqltipo:string;
begin
sqltipo:='select funcionario, data, tipo, valor from VENDAS where data between :pinicial and :pfinal';
if edittipo.Text <> '' then sqltipo:= sqltipo + ' and tipo='+QuotedStr(edittipo.Text); dm.cdstipoVenda.Close;
dm.cdstipoVenda.CommandText:=sqltipo;
dm.cdstipoVenda.Params[0].AsDate:=strtodate(editini.Text);
dm.cdstipoVenda.Params[1].AsDate:=strtodate(editfim.Text);
dm.cdstipoVenda.Open;
end; vlw abração!
GOSTEI 0
Marcelo Cavalcanti
22/03/2010
Na unit SysUtils você encontra essa função. Veja código:
-- para cada caractere apóstrofo na seqüência, outra é adicionada
function QuotedStr(const S: string): string;
var
I: Integer;
begin
Result := S;
for I := Length(Result) downto 1 do
if Result[I] = '''' then Insert('''', Result, I);
Result := '''' + Result + '''';
end; Sds, Marcelo Rezende Cavalcanti
--------------------------------------------------------------------
www.swg2.com.br (Transformando suas informações em dados gerenciais)
var
I: Integer;
begin
Result := S;
for I := Length(Result) downto 1 do
if Result[I] = '''' then Insert('''', Result, I);
Result := '''' + Result + '''';
end; Sds, Marcelo Rezende Cavalcanti
--------------------------------------------------------------------
www.swg2.com.br (Transformando suas informações em dados gerenciais)
GOSTEI 0