SELECT ACCESS X SQLSERVER

MARCONDES 10/06/2015 14:38:00
#447590
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 ?

F001E 10/06/2015 17:53:19
#447596
posta o SQL...tanto em ACCESSS quanto em SQL SERVER.
MARCONDES 11/06/2015 09:06:21
#447609
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
DAMASCENO.CESAR 11/06/2015 16:23:12
#447632
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
F001E 11/06/2015 17:17:07
#447634
Qual é a descrição do erro no SQL Server ?
FFCOUTO 11/06/2015 19:20:47
#447638
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