SELECT ACCESS X SQLSERVER
Olá
O caso é o seguinte:
Tabela - Campo
Tab1 Nome
Tab2 Nome
Ao executar o script de select via Vb6 conectado no Access o recordset me retorna corretamente
txt1.text = .Fields([Ô]Tab1.Nome[Ô])
txt2.text = .Fields([Ô]Tab2.Nome[Ô])
Quando o mesmo comando é executado conectado na base SQLServer, o recordset diz que não encontrou o Ãtem solicitado.
Se eu tentar colocando no field o número do campo ex: .Fields(5) ele funciona no sql mas com o nome igual ao access ele não traz, alguem sabe me dizer se é algum problema de incompatibilidade ou que causa ?
Sei que o ideal seria usar [Ô]Alias[Ô] e não *, mas se no access ele traz, porque não traz no SQL ?
O caso é o seguinte:
Tabela - Campo
Tab1 Nome
Tab2 Nome
Ao executar o script de select via Vb6 conectado no Access o recordset me retorna corretamente
txt1.text = .Fields([Ô]Tab1.Nome[Ô])
txt2.text = .Fields([Ô]Tab2.Nome[Ô])
Quando o mesmo comando é executado conectado na base SQLServer, o recordset diz que não encontrou o Ãtem solicitado.
Se eu tentar colocando no field o número do campo ex: .Fields(5) ele funciona no sql mas com o nome igual ao access ele não traz, alguem sabe me dizer se é algum problema de incompatibilidade ou que causa ?
Sei que o ideal seria usar [Ô]Alias[Ô] e não *, mas se no access ele traz, porque não traz no SQL ?
posta o SQL...tanto em ACCESSS quanto em SQL SERVER.
Citação::
posta o SQL...tanto em ACCESSS quanto em SQL SERVER.
o select é o seguinte tanto para access quanto sqlserver , em access funciona, sql não.
Select Tab1.*,Tab2.* From Tab1 INNER JOIN TAB2 ON TAB1.Codigo = TAB2.Codigo
Marcondes, não uso SQL Server, mas no MySQL se você não colocar no SQL o nome da tabela igualzinho ao criado no banco, dá erro, pela mensagem, pode ser que haja alguma diferença entre os nomes dos campos e o nome da TB e os nomes que você insere aqui { txt1.text = .Fields([Ô]Tab1.Nome[Ô]) }, ou ainda por você colocar junto a TB na hora de por o nome, talvez você precise usar ALIAS para os campos, para poder diferenciá-los.
pra teste, especifique um campo de cada TB e crie um ALIAS para cada, depois puxe pelo ALIAS
pra teste, especifique um campo de cada TB e crie um ALIAS para cada, depois puxe pelo ALIAS
Qual é a descrição do erro no SQL Server ?
Citação::
pra teste, especifique um campo de cada TB e crie um ALIAS para cada, depois puxe pelo ALIAS
O SQL Server ao encontrar 2 nomes de campos iguais ele simplesmente dá um alias para o segundo. Para resolver o problema você deve indicar o campo com seu respectivo alias.
Uma coisa muito importante é você não usar o Tabela.* pois você seleciona todos os campos e isso gera perda de desempenho. Utilize apenas os campos necessários.
No seu caso, faça:
SELECT Tab1.Nome AS nomeTab1, Tab2..Nome AS nomeTab2 FROM Tab1 INNER JOIN Tab2 ON Tab1.Codigo = Tab2.Codigo;
txt1.text = .Fields([Ô]nomeTab1[Ô])
txt2.text = .Fields([Ô]nomeTab2[Ô])
Faça seu login para responder