Problemas com SQL
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
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
Marina
Curtidas 0
Respostas
Joilson_gouveia
12/05/2003
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;
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;
GOSTEI 0
Marina
12/05/2003
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
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
GOSTEI 0
Rosivaldo
12/05/2003
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;
GOSTEI 0
Marina
12/05/2003
Desta forma dá erro criterio de dados pois os campos da tabela foram definidos como inteiro longo
GOSTEI 0
Marcelo.c
12/05/2003
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 ;
GOSTEI 0