Array
(
)

Problema com Access/ADO

Gandalf.nho
   - 10 ago 2004

Estou tendo que montar um utilitário para importar os dados de um sistema feito em Access para outro em Paradox, cuja estrutura de tabelas é diferente (o sistema em Access é tercerizado). Uma das tabelas tem uma chave primária composta de 4 campos diferentes e a tabela correspondente no meu sistema (Paradox) só tem uma; para resolver isso, criei um campo auto-incremento na tabela Access e inclui na consulta de geração de dados. No ambiente do Access, a consulta abre legal, mas no utilitário (usando um componente ADOQuery e atribuindo a query em tempo de execução) ele acusa erro ao abrir, achando que o campo extra é um parâmetro da consulta. A mensagem de erro específica é: O parâmetro ´nome_campo´ não tem um valor padrão. Como eu resolvo isso?


Okama
   - 10 ago 2004

Como está estruturada a consulta sql ? Quais parametros está usando?


Gandalf.nho
   - 10 ago 2004

Aí é que tá, a consulta não tem nenhum parâmetro, nem fixo nem variável.


Okama
   - 11 ago 2004

:shock: Não entendi!! Se você quizer abrir o ADOQuery tem que ter uma consulta, mesmo que seja um ´Select top 1 * from tabela´.


Gandalf.nho
   - 11 ago 2004

Sem parâmetro quis dizer sem cláusula WHERE. Quando atribuí a consulta ao componente em tempo de design o tal campo aparece na propriedade Parameters, sendo que não tem um parâmetro. A query segue abaixo (o primeiro campo é que o ADOQuery acha que é um parâmetro):

SELECT Matriculas.CdMatricula, EscolasSeriesAlunos.CodAluno, EscolasSeriesAlunos.AnoLetivo, EscolasSeriesAlunos.CodTurma, ´N´ AS NovoRepetente, Alunos.RendaFamiliar, 0 AS CMatricula, 0 AS CCPM, EscolasSeriesAlunos.DtaIngresso, EscolasSeriesAlunos.DtaSaida, Situacoes.Descricao, EscolasSeriesAlunos.NroChamada, 0 AS DEnsReligioso, EscolasSeriesAlunos.Obs
FROM Alunos INNER JOIN ((EscolasSeriesAlunos INNER JOIN Matriculas ON (EscolasSeriesAlunos.CodAluno = Matriculas.CodAluno) AND (EscolasSeriesAlunos.CodSerie = Matriculas.CodSerie) AND (EscolasSeriesAlunos.CodEscola = Matriculas.CodEscola) AND (EscolasSeriesAlunos.AnoLetivo = Matriculas.AnoLetivo)) LEFT JOIN Situacoes ON EscolasSeriesAlunos.CodSituacaoSaida = Situacoes.CodSituacao) ON (Alunos.CodAluno = Matriculas.CodAluno) AND (Alunos.CodAluno = EscolasSeriesAlunos.CodAluno);


Gandalf.nho
   - 11 ago 2004

Obrigada pelo interesse em ajudar, mas acabei de descobrir o motivo do problema. Tinha criado o campo auxiliar numa cópia do MDB e o utilitário estava acessando outra cópia sem o tal campo. Bem coisa de distraída mesmo :)


Okama
   - 11 ago 2004


Citação:

SELECT

Matriculas.CdMatricula,
EscolasSeriesAlunos.CodAluno,
EscolasSeriesAlunos.AnoLetivo,
EscolasSeriesAlunos.CodTurma,
´N´ AS NovoRepetente,
Alunos.RendaFamiliar,
0 AS CMatricula,
0 AS CCPM,
EscolasSeriesAlunos.DtaIngresso,
EscolasSeriesAlunos.DtaSaida,
Situacoes.Descricao,
EscolasSeriesAlunos.NroChamada,
0 AS DEnsReligioso,
EscolasSeriesAlunos.Obs

FROM Alunos INNER JOIN
(
(
EscolasSeriesAlunos INNER JOIN Matriculas ON
(EscolasSeriesAlunos.CodAluno = Matriculas.CodAluno) AND
(EscolasSeriesAlunos.CodSerie = Matriculas.CodSerie) AND
(EscolasSeriesAlunos.CodEscola = Matriculas.CodEscola) AND
(EscolasSeriesAlunos.AnoLetivo = Matriculas.AnoLetivo)
)

LEFT JOIN Situacoes ON
EscolasSeriesAlunos.CodSituacaoSaida = Situacoes.CodSituacao)
ON (Alunos.CodAluno = Matriculas.CodAluno)
AND (Alunos.CodAluno = EscolasSeriesAlunos.CodAluno);



Estava organizando sua consulta quando vi seu post. Se já resolveu, melhor. Um abraço.