ERRO DE SINTAX NO SQL

USUARIO.EXCLUIDOS 05/04/2007 16:43:31
#210548
O Vb não está conseguindo rodar uma inserção num banco Access.
O código é esse:
Insert into tbProduto ( NumIndice, Nome, Local, Unidade_Medicao, Quantidade, QuantidadeAlarme, Orgao_fiscal, Num_Ordem, Validade, Marca ) values ( 1, '1', '2', '3', 4, 5, '6', 7, '8/8/2008', '9' )


Detalhes do banco:
NumIndice - Numero, Nome - Texto, Local - Texto, Unidade_Medicao - Texto, Quantidade - Numero, QuantidadeAlarme - Numero, Orgao_fiscal - Texto, Num_Ordem - Numero, Validade - Texto, Marca - Texto

NumIndice é chave primária e nenhum campo apresenta nenhuma particularidade.

O interessante é que se eu coloco essa linha no próprio Access, ela roda. Tentei usar ainda um outro banco e com outros valores e consegui incluir tb. Com esse banco, consigo alterar, excluir e listar normalmente, só não inclui!

Obrigado pela atenção!!!
ZULLIM 05/04/2007 22:08:29
#210563
Dá alguma mensagem de erro?

Pode ser que algum campo seja pequeno para receber alguma dessa informação. A validade, por exemplo.

Como você faz a inserção? é SeuBanco.execute StringAInserir?
STRANDOW 06/04/2007 07:48:52
#210573
UCX2, verifique se dá mensagem de erro...
pq a primeira vista esta tudo ok...

pra tirar duvidas...faça assim...
monte sua query

na hora de mandar exectar...pegue este valor e jogue na consta em sql do access
e mande rodar...se der certo...
reveja sua conexao com o banco de dados...veja os modos de acesso e permissao que vc colocou.
USUARIO.EXCLUIDOS 06/04/2007 09:22:16
#210579
Poste o codigo fonte de como vc está tentando usar o insert, só a
query não adianta para te ajudarmos...
USUARIO.EXCLUIDOS 06/04/2007 15:01:43
#210608
1 - Caso a chave primária seja um autonumerador (como é recomendado), remova esse campo da instrução. Ficará assim:

Insert into tbProduto ( Nome, Local, Unidade_Medicao, Quantidade, QuantidadeAlarme, Orgao_fiscal, Num_Ordem, Validade, Marca ) values ( '1', '2', '3', 4, 5, '6', 7, '8/8/2008', '9' )



2 - Campos do tipo DateTime devem ser gravados no padrão americano, e dependendo do enine de dados, a forma da instrução muda:

Access:
Insert into tbProduto ( Nome, Local, Unidade_Medicao, Quantidade, QuantidadeAlarme, Orgao_fiscal, Num_Ordem, Validade, Marca ) values ( '1', '2', '3', 4, 5, '6', 7, #8/8/2008#, '9' )

SQL Server:
Insert into tbProduto ( Nome, Local, Unidade_Medicao, Quantidade, QuantidadeAlarme, Orgao_fiscal, Num_Ordem, Validade, Marca ) values ( '1', '2', '3', 4, 5, '6', 7, '8/8/2008', '9' )

Oracle:
Insert into tbProduto ( Nome, Local, Unidade_Medicao, Quantidade, QuantidadeAlarme, Orgao_fiscal, Num_Ordem, Validade, Marca ) values ( '1', '2', '3', 4, 5, '6', 7, TO_DATE('DD/MM/YYYY','8/8/2008'), '9' )

3 - Com relação aos demais campos, há vários campos que aparentam ser numéricos, ok? Neste caso, qual a razão de estarem sendo transferidos ao banco como texto?

FFCOUTO 07/04/2007 12:13:03
#210691
Resposta escolhida
a resposta para esse erro é muito simples: o nome de um dos campos possui uma palavra reservada é por isso que não executa a instrução

Insert into tbProduto ( Nome, Local, Unidade_Medicao, Quantidade, QuantidadeAlarme, Orgao_fiscal, Num_Ordem, Validade, Marca ) values ( '1', '2', '3', 4, 5, '6', 7, #8/8/2008#, '9' )


Local --> Palavra reservada

você terá que mudar o nome do campo ou acrescentar colchetes

Insert into tbProduto ( Nome, [Local], Unidade_Medicao, Quantidade, QuantidadeAlarme, Orgao_fiscal, Num_Ordem, Validade, Marca ) values ( '1', '2', '3', 4, 5, '6', 7, #8/8/2008#, '9' )



espero ter ajudado
USUARIO.EXCLUIDOS 08/04/2007 22:09:12
#210757
Desculpa a demora da resposta, pessoal. Estava ausente.
Era isso mesmo, FFCOUTO. Foi só mudar o nome que funcionou.. Muito obrigado mesmo!
Agora, só não entendi o porque de usar os colchetes.. hehe
Valeu pessoal pela ajuda!!
USUARIO.EXCLUIDOS 09/04/2007 13:48:16
#210826
Os colchetes como citado pelo colega ffcouto são apenas para diferir da palavra reservada "local"

local é diferente de [local]

Abraço.
USUARIO.EXCLUIDOS 09/04/2007 13:55:54
#210829
Mas acrescentando os colchetes, eu vou precisar mudar o nome do campo na tabela também?

Quais outras palavras eu não posso usar como nome de campos?

Obrigado.
USUARIO.EXCLUIDOS 09/04/2007 14:04:18
#210831
O nome do campo na tabela não precisa ser alterado não.

os colchetes servem justamente para isso, outro exemplo sao campos com espaços. por ex:

coluna --> qtd dependentes

na construcão de uma sintaxe, você teria de usar assim : [qtd dependentes]

Fui claro ???



USUARIO.EXCLUIDOS 09/04/2007 14:55:59
#210841
Super claro!
Obrigado pela atenção!
[S79]
Tópico encerrado , respostas não são mais permitidas