Problema com Access/ADO

10/08/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?


Gandalf.nho

Respostas

10/08/2004

Okama

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


Responder Citar

10/08/2004

Gandalf.nho

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


Responder Citar

11/08/2004

Okama

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


Responder Citar

11/08/2004

Gandalf.nho

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);


Responder Citar

11/08/2004

Gandalf.nho

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 :)


Responder Citar

11/08/2004

Okama

SELECT Matriculas.CdMatricula, EscolasSeriesAlunos.CodAluno, EscolasSeriesAlunos.AnoLetivo, EscolasSeriesAlunos.CodTurma, ´N´ AS NovoRepetente, Alunos.RendaFamiliar, [b:da346cedb1][color=red:da346cedb1]0 [/color:da346cedb1][/b:da346cedb1]AS CMatricula, [color=red:da346cedb1][b:da346cedb1]0 [/b:da346cedb1][/color:da346cedb1]AS CCPM, EscolasSeriesAlunos.DtaIngresso, EscolasSeriesAlunos.DtaSaida, Situacoes.Descricao, EscolasSeriesAlunos.NroChamada, [color=red:da346cedb1][b:da346cedb1]0 [/b:da346cedb1][/color:da346cedb1]AS DEnsReligioso, EscolasSeriesAlunos.Obs FROM Alunos INNER JOIN [color=orange:da346cedb1]([/color:da346cedb1] [color=green:da346cedb1]([/color:da346cedb1] EscolasSeriesAlunos INNER JOIN Matriculas ON [color=blue:da346cedb1]([/color:da346cedb1]EscolasSeriesAlunos.CodAluno = Matriculas.CodAluno[color=blue:da346cedb1]) [/color:da346cedb1]AND [color=blue:da346cedb1]([/color:da346cedb1]EscolasSeriesAlunos.CodSerie = Matriculas.CodSerie[color=blue:da346cedb1]) [/color:da346cedb1]AND [color=blue:da346cedb1]([/color:da346cedb1]EscolasSeriesAlunos.CodEscola = Matriculas.CodEscola[color=blue:da346cedb1])[/color:da346cedb1] AND [color=blue:da346cedb1]([/color:da346cedb1]EscolasSeriesAlunos.AnoLetivo = Matriculas.AnoLetivo[color=blue:da346cedb1])[/color:da346cedb1] [color=green:da346cedb1]) [/color:da346cedb1] LEFT JOIN Situacoes ON EscolasSeriesAlunos.CodSituacaoSaida = Situacoes.CodSituacao[color=orange:da346cedb1])[/color:da346cedb1] ON [color=blue:da346cedb1]([/color:da346cedb1]Alunos.CodAluno = Matriculas.CodAluno[color=blue:da346cedb1])[/color:da346cedb1] AND [color=blue:da346cedb1]([/color:da346cedb1]Alunos.CodAluno = EscolasSeriesAlunos.CodAluno[color=blue:da346cedb1])[/color:da346cedb1];


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


Responder Citar