INNER JOIN

CAIO.FR.SP 09/07/2011 13:09:37
#378855
GALERA ME AJUDEM A ENCONTRAR O ERRO NESTA CONSULTA:

            StrSQL = [Ô]SELECT alunos.alunom,mensalidades.mencod,mensalidades.menval,mensalidades.menven,mensalidades.menpag,modalidades.modnom [Ô] & _
[Ô]FROM ((mensalidades [Ô] & _
[Ô]INNER JOIN alunos ON mensalidades.alucod = alunos.alucod) [Ô] & _
[Ô]INNER JOIN modalidades ON mensalidades.modcod = modalidades.modcod) [Ô] & _
[Ô]WHERE alunos.alucod = [Ô] & Int(txtAluno.Text) & _
[Ô]ORDER BY mensalidades.menven;[Ô]


OBS.: se eu usar apenas o 1º inner join ele funciona.
ROBIU 09/07/2011 16:53:47
#378864
Que erro está ocorrendo? O campo alucod é numérico?
Citação:


[Ô]WHERE alunos.alucod = [Ô] & Int(txtAluno.Text) & _
[Ô]ORDER BY mensalidades.menven;[Ô]



[Ô]WHERE alunos.alucod = [Ô] & Int(10) & [Ô] [Ô] & _
[Ô]ORDER BY mensalidades.menven;[Ô]


ou dá um espaço antes do ORDER BY

 [Ô] ORDER BY mensalidades.menven;[Ô]
CAIO.FR.SP 09/07/2011 17:12:12
#378866
Robiu, o Erro é [Ô]Nenhum valor foi fornecido para um ou mais parametros necessarios[Ô]
Obs.: alucod e modcod sao numericos, existe algum problema usar comparações diferentes no inner join? tipo uma eu to comparando com alucod e a outra com modcod, todos os dois campos estao presentes na tabela mensalidades.

a consulta feita é a seguinte:

SELECT
alunos.alunom,mensalidades.mencod,mensalidades.menval,mensalidades.menven,mensalidades.menpag,modalidades.modnom
FROM
((mensalidades INNER JOIN alunos ON mensalidades.alucod = alunos.alucod) INNER JOIN modalidades ON mensalidades.modcod = modalidades.modcod)
WHERE alunos.alunom LIKE [ô]%C%[ô]
ORDER BY mensalidades.menven,alunos.alunom;
DRSDAVI 09/07/2011 18:09:29
#378868
Resposta escolhida
Cara recriei o banco e testei a sua consulta, diretamente no sql server ela esta funcionando.
Voçe verificou se ela esta enviando o valor do textbox como um inteiro,

Faça um Debug no codigo vb e verifique como esta o sql. Talves não esteja passando o valor. Tambem nao entendi esta linha [Ô]WHERE alunos.alunom LIKE [ô]%C%[ô] [Ô] pois voce esta convertendo o valor do text em um inteiro.
CAIO.FR.SP 09/07/2011 18:23:59
#378870
DRSDAVI, realizei o debug e nao encontrei o problema, nao estou convertendo o text em inteiro nao, é que tenho a opção de fazer a consulta por nome ou por codigo, as duas dao o mesmo erro, essa ultima que passei é consulta por nome, a primeira era por codigo.
DRSDAVI 09/07/2011 18:28:39
#378871
Fazendo a consulta diretamente no sql ela funciona.
CAIO.FR.SP 09/07/2011 18:35:07
#378872
DRSDAVI eu impotei o banco de dados para o SQL SERVER e ultilizei a seguinte consulta:

SELECT alunos.alunom,mensalidades.mencod,mensalidades.menval,mensalidades.menven,mensalidades.menpag,modalidades.modcod,modalidades.modnom FROM ((mensalidades INNER JOIN alunos ON mensalidades.alucod = alunos.alucod) INNER JOIN modalidades ON mensalidades.modcod = modalidades.modcod) WHERE alunos.alucod = 1 ORDER BY mensalidades.menven

ele me retornou o seguinte erro:
Server: Msg 207, Level 16, State 3, Line 1
Invalid column name [ô]modcod[ô].
DRSDAVI 11/07/2011 03:21:40
#378894
Desculpe-me mas tive que sair as pressas, caso nao tenha resolvido o problema tente fazer a consulta utilizando o codigo abaixo (com as devidas alteraçoes):

Public Function Localizar(ByVal campo As String) As Boolean

If IsNumeric(campo) Then
sql = [Ô]select * from TabPlano where codpla =[Ô] & campo
Else
sql = [Ô]select * from TabPlano where nompla =[ô][Ô] & campo & [Ô][ô][Ô]
End If
Dim objda As New OleDb.OleDbDataAdapter(sql, banco.objcon)
objds.Tables.Clear()
objda.Fill(objds)
If objds.Tables(0).Rows.Count > 0 Then
dtrw = objds.Tables(0).Rows(0)
MostrarDadosClasse()
Return True
End If
End Function
Tópico encerrado , respostas não são mais permitidas