![]() |
Actualizo registro con problemas
Hola a todos
Utilizo D6 y MS2000. Tengo una ficha en la cual hay un dbgrid para que el usuario puede seleccionar registro através del ratón o diciendole todos. El problema viene y la verdad no se porque puede ser. Muchas veces ocurre que ejecuto una sentencia de sql para que actualize todos los registros y solo me actualiza el primero y el resto se queda igual. Lo hago através del Sql Server Manager y no da problemas. Utilizo lo siguiente. if provincia.Text<> '' then begin ADOCommand1.CommandText:='Update Albaranes Set Esta =:param1 where cli=:param2 and aged =:param3'; ADOCommand1.Parameters.ParamByName('param1').Value:='S'; ADOCommand1.Parameters.ParamByName('param2').Value:=cliente.text; ADOCommand1.Parameters.ParamByName('param3').Value:=Agencia.text; end else begin ADOCommand1.CommandText:='Update Albaranes Set Esta =:param1 where cli=:param2'; ADOCommand1.Parameters.ParamByName('param1').Value:='S'; ADOCommand1.Parameters.ParamByName('param2').Value:=cliente.text; end; ADoCommand1.Execute; El caso que alguna vez me ha ocurrido que haciendo una copia de la bd luego si que funciona durante un par de veces y después ya deja de funcionar. Alguien tiene idea de que puede pasar. Un saludo y gracias por la ayuda |
Podrías guardar en algun fichero o mostrar por pantalla las sentencias que estás enviando. Me da la impresión de que alguno de los parámetros tal vez no es el correcto.
Normalmente una consulta o funciona o no funciona, pero no tiene mucha lógica que no falle, pero sólo te actualice un registro (siendo un único UPDATE). |
Esto es lo que me muestra
Update Albaranes Set Esta ='S' Where Cli ='100' Y solo me actualiza el primero |
¿Cuantos tienes que coincidan con esta condición?
Cita:
|
Mas de 20 registros.
|
A mí, se me han fundido los plomos con esa respuesta :eek:.
el adocommand1 ese no tiene una variable "RowsAfected" ? a ver qué dice allí. Saludos |
Yo tampoco lo entiendo :(...
Lanzas esta consulta: Y te devuelve 20 registros y lanzas esta SQL Y sólo te actualiza 1 :confused::confused::confused::confused::confused: ¿No tienes Triggers activados? ¿No tienes nada más que actualice? |
Seria de que lanzaras la consulta pero considerando el parametro provincia que utilizas en la condicional. por ahi debe de andar el problemin.
|
¿Por qué tenemos que adivinar las tablas, los campos y los datos que tiene él?
Chico, pon ejemplito de todo y así queda claro lo que quieres hacer y por qué. Pero por favor, usa las etiquetas delphi y sql: [delphi] tu codigo delphi aqui [/delphi] [sql] tu codigo sql aqui [/sql] para que podamos verlo con identado y resaltado de sintaxis. No suele ser normal 3 días para resolver una duda de este tipo, (a menos que sea un bug del motor, o algo similar). Saludos |
Primero disculparme por no haber contestado antes, pero no he podido.
Os muestro un ejemplo más claro de lo que me ocurre y no entiendo el porque. Intento hacer esto try Data.ConTipsaSer.BeginTrans; Data.Sql.CommandText:='Delete from Bultos where Cli ='+#39+cliente+#39; Data.Sql.Execute; Data.ConTipsaSer.CommitTrans; except Data.ConTipsaSer.RollbackTrans; end; Y me sigue borrando el primero. Lo que he hecho ha sigo generar un pequeño ejecutable con el mismo ADOConnection1 y el mismo ADOCommand1 procedure TForm1.Button1Click(Sender: TObject); var cliente:String; begin cliente:='01504'; ADOConnection1.Connected; ADOCommand1.CommandText:='Delete from Bultos where cli ='+#39+cliente+#39+') ADOCommand1.Execute; ADOConnection1.Connected:=False; end; Y me funciona. ¿No se por donde mirar? |
¿Y estás seguro de que en el primer caso la variable cliente vale lo que debe valer?
Ya se que es un poco "rustico", pero es para asegurarte, porque lo que te está pasando está claro que es raro... |
Gracias Neftali, pero si que me muestra el cliente correctamente.
Creo que el problema no es de la base de datos, sino de las transcaciones o de algo que se queda abierto. También lo he probado con un procedimiento almacenado y lamentablemente solo me borra un registro. Voy a probar a crear otra conexión para borrar y actualizar haber que ocurre? Gracias |
Gracias por ayudarme, lo he solucionado pero me gustaria saber por que no me hacer los delete o los update.
Bueno lo que he hecho ha sido abrir otra conexión y hacer la sentencia de sql. Y funciona a la primera. Un saludo y gracias. |
| La franja horaria es GMT +2. Ahora son las 04:38:22. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi