ERRO NO COMANDO
Tenho o comando abaixo porem da o seguinte erro: Referência de objeto não definida para uma instância de um objeto.
o erro é porque em um dos campos , TB_CONTRATO_1.ID_USUARIO, nao existe na dbo.TB_USUARIO retornando null.no campo U.CD_USUARIO AS CD_USUARIO_RESP,...como posso fazer para q nao de o erro ????
Using ctxsisa = New SISAEntities()
Dim resultado = ctxsisa.vw_busca_cliente_banco.SqlQuery([Ô]SELECT DISTINCT(NM_BANCO),NM_PESSOA,AN_CNPJ_CPF,CD_CLIENTE,Contratos_Excluidos,Contratos_Ativos,Contratos_Total,CD_USUARIO_RESP,Expr1 From vw_busca_cliente_banco where nm_pessoa like [ô][Ô] & txtNome.Text & [Ô]%[ô] Order By NM_PESSOA,NM_BANCO[Ô]).ToList()
a view que faz a busca é essa:
CREATE VIEW [dbo].[vw_busca_cliente_banco]
AS
SELECT DISTINCT tb1.CD_CLIENTE,
(SELECT COUNT(FL_EXCLUIDO) AS Expr1
FROM dbo.TB_CONTRATO
WHERE (CD_CLIENTE = tb1.CD_CLIENTE) AND (ID_BANCO = B.ID_BANCO) AND
(FL_EXCLUIDO = [ô]1[ô])) AS Contratos_Excluidos,
(SELECT COUNT(FL_EXCLUIDO) AS Expr1
FROM dbo.TB_CONTRATO AS TB_CONTRATO_3
WHERE (CD_CLIENTE = tb1.CD_CLIENTE) AND (ID_BANCO = B.ID_BANCO)
AND (FL_EXCLUIDO = [ô]0[ô])) AS Contratos_Ativos,
(SELECT COUNT(FL_EXCLUIDO) AS Expr1
FROM dbo.TB_CONTRATO AS TB_CONTRATO_2,dbo.TB_BANCO AS B
WHERE (CD_CLIENTE = tb1.CD_CLIENTE) AND (TB_CONTRATO_2.ID_BANCO = B.ID_BANCO)) AS Contratos_Total, tb1.AN_CNPJ_CPF,
tb1.NM_PESSOA, B.DS_BANCO AS NM_BANCO, U.CD_USUARIO AS CD_USUARIO_RESP,
TB_CONTRATO_1.CD_CLIENTE AS Expr1
FROM dbo.TB_PESSOA AS tb1
INNER JOIN dbo.TB_CONTRATO AS TB_CONTRATO_1 ON tb1.CD_CLIENTE = TB_CONTRATO_1.CD_CLIENTE
INNER JOIN dbo.TB_BANCO AS B ON B.ID_BANCO = TB_CONTRATO_1.ID_BANCO AND tb1.CD_CLIENTE = TB_CONTRATO_1.CD_CLIENTE
LEFT OUTER JOIN dbo.TB_USUARIO AS U ON U.ID_USUARIO = TB_CONTRATO_1.ID_USUARIO
GO
o erro é porque em um dos campos , TB_CONTRATO_1.ID_USUARIO, nao existe na dbo.TB_USUARIO retornando null.no campo U.CD_USUARIO AS CD_USUARIO_RESP,...como posso fazer para q nao de o erro ????
Using ctxsisa = New SISAEntities()
Dim resultado = ctxsisa.vw_busca_cliente_banco.SqlQuery([Ô]SELECT DISTINCT(NM_BANCO),NM_PESSOA,AN_CNPJ_CPF,CD_CLIENTE,Contratos_Excluidos,Contratos_Ativos,Contratos_Total,CD_USUARIO_RESP,Expr1 From vw_busca_cliente_banco where nm_pessoa like [ô][Ô] & txtNome.Text & [Ô]%[ô] Order By NM_PESSOA,NM_BANCO[Ô]).ToList()
a view que faz a busca é essa:
CREATE VIEW [dbo].[vw_busca_cliente_banco]
AS
SELECT DISTINCT tb1.CD_CLIENTE,
(SELECT COUNT(FL_EXCLUIDO) AS Expr1
FROM dbo.TB_CONTRATO
WHERE (CD_CLIENTE = tb1.CD_CLIENTE) AND (ID_BANCO = B.ID_BANCO) AND
(FL_EXCLUIDO = [ô]1[ô])) AS Contratos_Excluidos,
(SELECT COUNT(FL_EXCLUIDO) AS Expr1
FROM dbo.TB_CONTRATO AS TB_CONTRATO_3
WHERE (CD_CLIENTE = tb1.CD_CLIENTE) AND (ID_BANCO = B.ID_BANCO)
AND (FL_EXCLUIDO = [ô]0[ô])) AS Contratos_Ativos,
(SELECT COUNT(FL_EXCLUIDO) AS Expr1
FROM dbo.TB_CONTRATO AS TB_CONTRATO_2,dbo.TB_BANCO AS B
WHERE (CD_CLIENTE = tb1.CD_CLIENTE) AND (TB_CONTRATO_2.ID_BANCO = B.ID_BANCO)) AS Contratos_Total, tb1.AN_CNPJ_CPF,
tb1.NM_PESSOA, B.DS_BANCO AS NM_BANCO, U.CD_USUARIO AS CD_USUARIO_RESP,
TB_CONTRATO_1.CD_CLIENTE AS Expr1
FROM dbo.TB_PESSOA AS tb1
INNER JOIN dbo.TB_CONTRATO AS TB_CONTRATO_1 ON tb1.CD_CLIENTE = TB_CONTRATO_1.CD_CLIENTE
INNER JOIN dbo.TB_BANCO AS B ON B.ID_BANCO = TB_CONTRATO_1.ID_BANCO AND tb1.CD_CLIENTE = TB_CONTRATO_1.CD_CLIENTE
LEFT OUTER JOIN dbo.TB_USUARIO AS U ON U.ID_USUARIO = TB_CONTRATO_1.ID_USUARIO
GO
Amigo, o erro não é o SQL. Referência de objeto não definida, diz respeito à algum objeto não declarado corretamente. Teria que ser algo como:
Dim resultado As Recordset = ctxsisa.vw_busca_cliente_banco.SqlQuery........
na tabela TB_CONTRATO_1 campo ID_USUARIO está com 0 e esse valor não tem na tabela TB_USUARIO , campo ID_USUARIO
se vou na TB_CONTRATO e coloco um valor que existe,funciona o comando....isso que nao estou entendendo....
o que devo colocar nessa parte do comando:??? ja tentei tambem com INNER JOIN e dá o mesmo erro
LEFT OUTER JOIN dbo.TB_USUARIO AS U ON U.ID_USUARIO = TB_CONTRATO_1.ID_USUARIO
se vou na TB_CONTRATO e coloco um valor que existe,funciona o comando....isso que nao estou entendendo....
o que devo colocar nessa parte do comando:??? ja tentei tambem com INNER JOIN e dá o mesmo erro
LEFT OUTER JOIN dbo.TB_USUARIO AS U ON U.ID_USUARIO = TB_CONTRATO_1.ID_USUARIO
é claro que vai dar o mesmo erro. Já te falei qual o problema e não é o comando SQL em si.
Tópico encerrado , respostas não são mais permitidas