Ir para conteúdo

POWERED BY:

Arquivado

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

Claudio Neto

AddNew não funciona

Recommended Posts

Estou migrando um banco de dados do SQL Server para MySQL e estou fazendo as alterações necessárias na aplicação.

 

Um ponto que estou tendo problema é para realizar um addnew. Meu código está assim:

 

	set rs = createobject("adodb.recordset")
	sql = "select * from acoes"
	rs.open sql, cn, 3, 3
	response.write rs("IDAcao")
	rs.AddNew
	rs("CodCliente") = cod_cli
	rs("IDAcao") = id_acao
	rs("StatusAcao") = 0
	rs("DataInicio") = data_inicio
	rs("DataFim") = data_fim
	rs("tabela") = ""
	rs("aplicacao") = cod_apl
	rs("IntervaloOcupados") = intervalo_o
	rs("IntervaloNaoAtende") = intervalo_na
	rs("MaxTentativas") = max_tent
	rs("HoraInicio") = hora_inicio
	rs("HoraFim") = hora_fim
	rs("Prioridade") = prioridade
	rs("QtdAtendimentos") = max_atend
	rs.Update
	rs.MoveLast
	session("codAcao") = rs("registroId")

Não me dá nenhum erro, simplesmente não insere no banco. No SQL Server funcionava.

Não estão ai todos os atributos de minha tabela, pode ser esse o motivo? Se for, o que deve fazer, passar valor null nos campos que não quero preencher?

 

Obrigado desde já...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Repare que a última linha do código está pegando o registroID que acabou de ser gerado, por isso usei o addnew.

 

Não sabia que você programava em ASP Desisto...

 

Mas no link que passou não tem nada de diferente do que fiz, só tirando que o código é para VB, não para ASP.

Só o que tentei fazer é trocar rs("algumacoisa") por rs!algumacoisa, mas o ASP não aceita esse formato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, enquanto não consigo achar a solução para o addnew, tentei usando o insert.

 

Mas estou com um erro de sintax, e como o MySQL é muito legal e não mostra o erro fica difícil achar o motivo.

 

A query ficou assim:

sql = "insert into acoes (CodCliente, IDAcao, StatusAcao, DataInicio, DataFim, Tabela, Aplicacao, IntervaloOcupados, "
sql = sql & "IntervaloNaoAtende, MaxTentativas, HoraInicio, HoraFim, Prioridade, QtdAtendimentos) "
sql = sql & "values ('"&cod_cli&"','"&id_acao&"',0,'"&FormataData(data_inicio)&"','"&FormataData(data_fim)&"','','"&cod_apl&"', "
sql = sql & intervalo_o&","&intervalo_na&","&max_tent&",'"&FormataData(hora_inicio)&"','"&FormataData(hora_fim)&"',"&prioridade&","&max_atend&")"

O único atributo que tenho a mais fora os que estão sendo passados é RegistroID, que é auto_increment.

O que está errado ai?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

programo em asp sim :) ou pelo menos tento hehehheh

 

olha, botei seu cod pra rodar aqui e funcionou, transformei os valores pra 0 so pra testar

 

tudo foi gravado sem problema

 

 

 

 

normalmente o erro é mostrado

 

acho que você vai ter que ir por eliminação, tente gravar sem essas funções de formataData pra ver onde esta o erro - acho que pode ser um erro no tipo de campo ou estouro

 

 

 

 

vou postar o que fiz so pra você ver se ajuda

 


Conecta()
            cod_cli = 0
            id_acao = 0
            FormataData_1 = 0
            FormataData_2 = 0
            cod_apl = 0
            intervalo_o = 0
            intervalo_na = 0
            max_tent = 0
            FormataData_3 = 0
            FormataData_4 = 0
            prioridade = 0
            max_atend = 0
 sql = "insert into tbl_teste ("&_
            "CodCliente, "&_
            "IDAcao, "&_
            "StatusAcao, "&_
            "DataInicio, "&_
            "DataFim, "&_
            "Tabela, "&_
            "Aplicacao, "&_
            "IntervaloOcupados, "&_
            "IntervaloNaoAtende, "&_
            "MaxTentativas, "&_
            "HoraInicio, "&_
            "HoraFim, "&_
            "Prioridade, "&_
            "QtdAtendimentos"&_
    ")values("&_
            ""&cod_cli&", "&_
            ""&id_acao&", "&_
            "0, "&_
            ""&FormataData_1&", "&_
            ""&FormataData_2&", "&_
            "0, "&_
            ""&cod_apl&", "&_
            intervalo_o&", "&_
            ""&intervalo_na&", "&_
            ""&max_tent&", "&_
            ""&FormataData_3&", "&_
            ""&FormataData_4&", "&_
            ""&prioridade&", "&_
            ""&max_atend&""&_
    ")"
    Set sql = Conn.Execute(sql)
    Set sql = Nothing
BDescon()

 

 

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora apareceu o erro. É tipos incompatíveis. Suspeito que no campo tipo data. Sabe me dizer qual formato de data deve ser passado no mysql?

 

O resultado do meu insert está assim:

INSERT INTO acoes (CodCliente, IDAcao, StatusAcao, DataInicio, DataFim, Tabela, Aplicacao, IntervaloOcupados, IntervaloNaoAtende, MaxTentativas, HoraInicio, HoraFim, Prioridade, QtdAtendimentos) Values ('589','neto2',0,'2010-4-8 00:00:00','2010-4-8 00:00:00',NULL,' MARIA INES - RIBEIRAO', 300,300,50,'1900-1-1 09:00:00','1900-1-1 21:00:00',0,0) 

E a estrutra assim:

CREATE TABLE `acoes` (
  `RegistroID` int(11) NOT NULL AUTO_INCREMENT,
  `CodCliente` varchar(50) DEFAULT NULL,
  `IDAcao` varchar(50) DEFAULT NULL,
  `StatusAcao` int(11) DEFAULT NULL,
  `DataInicio` datetime DEFAULT NULL,
  `DataFim` datetime DEFAULT NULL,
  `Tabela` varchar(250) DEFAULT NULL,
  `Aplicacao` varchar(255) DEFAULT NULL,
  `IntervaloOcupados` int(11) DEFAULT NULL,
  `IntervaloNaoAtende` int(11) DEFAULT NULL,
  `MaxTentativas` int(11) DEFAULT NULL,
  `HoraInicio` datetime DEFAULT NULL,
  `HoraFim` datetime DEFAULT NULL,
  `Prioridade` int(11) DEFAULT NULL,
  `QtdAtendimentos` int(11) DEFAULT NULL,
  PRIMARY KEY (`RegistroID`)
) ENGINE=MyISAM AUTO_INCREMENT=611 DEFAULT CHARSET=latin1;

Posso estar errado, mas acredito eu que isso não muda de SGBD pra SGBD, os campos alfa passar entre '' e os numéricos não né.

 

 

 

Nem precisa resposder, coloquei tudo entre '' para testar e foi.

No MySQL, independente do tipo de dados, sempre devo passar entre '' então?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Desisto, até onde sei, realmente numéricos não precisam de ''. Pelo menos sempre foi assim com outros SGBD's que trabalhei.

 

Mas só consegui fazer dar certo em MySQL colocando os campos numéricos entre ''.

 

Vou deixar assim mesmo, realizando o insert via query de insert mesmo e depois realizo um select com limit 1 para pegar o valor de registroid que acabei de inserir.

 

Podem dar com resolvido por favor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

acnslho , ao invés de usar o AddNew do obj recordset, usar a instrução SQL INSERT

 

existem alguns ótimos exmplosdá um response.write na string SQL, para ver o k esta sendo passado

response.write(SQL)
response.end()

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.