COMO FACO ESSA SQL USANDO DAO 3,51
Com a ajuda do amigo(RCMRO) do VBMania consegui chegar até essa SQL:
só que uso DAO3.51 (Access 97) em um projeto de de uns 45 forms... ai se eu mudar para DAO 3.6 esse sql funciona blz, mas começa a dar pau nos meus outros SQL dos outros 45 forms(Erro: bando de dados não reconhecido)...
Como eu faria para fazer essas sub-consultas usando o DAO 3.51 ?
SQL = [Ô]SELECT prd.DESCRICAO AS var_Desc, prd.CODIGO AS var_codEnt, prd.QUANT_ESTOQUE AS var_Quant, peiult.CUSTO AS var_Custo, peiult.FRETE AS var_Frete, peiult.IMPOSTO_VALOR_COMPRA AS var_ImpCompra, peiult.CUSTO_COMPRA AS var_VlrCompra, peiult.VENDA AS var_VENDA FROM (Produtos AS prd INNER JOIN Produtos_Entrada_Itens AS peiult ON prd.CODIGO = peiult.CODIGO_PRODUTO) INNER JOIN (SELECT pei1.CODIGO_PRODUTO, MAX(pei1.DATA_ENTRADA) AS DATA_ENTRADA, Max(pei1.CODIGO) AS Codigo FROM Produtos_Entrada_Itens AS pei1 WHERE pei1.DATA_ENTRADA between #[Ô] & Format(Mask1, [Ô]mm/dd/yy[Ô]) & [Ô]# and #[Ô] & Format(Mask2, [Ô]mm/dd/yy[Ô]) & [Ô]# GROUP BY pei1.CODIGO_PRODUTO) AS pei ON (peiult.CODIGO_PRODUTO = PEI.CODIGO_PRODUTO) AND (peiult.DATA_ENTRADA = PEI.DATA_ENTRADA) AND (peiult.CODIGO = PEI.Codigo) ORDER BY prd.descricao[Ô]
só que uso DAO3.51 (Access 97) em um projeto de de uns 45 forms... ai se eu mudar para DAO 3.6 esse sql funciona blz, mas começa a dar pau nos meus outros SQL dos outros 45 forms(Erro: bando de dados não reconhecido)...
Como eu faria para fazer essas sub-consultas usando o DAO 3.51 ?
Que erro ocorre?
só que uso DAO3.51 (Access 97) em um projeto de de uns 45 forms... ai se eu mudar para DAO 3.6 esse sql funciona blz, mas começa a dar pau nos meus outros SQL dos outros 45 forms(Erro: bando de dados não reconhecido)...
O erro descrito como BANCO DE DADOS NÃO RECONHECIDO é para o dao 3.5 ou 3.6?
Qual o erro do 3.5?
Qual o erro do 3.5?
Citação:WEBIER escreveu:
só que uso DAO3.51 (Access 97) em um projeto de de uns 45 forms... ai se eu mudar para DAO 3.6 esse sql funciona blz, mas começa a dar pau nos meus outros SQL dos outros 45 forms(Erro: bando de dados não reconhecido)...
Esse erro ocorre quando a versão do DAO é incompatÃvel com a versão do banco de dados.
Qual é a versão do seu Access?
uso DAO 3.51 e Access 97
mas a SQL de cima só funciona se converter meu BD pra Access 2000 e usar DAO 3.60
mas a SQL de cima só funciona se converter meu BD pra Access 2000 e usar DAO 3.60
Citação:WEBIER escreveu:
uso DAO 3.51 e Access 97
mas a SQL de cima só funciona se converter meu BD pra Access 2000 e usar DAO 3.60
Isso não faz muito sentido...
Como que essa sql não funciona no access97!
Que erro ocorre quando vc utiliza essa sql no access97?
código completo:
usando DAO 3.51 e Access 97 dar o seguinte erro:
Run-time erro [ô]3131[ô]
Erro na sintaxe na clausula FROM
ai quando debugo ele seleciona:
Private Sub cmdCONintervalo_Click()
Dim SQL As String
Dim Rs As Recordset
Call ABRIR_BD_SEM_DATA1
SQL = [Ô]SELECT prd.DESCRICAO AS var_Desc, prd.CODIGO AS var_codEnt, prd.QUANT_ESTOQUE AS var_Quant, peiult.CUSTO AS var_Custo, peiult.FRETE AS var_Frete, peiult.IMPOSTO_VALOR_COMPRA AS var_ImpCompra, peiult.CUSTO_COMPRA AS var_VlrCompra, peiult.VENDA AS var_VENDA FROM (Produtos AS prd INNER JOIN Produtos_Entrada_Itens AS peiult ON prd.CODIGO = peiult.CODIGO_PRODUTO) INNER JOIN (SELECT pei1.CODIGO_PRODUTO, MAX(pei1.DATA_ENTRADA) AS DATA_ENTRADA, Max(pei1.CODIGO) AS Codigo FROM Produtos_Entrada_Itens AS pei1 WHERE pei1.DATA_ENTRADA between #[Ô] & Format(Mask1, [Ô]mm/dd/yy[Ô]) & [Ô]# and #[Ô] & Format(Mask2, [Ô]mm/dd/yy[Ô]) & [Ô]# GROUP BY pei1.CODIGO_PRODUTO) AS pei ON (peiult.CODIGO_PRODUTO = PEI.CODIGO_PRODUTO) AND (peiult.DATA_ENTRADA = PEI.DATA_ENTRADA) AND (peiult.CODIGO = PEI.Codigo) ORDER BY prd.descricao[Ô]
Set Rs = BD.OpenRecordset(SQL)
End Sub
usando DAO 3.51 e Access 97 dar o seguinte erro:
Run-time erro [ô]3131[ô]
Erro na sintaxe na clausula FROM
ai quando debugo ele seleciona:
Set Rs = BD.OpenRecordset(SQL)
para facilitar mais ainda a compreensão, libeirei o download com as duas versões do BD (97 e 2000)
link:
Clique Aqui
link:
Clique Aqui
Citação:
WEBIER escreveu:
para facilitar mais ainda a compreensão, libeirei o download com as duas versões do BD (97 e 2000)
link:
Clique Aqui
O que ocorre, é que o access 2000 faz a [Ô]correção[Ô] na sintaxe, por isso não dá o erro, e tbm é mais compatÃvel com o sql padrão.
No access97, quando vc utiliza uma subquery vc tem que especificar a subquery dentro de colchetes e finalizado com ponto.
veja o trecho que será corrigido:
... INNER JOIN [SELECT pei1.CODIGO_PRODUTO, MAX(pei1.DATA_ENTRADA) AS DATA_ENTRADA, Max(pei1.CODIGO) AS Codigo FROM Produtos_Entrada_Itens AS pei1 WHERE pei1.DATA_ENTRADA between #[Ô] & Format(Mask1, [Ô]mm/dd/yy[Ô]) & [Ô]# and #[Ô] & Format(Mask2, [Ô]mm/dd/yy[Ô]) & [Ô]# GROUP BY pei1.CODIGO_PRODUTO]. AS pei ON...
Se vc copiar a sintaxe e colar numa consulta do access 2000, executar a consulta e depois pegar a sintaxe que o access 2000 [Ô]corrigiu[Ô] e executar no access97, vai funcionar.
Só uma observação, o access não segue um sql padrão. se vc migrar para um outro banco de dados pode não funcionar.
coloquei os cochetes e deu esse erro:
run-time erro [ô]3078[ô]
O motor de banco de dados Microsoft Jet não encontrou a tabela ou consulta [SELECT pei1.CODIGO_PRODUTO, MAX(pei1.DATA_ENTRADA) AS DATA_ENTRADA, Max(pei1.CODIGO) AS Codigo FROM Produtos_Entrada_Itens AS pei1 WHERE pei1.DATA_ENTRADA between #[Ô] & Format(Mask1, [Ô]mm/dd/yy[Ô]) & [Ô]# and #[Ô] & Format(Mask2, [Ô]mm/dd/yy[Ô]) & [Ô]# GROUP BY pei1.CODIGO_PRODUTO]. Certifique-se de sua existencia e de que seu nome esteja digitado corretamente.
run-time erro [ô]3078[ô]
O motor de banco de dados Microsoft Jet não encontrou a tabela ou consulta [SELECT pei1.CODIGO_PRODUTO, MAX(pei1.DATA_ENTRADA) AS DATA_ENTRADA, Max(pei1.CODIGO) AS Codigo FROM Produtos_Entrada_Itens AS pei1 WHERE pei1.DATA_ENTRADA between #[Ô] & Format(Mask1, [Ô]mm/dd/yy[Ô]) & [Ô]# and #[Ô] & Format(Mask2, [Ô]mm/dd/yy[Ô]) & [Ô]# GROUP BY pei1.CODIGO_PRODUTO]. Certifique-se de sua existencia e de que seu nome esteja digitado corretamente.
Tópico encerrado , respostas não são mais permitidas