PROBLEMA COM COMANDO SQL
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.
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.
Tente da seguinte forma:[Ô]select * from dados pessoais where Matricula=[Ô] & CInt(Pmat) & [Ô][ô][Ô]
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.
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.
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) & [Ô][ô];[Ô]
[Ô]SELECT * FROM 'dados pessoais' WHERE 'dados pessoais'.Matricula = [ô][Ô] & CInt(PMat) & [Ô][ô];[Ô]
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.
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.
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
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
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'
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
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.
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.
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
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
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 encerrado , respostas não são mais permitidas