PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV Mobile 2024 → SQLExec Update
SQLExec Update
Iniciado por Aaron Carballo, out., 15 2015 4:53 PM - 2 respostas
Publicado em outubro, 15 2015 - 4:53 PM
I'm connected via web service to a sql database my connection seems to be ok the problem is at the time to execute an update. I have a looper that shows the database and I try to update when I touch a button, this is the code that I'm trying to use

SQLExec("UPDATE PUESTOS SET NOMBRE ="+ EDT_Nombre +" APELLIDO ="+ EDT_Apellido +" PUESTO ="+ EDT_Puesto +" WHERE ID = "+ STC_ID,"QRY1")
Membro registado
123 mensagems
Popularité : +46 (46 votes)
Publicado em outubro, 15 2015 - 9:02 PM
Tu sentencia SQL esta mal, por lo que veo estas intentando actualizar Campos de tipo String/Varchar entonces debes proteger con Comilla simples los valores, tu codigo deberia estar algo como esto.

SQLExec("UPDATE PUESTOS SET NOMBRE ='"+ EDT_Nombre +"' APELLIDO ='"+ EDT_Apellido +"' PUESTO ='"+ EDT_Puesto +"' WHERE ID = "+ STC_ID,"QRY1")


si el ID es numerico esta bien si no tambien lo debes proteger asi como los otros
Membro registado
3.659 mensagems
Popularité : +175 (223 votes)
Publicado em outubro, 17 2015 - 11:49 AM
Prezados

Eu recomendo fazer de outra maneira, segue minha sugestão:

Sqlcodigo is string = [
UPDATE PUESTOS SET NOMBRE ='@Nombre@' , APELLIDO ='@Apellido@' , PUESTO ='@Puesto@' WHERE ID = @ID@
]

//note que aonde é string tem aspa simples e no id que é int não tem aspas simples e o @@ que eu uso é uma convenção de código minha para agora usar o réplica da linha acima não trocar textos que não devem ser substituídos assegurando a troca somente naquela posição.

Sqlcodigo = Replace (Sqlcodigo, "@Nombre@" , Edt_Nombre)
Sqlcodigo = Replace (Sqlcodigo, "@Apelido@" , Edt_Apelido)
Sqlcodigo = Replace (Sqlcodigo, "@Puesto@" , Edt_Puesto)
Sqlcodigo = Replace (Sqlcodigo, "@ID@" , Edt_ID)


//OBS.: Agora tá 100% certo o código no debug aqui nesse ponto a string está perfeitamente montada fácil localização e pode ser capturada na parte da plane Debug o sql se copiar e colar do debug no seu Manager Sql digamos do Mssql vai ter que funcionar. LEMBRO da questão do null se tiver que controlar use o Replace null que eu postei no forum oficial da PcSoft Bar.


SQLExec(Sqlcodigo, "QRY1")

//Da mais trabalho mas fica mais fácil de achar os erros... que são na maioria das vezes a falta de vírgula entre campos que faltou no exemplo do sr Carbalho e não por aspas simples quando é string ou não por quando for num podendo ser controlado isso com o Replacenull ou com um IF ou ainda com uma condição TERNÁRIA ou usar o StringBuilder.


Um forte abraço e sucesso

--
Adriano Jose Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
______________________________________________