Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fabinhosantos

erro com campo data no INSERT

Recommended Posts

Pessoal estou tentando gravar em um banco de dados SQL SERVER 2005 onde meu campo data é do tipo DATATIME, mas não estou conseguindo ja tentei de varias formas:

 

1)

v_data = date()

sql = "INSERT INTO tabela (descricao, categoria , data) VALUES ('" & v_descricao & "', '" & v_categoria & "', '#"& v_data &"#')"

Set rs = conn.Execute(sql)

 

ERRO: Conversion failed when converting datetime from character string

 

 

2)

v_data = date()

sql = "INSERT INTO tabela (descricao, categoria , data) VALUES ('" & v_descricao & "', '" & v_categoria & "', 'v_data')"

Set rs = conn.Execute(sql)

 

ERRO: Conversion failed when converting datetime from character string

 

3)

 

v_data = date()

sql = "INSERT INTO tabela (descricao, categoria , data) VALUES ('" & v_descricao & "', '" & v_categoria & "', '" & v_data & "')"

Set rs = conn.Execute(sql)

 

ERRO: The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

 

4)

 

v_data = date()
sql = "INSERT INTO tabela (descricao, categoria , data) VALUES ('" & v_descricao & "', '" & v_categoria & "', v_data)"
Set rs = conn.Execute(sql)
ERRO: The name "v_data" is not permitted in this context. Valid expressions are constants, constant expressions, and (in some contexts) variables. Column names are not permitted.

 

 

agora o curioso é que se eu usar assim:

 

v_data = date()
rs.AddNew
rs.Fields("descricao") = v_descricao
rs.Fields("categoria") = v_categoria
rs.Fields("data") = v_data
rs.Update
só que eu preciso usar com conn.execute pq quero usar uma funcao para recuperar o identify:

 

ex:

sql = "INSERT INTO tabela (campo1, campo2) VALUES ('',''); SELECT
@@IDENTITY as idult"

Alguem sabe o motivo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A opção 3 está correta, exceto por não tratar a data. Se não me engano a data deve ser dd-mm-yyyy

 

Tem um tópico recente sobre o assunto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

agora o curioso é que se eu usar assim:

 

v_data = date()

rs.AddNew

rs.Fields("descricao") = v_descricao

rs.Fields("categoria") = v_categoria

rs.Fields("data") = v_data

rs.Update

 

só que eu preciso usar com conn.execute pq quero usar uma funcao para recuperar o identify:

 

sql = "INSERT INTO tabela (campo1, campo2) VALUES ('',''); SELECT

@@IDENTITY as idult"

 

 

Pessoal estou tentando gravar em um banco de dados SQL SERVER 2005 onde meu campo data é do tipo DATATIME, mas não estou conseguindo ja tentei de varias formas:

 

1)

v_data = date()

sql = "INSERT INTO tabela (descricao, categoria , data) VALUES ('" & v_descricao & "', '" & v_categoria & "', '#"& v_data &"#')"

Set rs = conn.Execute(sql)

 

ERRO: Conversion failed when converting datetime from character string

 

 

2)

v_data = date()

sql = "INSERT INTO tabela (descricao, categoria , data) VALUES ('" & v_descricao & "', '" & v_categoria & "', 'v_data')"

Set rs = conn.Execute(sql)

 

ERRO: Conversion failed when converting datetime from character string

 

3)

 

v_data = date()

sql = "INSERT INTO tabela (descricao, categoria , data) VALUES ('" & v_descricao & "', '" & v_categoria & "', '" & v_data & "')"

Set rs = conn.Execute(sql)

 

ERRO: The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

 

4)

 

v_data = date()

sql = "INSERT INTO tabela (descricao, categoria , data) VALUES ('" & v_descricao & "', '" & v_categoria & "', v_data)"

Set rs = conn.Execute(sql)

 

ERRO: The name "v_data" is not permitted in this context. Valid expressions are constants, constant expressions, and (in some contexts) variables. Column names are not permitted.

 

 

Alguem sabe o motivo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que nesse caso vai depender da sua aplicação.

 

você tem que ver o formato do seu banco e o formato da data que está tentando enviar para ele.

 

 

mas como o hargon disse a 3ª opção está correta

 

ERRO: The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value

 

Esse erro significa que você ultrapassou o limite do campo data , ou seja, acho que o valor que esta passando de data está incompatível para o banco ok.

 

 

Tenta dar um response.write aí na variavel aí do sql vai no query analyzer e tenta rodar lá, vai testando os formatos de datas.

 

Valew

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes de tudo você tem que ver como seu banco de dados está configurado para data, dependente de como estiver você pode usar o CONVERT(CHAR(8), CAMPO, 112) por exemplo, que converte a data para YYYYMMDD 00:00:00000.

 

Existem vários formatos para esta questão, 112 é este padrão, mas existem vários outros

 

Abraços

 

Jorge

blog.probuilding.com.br

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.