PROBLEMA COM COMANDO SQL

 Tópico anterior Próximo tópico Novo tópico

PROBLEMA COM COMANDO SQL

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#435826 - 11/03/2014 11:50:27

DAMASCENO.CESAR
ADAMANTINA
Cadast. em:Fevereiro/2009


Bom dia, estou usando o banco de dados mySQL, conectei normal mas ao realizar a pesquisa com o comando SQL abaixo:
SELECT * FROM [dados pessoais] WHERE [dados pessoais].Matricula = [ô][Ô] & CInt(PMat) & [Ô][ô];[Ô]

dá erro de sintaxe próximo a: [dados pessoais] WHERE [dados pessoais].Matricula =123456
Ache que deve ser porque o nome da tabela tem espaço
Se puderem me ajudar, obrigado.


O conhecimento é como o dinheiro: quanto mais temos, mais queremos ter (Josh Billings)  


#435831 - 11/03/2014 12:37:05

MOUSER
CARAPICUIBA
Cadast. em:Fevereiro/2014


Tente da seguinte forma:[Ô]select * from dados pessoais where Matricula=[Ô] & CInt(Pmat) & [Ô][ô][Ô]

VB.NET + SQL Server = Muita coisa sei, mas muita coisa para aprender.
Curso de Excel e VB6 www.cursoexcelvba.com.br
Blog do Mouser


#435834 - 11/03/2014 12:50:15

DAMASCENO.CESAR
ADAMANTINA
Cadast. em:Fevereiro/2009


já tentei, ele reconhece apenas [Ô]dados[Ô] como sendo a tabela, tentei com Underline também e deu o mesmo erro.

já tentei com aspas simples, sem aspas simples, com ponto e virgula, sem ponto e virgula mas pelo jeito, deve ser no nome da tabela o erro, pois todas as outras tentativas deram o mesmo erro, com excessão na alteração do nome da tabela - Tabela não existe.

O conhecimento é como o dinheiro: quanto mais temos, mais queremos ter (Josh Billings)  


Resposta escolhida #435835 - 11/03/2014 12:54:47

OCELOT
SOROCABA
Cadast. em:Março/2012


Se não me engano o MySQL não permite usar os [ ]  para os identificadores com caracteres que não sejam alfanuméricos, nele se usa o carácter da crase para isso ` `

[Ô]SELECT * FROM `dados pessoais` WHERE `dados pessoais`.Matricula = [ô][Ô] & CInt(PMat) & [Ô][ô];[Ô]



#435838 - 11/03/2014 13:02:25

NILSONTRES
SAO PAULO
Cadast. em:Março/2012


SELECT * FROM dados pessoais WHERE Matricula = [ô][Ô] & CInt(PMat) & [Ô][ô]
Não sei se espaço entre o nome da tabela pode gerar erro, já que eu não crio nome de tabelas com espaços e recomendo isso, mas essa query acima tem que funcionar, fora isso o problema pode não estar nela.




#435840 - 11/03/2014 13:10:01

DAMASCENO.CESAR
ADAMANTINA
Cadast. em:Fevereiro/2009


E eu pensava que deveria ser aspas simples ou colchete para juntar os nomes kkkkkkkkkkkkkk!
quando na realidade deve-se utilizar a crase!!!
Outra coisa, rsrsrs. agora tou com um problema quanto ao nome de um campo, quem criou o BD baseou-se em Access e por isso espaços nos nomes, agora tem um campo que pelo HEIDI aparece como: execução,
como trata-lo?
OBS: Nao tenho acesso pelo console do mySQL para ver corretamente o nome do campo por ele


O conhecimento é como o dinheiro: quanto mais temos, mais queremos ter (Josh Billings)  


#435842 - 11/03/2014 13:31:02

OCELOT
SOROCABA
Cadast. em:Março/2012


Experimenta colocar o nome do campo entre crases também, caso use o nome da tabela tente no tipo `nome da tabela`.`nome do campo`



#435843 - 11/03/2014 13:53:35

DAMASCENO.CESAR
ADAMANTINA
Cadast. em:Fevereiro/2009


Não funcionou, mas é porque não é em comando SQL, tnho que desconectar agora mas amanhã posto o comando que estou usando e o erro


O conhecimento é como o dinheiro: quanto mais temos, mais queremos ter (Josh Billings)  


#435871 - 11/03/2014 20:31:42

OMAR2011
MONTES CLAROS
Cadast. em:Setembro/2011


Cabra,fiz um teste aqui com meu mysql e criei tabela com nome separado e aceitou numa boa.
Mas,o vb não reconheceu dados pessoais separado. Colchetes também não foi aceito pelo mysql.
cmd.CommandText = [Ô]SELECT * FROM dadospessoais WHERE dadospessoais.Matricula = [ô][Ô] & CInt(PMat) & [Ô][ô];[Ô]
Ai sim funcionou.



#435886 - 12/03/2014 08:23:31

DAMASCENO.CESAR
ADAMANTINA
Cadast. em:Fevereiro/2009


Omar, tou desenvolvendo uma aplicação em tres camadas e o problema com o nome do campo nao é no comando SQL, no comando SQL já resolvi o problema de acordo com a dica do OCELOT - usando crase para o nome em separado, no lugar de aspas simples ou colchete - , meu problema com o nome do campo está na seguinte linha:

Dados.Execucao = IIf(IsDBNull(dr([Ô]execução[Ô])), 0, dr([Ô]execução[Ô]))

DADOS está pegando a propriedade de uma classe e recebendo o valor nesta propriedade de um Data Reader.

esta linha funciona com outros campos da tabela sem problema nenhum, mas como o campo execução está com acento e cedilha, o comando não lê este campo, já tentei sem cedilha e sem acento, e nada - Campo não encontrado

tem como resolver isso sem alterar o nome do campo? pois existem outras aplicacoes que utilizam esta tabela



O conhecimento é como o dinheiro: quanto mais temos, mais queremos ter (Josh Billings)  


#435889 - 12/03/2014 09:23:48

NILSONTRES
SAO PAULO
Cadast. em:Março/2012


Última edição em 12/03/2014 09:24:25 por NILSONTRES

Se for o que estou pensando, vc não pode nesse caso ai utilizar iif e sim if else, porque ele atende a primeira case de qualquer jeito.



 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por DAMASCENO.CESAR em 13/03/2014 16:24:24