Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-12-2008
comba comba is offline
Miembro
 
Registrado: feb 2004
Posts: 89
Poder: 21
comba Va por buen camino
Smile 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 =aram1 where cli=aram2 and aged =aram3';
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 =aram1 where cli=aram2';
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
Responder Con Cita
  #2  
Antiguo 18-12-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.307
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 18-12-2008
comba comba is offline
Miembro
 
Registrado: feb 2004
Posts: 89
Poder: 21
comba Va por buen camino
Esto es lo que me muestra

Update Albaranes Set Esta ='S' Where Cli ='100'

Y solo me actualiza el primero
Responder Con Cita
  #4  
Antiguo 19-12-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.307
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Cuantos tienes que coincidan con esta condición?
Cita:
Empezado por comba Ver Mensaje
Update Albaranes Set Esta ='S' Where Cli ='100'
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 19-12-2008
comba comba is offline
Miembro
 
Registrado: feb 2004
Posts: 89
Poder: 21
comba Va por buen camino
Mas de 20 registros.
Responder Con Cita
  #6  
Antiguo 19-12-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
A mí, se me han fundido los plomos con esa respuesta .

el adocommand1 ese no tiene una variable "RowsAfected" ? a ver qué dice allí.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #7  
Antiguo 22-12-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.307
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Yo tampoco lo entiendo ...

Lanzas esta consulta:
Código SQL [-]
Select * from Where Cli ='100'
Y te devuelve 20 registros

y lanzas esta SQL
Código SQL [-]
Update Albaranes Set Esta ='S' Where Cli ='100'
Y sólo te actualiza 1



¿No tienes Triggers activados?
¿No tienes nada más que actualice?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #8  
Antiguo 22-12-2008
Avatar de Kipow
Kipow Kipow is offline
Miembro
 
Registrado: abr 2006
Ubicación: Guatemala
Posts: 329
Poder: 19
Kipow Va por buen camino
Seria de que lanzaras la consulta pero considerando el parametro provincia que utilizas en la condicional. por ahi debe de andar el problemin.
Responder Con Cita
  #9  
Antiguo 22-12-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
¿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
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #10  
Antiguo 30-12-2008
comba comba is offline
Miembro
 
Registrado: feb 2004
Posts: 89
Poder: 21
comba Va por buen camino
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?
Responder Con Cita
  #11  
Antiguo 30-12-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.307
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Y estás seguro de que en el primer caso la variable cliente vale lo que debe valer?

Código Delphi [-]
try
  Data.ConTipsaSer.BeginTrans;
  MessageDlg(Format('Voy a borrar el cliente <%s>',[cliente]), mtWarning, [mbOK], 0);
  Data.Sql.CommandText:='Delete from Bultos where Cli ='+#39+cliente+#39;
  MessageDlg(Format('SQL:%s',[Data.Sql.CommandText]), mtWarning, [mbOK], 0);
  Data.Sql.Execute;
  Data.ConTipsaSer.CommitTrans;
except
  Data.ConTipsaSer.RollbackTrans;
end;

Ya se que es un poco "rustico", pero es para asegurarte, porque lo que te está pasando está claro que es raro...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #12  
Antiguo 30-12-2008
comba comba is offline
Miembro
 
Registrado: feb 2004
Posts: 89
Poder: 21
comba Va por buen camino
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
Responder Con Cita
  #13  
Antiguo 30-12-2008
comba comba is offline
Miembro
 
Registrado: feb 2004
Posts: 89
Poder: 21
comba Va por buen camino
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como actualizo con DataSetProvider? felixgo Conexión con bases de datos 1 11-01-2011 18:16:22
como actualizo el kernel? Robert01 Linux 2 02-11-2008 21:01:24
¿Actualizo a Delphi 2007? Sr_Sombrero Varios 2 12-02-2008 14:00:18
Error cuando actualizo una tabla en SQL liborio Conexión con bases de datos 1 10-01-2007 19:52:03
¿como actualizo Qreport? Alfredo Impresión 2 08-03-2004 22:51:06


La franja horaria es GMT +2. Ahora son las 23:39:29.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi