Ir para conteúdo

POWERED BY:

Arquivado

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

Everton Viana

ASP+MySQL (Porque?)

Recommended Posts

Galera, esse é meu primeiro Post aqui, já busquei em varios foruns que sou cadastrado, porem não consigo entender umas coisas no MYSQL e ASP, então segue minha duvida:

 

Administro uma aplicação que recentemente teve seu BD migrado para Mysql, em todas as paginas da aplicação que fazem uma inserção, as faço da seguinte maneira:

 

 'Conexão MYSQL - Cadastro de Propostas
Set Conex = Server.CreateObject("ADODB.Connection")
Conex.ConnectionString = "DSN=contratos"
Conex.Open

'Salva no Banco de Dados
sql = "select * from contratos"
Set salva = Server.CreateObject("ADODB.Recordset")
salva.open sql, conex, 3,3

salva.AddNew
salva(campo) = campo
salva.update

 

Porem somente em um dos 10 modulos que a aplicação contem, esse metodo de inserção esta apresentando problemas, então foi-me sugerido realizar a inserção no metodo INSERT INTO, realizando tal metodo estou recebendo o seguinte erro:

 

[MySQL][ODBC 5.1 Driver][mysqld-5.1.51-community]Incorrect decimal value: '15,00' for column 'custo_equipamento' at row 1

 

OU

 

Um erro informando que o formato da data em incompativel.

 

Eu já li em varios lugares sobre as diferenças que o Mysql tem, sobre datas no formato yyyy-mm-dd, sobre numeros com "." em vez de "," e entendo isso, o que não consigo entender é o porque que em todas as outras inserções ao BD funcionam da maneira tradicional ADDNEW e UPDATE e somente nesse modulo não...Inclusive, dessa maneira não preciso tratar os dados, como data ao contrario e a pontuação dos valores decimais, basicamente não precisei fazer alteração quase nenhuma, porem dessa maneira INSERT INTO, terei de tratar muita coisa, para que funcione, respeitando essas particularidades do MYSQL.

 

Poderiam ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Note que o erro já está informando a causa, usa um replace nesse campo e substitui a virgula por ponto, assim não tera esse erro.

E se precisar, faz o mesmo processo quando for exibir a informação para o usuário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Vinicius, então como eu havia escrito, entendo o erro. Leia novamente o Post que você vai entender o que eu quero saber!

 

Queria na verdade saber porque as vezes funciona com o procedimento Addnew e Update e somente nessa inserção não funciona...

 

Até mesmo porque, se eu tiver que fazer tudo via INSERT INTO, vou ter que alterar muita coisa, dando Replace e etc, tenho mais de 2000 arquivos e muitos fazem inserção!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Add New voce faz uma consulta no banco ... e atribui um valor

ele faz um update no campo ...

se nao existir aquele registro ele add um novo .. o ideal é voce usar add new somente nos casos de update com insert...

mas se voce quiser usa-lo mesmo para adicionar ... começa mudando seu codigo ..

sem os cursores da uns erros mesmo

' isso para insert
strcon = "sua conexao mysql"
   Set objRS= Server.CreateObject("ADODB.Recordset")
   objRS.CursorLocation = 3
   objRS.CursorType = 0
   objRS.LockType = 3
   strQ = "SELECT * FROM tabela Where 1 <> 1"
   objRS.Open strQ, strcon
   objRS.Addnew()

    objRS("campo") = conteudo

   objRS.Update

' isso para update
   strcon = "sua conexao mysql"
   Set objRS= Server.CreateObject("ADODB.Recordset")
   objRS.CursorLocation = 3
   objRS.CursorType = 0
   objRS.LockType = 3
   strQ = "SELECT * FROM tabela Where campo="seu filtro""
   objRS.Open strQ, strcon
   objRS.Addnew()

    objRS("campo") = conteudo

 'on error nao necessario
 On Error Resume Next
 objRS.UpdateBatch

mais advirto que o correto nesse caso é o insert pois o metodo addnew é usado em casos em que nao pode se incluir 2 registros iguais

Compartilhar este post


Link para o post
Compartilhar em outros sites

Queria Agradecer a todos que ajudaram, mas ainda não entra na minha cabeça o porque consigo salvar as vezes dados que não são no formato do MySql como data no padrão 10/10/2010 e Valores: 50,00 e somente em uma pagina não consigo. Fico recebendo erros genericos, ou erro que me informam que o padrão é incorreto...

 

Fiz um teste, criei um BD em Access, alterei a DSN para usar o Driver MDB, criei os campos identicos aos do Mysql. Consegui salvar tudo certinho, fiz na verdade esse teste pra ter certyeza que não existe problema algum com componentes do IIS ou do Windows 2008 Server X64 sem acesso, sem permissão essas coisas.

 

Sei que to parecendo um chatão, mas me incomoda muito trabalhar com algo que não sei motivo, ou o que pode acontecer na frente...Como disse é uma palicação muito grande, fico receoso!

 

Me ajuda ae galera!

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.