SUBCONSULTA PROBLEMATICA
Nessa subconsulta esta dando a msg de erro para o item em negrito abaixo.
(O item não pode ser encontrado na coleção correspondente ao nome ou ao ordinal solicitado)
onde estou errando?????
mSql = [Ô] SELECT Entrada.*, (SELECT Comissao.Controle FROM Comissao WHERE val(Entrada.Id) = val(Comissao.Controle)) [Ô] + _
[Ô] FROM Entrada [Ô] + _
[Ô] ORDER BY Entrada.Status;[Ô]
With RdsGeral
.CursorLocation = adUseClient
.Open mSql, ConexaoContrato, adOpenDynamic, adLockOptimistic
Do While Not .EOF
Items !Contrato, Format(!Valor, [Ô]#,##0.00[Ô]), !CLIENTE, !PComissao, !Status, !ID, ![txt-color=#e80000]Controle[/txt-color]
.MoveNext
If Err.Number <> 0 Then Exit Do
Loop
.Close
Set RdsGeral = Nothing
End With
(O item não pode ser encontrado na coleção correspondente ao nome ou ao ordinal solicitado)
onde estou errando?????
mSql = [Ô] SELECT Entrada.*, (SELECT Comissao.Controle FROM Comissao WHERE val(Entrada.Id) = val(Comissao.Controle)) [Ô] + _
[Ô] FROM Entrada [Ô] + _
[Ô] ORDER BY Entrada.Status;[Ô]
With RdsGeral
.CursorLocation = adUseClient
.Open mSql, ConexaoContrato, adOpenDynamic, adLockOptimistic
Do While Not .EOF
Items !Contrato, Format(!Valor, [Ô]#,##0.00[Ô]), !CLIENTE, !PComissao, !Status, !ID, ![txt-color=#e80000]Controle[/txt-color]
.MoveNext
If Err.Number <> 0 Then Exit Do
Loop
.Close
Set RdsGeral = Nothing
End With
Tente isto:
mSql = [Ô] SELECT Entrada.*, (SELECT Comissao.Controle FROM Comissao WHERE val(Entrada.Id) = val(Comissao.Controle)) as Controle [Ô] + _
[Ô] FROM Entrada [Ô] + _
[Ô] ORDER BY Entrada.Status;[Ô]
LLAIA, com a sua sugestão deu esse erro:
(no maximo um registro pode ser retornado por esta subconsulta)
Que coisa!!!!
(no maximo um registro pode ser retornado por esta subconsulta)
Que coisa!!!!
O prblema é o seguinte:
eu quero carregar todos os campos da tabela Entrada e tambem carregar o campo Controle da tabela comissao, independente se existe na tabela Entrada.
eu quero carregar todos os campos da tabela Entrada e tambem carregar o campo Controle da tabela comissao, independente se existe na tabela Entrada.
Tente isto:
mSql = [Ô] SELECT Entrada.*, Comissao.Controle [Ô] + _
[Ô] FROM Entrada right join Comissao ON Entrada.Id = Comissao.Controle [Ô] + _
[Ô] ORDER BY Entrada.Status;[Ô]
quase deu certo!! Carregou normalmente, porem na tabela Entrada existe um ID que não tem na tabela Comissao, esse tambaem deveria ter carregado independente da inexistencia. Mudei a sql conforme abaixo:
mSql = [Ô] SELECT Entrada.Contrato,Entrada.Id,Entrada.Valor,Entrada.PComissao,Entrada.Cliente,Entrada.Status, Comissao.Controle [Ô] + _
[Ô] FROM Entrada RIGHT JOIN Comissao ON Entrada.Id = val(Comissao.Controle) [Ô] + _
[Ô] GROUP BY Entrada.Contrato,Entrada.Id,Entrada.Valor,Entrada.PComissao,Entrada.Cliente,Entrada.Status,Comissao.Controle ORDER BY Entrada.Contrato;[Ô]
o que pode ser feito?
mSql = [Ô] SELECT Entrada.Contrato,Entrada.Id,Entrada.Valor,Entrada.PComissao,Entrada.Cliente,Entrada.Status, Comissao.Controle [Ô] + _
[Ô] FROM Entrada RIGHT JOIN Comissao ON Entrada.Id = val(Comissao.Controle) [Ô] + _
[Ô] GROUP BY Entrada.Contrato,Entrada.Id,Entrada.Valor,Entrada.PComissao,Entrada.Cliente,Entrada.Status,Comissao.Controle ORDER BY Entrada.Contrato;[Ô]
o que pode ser feito?
Tente o FULL OUTER JOIN:
mSql = [Ô] SELECT Entrada.Contrato,Entrada.Id,Entrada.Valor,Entrada.PComissao,Entrada.Cliente,Entrada.Status, Comissao.Controle [Ô] + _
[Ô] FROM Entrada FULL OUTER JOIN Comissao ON Entrada.Id = val(Comissao.Controle) [Ô] + _
[Ô] GROUP BY Entrada.Contrato,Entrada.Id,Entrada.Valor,Entrada.PComissao,Entrada.Cliente,Entrada.Status,Comissao.Controle ORDER BY Entrada.Contrato;[Ô]
Dá uma lida nisso cara: http://office.microsoft.com/en-us/access-help/creating-an-outer-join-query-in-access-HA001034555.aspx
Do jeito que esse banco tá, de repente vc vai precisar saber mais.
mSql = [Ô] SELECT Entrada.Contrato,Entrada.Id,Entrada.Valor,Entrada.PComissao,Entrada.Cliente,Entrada.Status, Comissao.Controle [Ô] + _
[Ô] FROM Entrada FULL OUTER JOIN Comissao ON Entrada.Id = val(Comissao.Controle) [Ô] + _
[Ô] GROUP BY Entrada.Contrato,Entrada.Id,Entrada.Valor,Entrada.PComissao,Entrada.Cliente,Entrada.Status,Comissao.Controle ORDER BY Entrada.Contrato;[Ô]
Dá uma lida nisso cara: http://office.microsoft.com/en-us/access-help/creating-an-outer-join-query-in-access-HA001034555.aspx
Do jeito que esse banco tá, de repente vc vai precisar saber mais.
Resolvido assim:
mSql = [Ô] SELECT Entrada.Contrato,Entrada.Id,Entrada.Valor,Entrada.PComissao,Entrada.Cliente,Entrada.Status, Comissao.Controle [Ô] + _
[Ô] FROM Entrada LEFT JOIN Comissao ON Entrada.Id = val(Comissao.Controle) [Ô] + _
[Ô] WHERE Entrada.Status = [ô]Aberto[ô] GROUP BY Entrada.Contrato,Entrada.Id,Entrada.Valor,Entrada.PComissao,Entrada.Cliente,Entrada.Status,Comissao.Controle ORDER BY Entrada.Contrato;[Ô]
Valeu LLAIA!!!!!
mSql = [Ô] SELECT Entrada.Contrato,Entrada.Id,Entrada.Valor,Entrada.PComissao,Entrada.Cliente,Entrada.Status, Comissao.Controle [Ô] + _
[Ô] FROM Entrada LEFT JOIN Comissao ON Entrada.Id = val(Comissao.Controle) [Ô] + _
[Ô] WHERE Entrada.Status = [ô]Aberto[ô] GROUP BY Entrada.Contrato,Entrada.Id,Entrada.Valor,Entrada.PComissao,Entrada.Cliente,Entrada.Status,Comissao.Controle ORDER BY Entrada.Contrato;[Ô]
Valeu LLAIA!!!!!
Tópico encerrado , respostas não são mais permitidas