ALTERAR CONSULTA ACCESS VIA ADO

MAICONCARDOSO 21/07/2005 15:09:01
#95391
Saudações ,

Bom pessoal, estou usando um código que peguei aqui no fórum pra alterar uma consulta do access, acontece que não está funcionando. Erro 3251: Object or provider is not capable of perfoming requested operation.

Agradeço as ajudas!!

    Dim cn As ADODB.Connection
Dim adCat As ADOX.Catalog
Dim adCmd As ADODB.Command

Set cn = New ADODB.Connection
cn.Open "DSN=SBC;", , "sbc2004"

Set adCat = New ADOX.Catalog
Set adCat.ActiveConnection = cn

Set adCmd = New ADODB.Command
adCmd.CommandText = "SELECT PCFDetalhes.CódigoDoProduto, Sum(PCFDetalhes.Quantidade) AS SomaDeQuantidade " & _
"FROM PCF INNER JOIN PCFDetalhes ON PCF.CodPCF = PCFDetalhes.CodPCF " & _
"WHERE (((PCF.Data) >= #" & Format(dtpData1, "MM/DD/YYYY") & "# And (PCF.Data) <= #" & Format(dtpData2, "MM/DD/YYYY") & "# )) " & _
"GROUP BY PCFDetalhes.CódigoDoProduto " & _
"HAVING (((PCFDetalhes.CódigoDoProduto)=1));"

adCat.Views("VendaP13").Command = adCmd.CommandText
USUARIO.EXCLUIDOS 23/07/2005 14:52:39
#95739
Resposta escolhida
Para criar uma consulta no Access (ou VIEW - expressão utilizada em outros bancos) via ADO utilize o método Execute da classe Connection no objeto ADODB:

dim cn As ADODB.Connection
Set cn = New ADODB.Connection
cn.Open "DSN=SBC;", , "sbc2004"

cnn.Execute "CREATE VIEW VendaP13 AS SELECT PCFDetalhes.CódigoDoProduto, Sum(PCFDetalhes.Quantidade) AS SomaDeQuantidade " & _
"FROM PCF INNER JOIN PCFDetalhes ON PCF.CodPCF = PCFDetalhes.CodPCF " & _
"WHERE (((PCF.Data) >= #" & Format(dtpData1, "MM/DD/YYYY") & "# And (PCF.Data) <= #" & Format(dtpData2, "MM/DD/YYYY") & "# )) " & _
"GROUP BY PCFDetalhes.CódigoDoProduto " & _
"HAVING (((PCFDetalhes.CódigoDoProduto)=1)), , adCmdText
MAICONCARDOSO 23/07/2005 16:50:12
#95751
Estamos quase lá José!! A tua dica funcionou, mas digamos que a view a ser criada já exista e apenas gostaria de modifica-la? ou entao exluir e criar novamente, como podemos fazer?

Abraço,


[S23]
USUARIO.EXCLUIDOS 23/07/2005 16:58:37
#95753
Não creio que o Access reconheça ALTER VIEW, sendo assim, utilize a sequência DROP e CREATE.

   dim cn As ADODB.Connection
Set cn = New ADODB.Connection
cn.Open "DSN=SBC;", , "sbc2004"

cnn.Execute "DROP VIEW VendaP13", , adCmdText
cnn.Execute "CREATE VIEW VendaP13 AS SELECT PCFDetalhes.CódigoDoProduto, Sum(PCFDetalhes.Quantidade) AS SomaDeQuantidade " & _
"FROM PCF INNER JOIN PCFDetalhes ON PCF.CodPCF = PCFDetalhes.CodPCF " & _
"WHERE (((PCF.Data) >= #" & Format(dtpData1, "MM/DD/YYYY") & "# And (PCF.Data) <= #" & Format(dtpData2, "MM/DD/YYYY") & "# )) " & _
"GROUP BY PCFDetalhes.CódigoDoProduto " & _
"HAVING (((PCFDetalhes.CódigoDoProduto)=1)), , adCmdText
MAICONCARDOSO 23/07/2005 17:04:55
#95754
Beleza José!! Funcionou bonitasso!!

Valeu a força, bom fim de semana!!

[S42][S42][S42]
Tópico encerrado , respostas não são mais permitidas