Problemas com SQL

12/05/2003

2

Estou usando conexão ADO e Banco de Dados Access.

Tenho um campo (Cod_Municipio) da tabela Municipio definido como AutoNumeração e o tamanho do campo definido como Inteiro Longo.
Só que quando comparo uma variavel inteira com este campo aparece mensagem
de erro dizendo Este parametro não tem valor padrão.

Ex:
Var n_CodMunicipio, n_CodArtesao, n_CodFornecedor : Integer;

Select Mercadoria.Municpio_Cod_Municipio
,Municipio.Nome_Municipio
,Artesao.Nome_Artesao
,Fornecedor.Nome_Fornecedor
FROM Mercadoria
,Fornecedor
,Artesao
,Municipio
where Mercadoria.Nome_Mercadoria = ´ESCULTURA´
and Municpio.Cod_Municipio = n_CodMunicipio
and Artesao.Cod_Artesao = n_CodigoArtesao
and Fornecedor.Cod_Fornecedor = n_CodigoFornecedor

Onde todos os campos da esquerda foram definidos como AutoNumeração no Banco
(Access).

Tipo de Dados = AutoNumeração
Tamanho do Campo = InteiroLongo
Novos Valores = Incremento

A mensagem de erro é : O parametro não tem valor padrão.

Se alguém puder ajudar...
Obrigada
Marina


Responder

Posts

Tente alterar para:

query1.Text := Select Mercadoria.Municpio_Cod_Municipio
,Municipio.Nome_Municipio
,Artesao.Nome_Artesao
,Fornecedor.Nome_Fornecedor
FROM Mercadoria
,Fornecedor
,Artesao
,Municipio
where Mercadoria.Nome_Mercadoria = ´ESCULTURA´
and Municpio.Cod_Municipio = :n_CodMunicipio
and Artesao.Cod_Artesao = :n_CodigoArtesao
and Fornecedor.Cod_Fornecedor = :n_CodigoFornecedor ;
query1.ParamByName(n_CodMunicipio).AsInteger := n_CodMunicipio;
query1.ParamByName(n_CodigoArtesao ).AsInteger := n_CodigoArtesao ;
query1.ParamByName(n_CodigoFornecedor ).AsInteger := n_CodigoFornecedor ;
query1.open;


Responder

12/05/2003

Marina

Valeu mas não deu certo não, Mensagem: Erro não identificado. O Interessante é que se eu definir o codigo como 1, 2, 3... funciona. Parece que ele não aceita a variavel.

Ex:

Select Mercadoria.Municpio_Cod_Municipio
,Municipio.Nome_Municipio
,Artesao.Nome_Artesao
,Fornecedor.Nome_Fornecedor
FROM Mercadoria
,Fornecedor
,Artesao
,Municipio
where Mercadoria.Nome_Mercadoria = ´ESCULTURA´
and Municpio.Cod_Municipio = 2
and Artesao.Cod_Artesao = 1
and Fornecedor.Cod_Fornecedor = 3


Responder

12/05/2003

Rosivaldo

Marina, tenta o seguinte...

procedure AtualizaQuery;
begin
  with SuaQuery do begin
    Sql.Clear;
    sql.add(´
    Select Mercadoria.Municpio_Cod_Municipio
    ,Municipio.Nome_Municipio
    ,Artesao.Nome_Artesao
    ,Fornecedor.Nome_Fornecedor
    FROM Mercadoria
    ,Fornecedor
    ,Artesao
    ,Municipio
    where Mercadoria.Nome_Mercadoria = + QuotedStr(´ESCULTURA´) +
    ´ and Municpio.Cod_Municipio = ´  + IntToStr(n_CodMunicipio) +
    ´ and Artesao.Cod_Artesao = ´ + IntToStr(n_CodArtesao) +
    ´ and Fornecedor.Cod_Fornecedor = ´ + IntToStr(n_CodFornecedor));
    prepare;
    open;
  end;
end;



Responder

12/05/2003

Marina

Desta forma dá erro criterio de dados pois os campos da tabela foram definidos como inteiro longo


Responder

12/05/2003

Marcelo.c

Tente alterar para: query1.Text := Select Mercadoria.Municpio_Cod_Municipio ,Municipio.Nome_Municipio ,Artesao.Nome_Artesao ,Fornecedor.Nome_Fornecedor FROM Mercadoria ,Fornecedor ,Artesao ,Municipio where Mercadoria.Nome_Mercadoria = ´ESCULTURA´ and Municpio.Cod_Municipio = :n_CodMunicipio and Artesao.Cod_Artesao = :n_CodigoArtesao and Fornecedor.Cod_Fornecedor = :n_CodigoFornecedor ; query1.ParamByName(n_CodMunicipio).AsInteger := n_CodMunicipio; query1.ParamByName(n_CodigoArtesao ).AsInteger := n_CodigoArtesao ; query1.ParamByName(n_CodigoFornecedor ).AsInteger := n_CodigoFornecedor ; query1.open;


Se você utiliza ADO, nas linhas:

query1.ParamByName(n_CodMunicipio).[b:ac48ccd2cd]AsInteger[/b:ac48ccd2cd] := n_CodMunicipio;
query1.ParamByName(n_CodigoArtesao ).[b:ac48ccd2cd]AsInteger[/b:ac48ccd2cd] := n_CodigoArtesao ;
query1.ParamByName(n_CodigoFornecedor ).[b:ac48ccd2cd]AsInteger[/b:ac48ccd2cd] := n_CodigoFornecedor ;

Você deve alterar para:

query1.ParamByName(n_CodMunicipio).[b:ac48ccd2cd]Value[/b:ac48ccd2cd] := n_CodMunicipio;
query1.ParamByName(n_CodigoArtesao ).[b:ac48ccd2cd]Value[/b:ac48ccd2cd] := n_CodigoArtesao ;
query1.ParamByName(n_CodigoFornecedor ).[b:ac48ccd2cd]Value[/b:ac48ccd2cd] := n_CodigoFornecedor ;


Responder