Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-10-2007
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Update Masivo...

Hola amigos

tanto tiempo...

estaba modificando unas sentencias de un programa, en donde tengo una serie de registros... (aprox.. 50).. que cumplen una condición.. una vez que se procesan tengo k cambiar el estado.. por lo cual quiero hacer un update masivo.. si realizo la consulta sql desde SQL Server 2000 me funciona bien.. pero al traspasarla desde el delphi.. no me pesca... que podra hacer

miren las consutlas que estoy haciendo

la siguiente consulta realiza un filtro de los registros... que esten con el estado 'OK'... esto lo realiza bien.
Código Delphi [-]
     Datos.AQ_Select.Close;
Datos.AQ_Select.SQL.Clear;
Datos.AQ_Select.SQL.Add('Select * From Personal, Proceso');
Datos.AQ_Select.SQL.Add('Where (Personal.Per_Nro=Proceso.Per_Nro) And (Proceso.Pro_Tipo=:Var1)');
Datos.AQ_Select.SQL.Add('And (Proceso.Pro_Fecha=:Var2) And (Proceso.Pro_Internet=:Var3)');
Datos.AQ_Select.SQL.Add('Order By Personal.Per_Rut');
Datos.AQ_Select.Parameters[0].Value := Copy(Proceso.Text,1,1);
Datos.AQ_Select.Parameters[1].Value := Concat(FormatDateTime('mm',Fecha.Date),'-',FormatDateTime('yyyy', Fecha.Date));
Datos.AQ_Select.Parameters[2].Value := 'OK';
Datos.AQ_Select.Open;

despues realizo una consuta que debe actualizar el estado de 'OK' a 'PR'.. lo ejecuta pero no se actualizan los datos en la tabla...
Código Delphi [-]
 
Datos.AQ_Edit.Close;
Datos.AQ_Edit.SQL.Clear;
Datos.AQ_Edit.SQL.Add('Update Proceso Set Pro_Internet=:Var4');
Datos.AQ_Edit.SQL.Add('Where Pro_Tipo=:Var1 And Pro_Fecha=:Var2 And Pro_Internet=:Var3');
Datos.AQ_Edit.Parameters[0].Value := Copy(Proceso.Text,1,1);
Datos.AQ_Edit.Parameters[1].Value := Concat(FormatDateTime('mm',Fecha.Date),'-',FormatDateTime('yyyy', Fecha.Date));
Datos.AQ_Edit.Parameters[2].Value := 'OK';
Datos.AQ_Edit.Parameters[3].Value := 'PR';
Datos.AQ_Edit.ExecSQL;

que podra ser... igual le seguire dando bueltas...
__________________
BlueSteel
Responder Con Cita
  #2  
Antiguo 25-10-2007
pcicom pcicom is offline
Miembro
 
Registrado: may 2003
Ubicación: MONTERREY MEXICO
Posts: 253
Poder: 21
pcicom Va por buen camino
Porque mejor no intentas crear tu instruccion SQL concatenada, es mas simple sin tando show...

Código Delphi [-]
     

cSql := 'SELECT * FROM Personal, Proceso WHERE ';
cSql := cSql + ' Personasl.Per_Nro=Proceso.Per_Nro AND Proceso.Pro_Tipo='+QuotedStr(cVar1)+'  AND ';
cSql := cSql + ' Proceso.Pro_Fecha='+sqldma(cVar2) + ' AND ';
cSql := cSql + ' Proceso.Pro_Internet='+QuotedStr(cVar3) ;
cSql := cSql + ' Order By Personal.Per_Rut';


Datos.AQ_Select.Close;
Datos.AQ_Select.SQL.Clear;
Datos.AQ_Select.SQL.Add(cSql);
Datos.AQ_Select.open;

ACTUALIZACION

Código Delphi [-]
 

cSql := 'UPDATE Proceso  Set Pro_Internet='+QuotedStr('PR');
cSql := cSql + ' WHERE Pro_Tipo='+QuotedStr(cVar1)+'  AND ';
cSql := cSql + ' Pro_Fecha='+sqldma(cVar2) + ' AND ';
cSql := cSql + ' Pro_Internet='+QuotedStr('OK');


Datos.AQ_Select.Close;
Datos.AQ_Select.SQL.Clear;
Datos.AQ_Select.SQL.Add(cSql);
Datos.AQ_Select.ExecSQL;


De esta Manera es mas FACIL detectar ERRORES de los comandos SQL..

PUEDES desplegar la variable cSQL y o grabarla en el CLIPBOARD, y probarla con el DBADMIN de tu preferencia...
__________________
Poco ha de saber el que no pregunta.. Yo por eso soy un pregunton
Responder Con Cita
  #3  
Antiguo 26-10-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Yo dejaría las sqls con parámetros, son más fiables.

No uses Parameters[0] porque estas dando valores a un parámetro equivocado. Usa Parameters.Parambyname('Var4').Value := lo que sea.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 26-10-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Completo un poquito más por si no me expliqué bien, En el Update:
- El parámetro de fechas, se lo estas dando a Pro_tipo.
- A Pro_fechas le estas pasando 'OK'.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 26-10-2007
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Cita:
Empezado por pcicom Ver Mensaje
Porque mejor no intentas crear tu instruccion SQL concatenada, es mas simple sin tando show...

...De esta Manera es mas FACIL detectar ERRORES de los comandos SQL..

PUEDES desplegar la variable cSQL y o grabarla en el CLIPBOARD, y probarla con el DBADMIN de tu preferencia...
Hola.. en realidad mi error no pasa por eso.. la consulta ya la he probado en el editor de consultas del SQL Server 2000 y me lo procesa bien...

el problema pasa que desde delphi no realiza el cambio que yo quiero....
__________________
BlueSteel
Responder Con Cita
  #6  
Antiguo 26-10-2007
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Gracias Lepe...

Cita:
Empezado por Lepe Ver Mensaje
Completo un poquito más por si no me expliqué bien, En el Update:
- El parámetro de fechas, se lo estas dando a Pro_tipo.
- A Pro_fechas le estas pasando 'OK'.

Saludos
bueno.. realice el cambio que mencionas.. pero sigue igual... no me actualiza el dato...seguire intentanto
__________________
BlueSteel
Responder Con Cita
  #7  
Antiguo 27-10-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
El cambio lo tiene que hacer por fuerza si realmente existe registros.

Haz la prueba desde delphi, pero en lugar de un Update, que sea un Select con el mismo where, y ves si retorna registros en un grid. De esta forma te aseguras que no es fallo de parámetros, o de que no existan registros (bien por mayúsculas /minúsculas y campos de fechas).

Al usar Parameters(....).Value quizás tengas previamente que configurar ese parámetro, para decirle de qué tipo es:
Código Delphi [-]
Datos.AQ_Select.Parameters[0].Datatype := (integer, float, string) // revisa la ayuda de Datatype.
Datos.AQ_Select.Parameters[0].Value := Copy(Proceso.Text,1,1);

Ya me quedo sin ideas

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #8  
Antiguo 29-10-2007
Avatar de ozsWizzard
ozsWizzard ozsWizzard is offline
Miembro
 
Registrado: may 2004
Ubicación: Murcia
Posts: 190
Poder: 21
ozsWizzard Va por buen camino
Supongo que es una chorrada lo que voy a decir pero por si acaso.

No sé si lo estás metiendo en una transacción o no pero si lo estás haciendo asegúrate de que al final haces commit.
__________________
La Madurez se llama...
~~~Gaia~~~
Responder Con Cita
  #9  
Antiguo 29-10-2007
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Cita:
Empezado por Lepe Ver Mensaje
El cambio lo tiene que hacer por fuerza si realmente existe registros.

Haz la prueba desde delphi, pero en lugar de un Update, que sea un Select con el mismo where, y ves si retorna registros en un grid. De esta forma te aseguras que no es fallo de parámetros, o de que no existan registros (bien por mayúsculas /minúsculas y campos de fechas).

Al usar Parameters(....).Value quizás tengas previamente que configurar ese parámetro, para decirle de qué tipo es:

Ya me quedo sin ideas Saludos
Hola Lepe..

en realidad.. la sentencia ya esta más que probada con un select...

Tengo 2 Query's...

uno llamado AQ_Select y otro llamado AQ_Edit

en la AQ_Select, realizo el mismo filtro (y el resultado los devuelvo en un DBStringGrid...

entonces la sentencia (con las variables y todo.. funciona bien)...

a ese resultado (que ya esta en un DBStringGrid,,, tengo que cambiarle el estado de 'PR' a 'OK'

por lo tanto ejecuto la misma sentencia que la anterior, obviamente cambiando el Select por Update más el valor que debe establecer... pero no pasa nada

y la sentencia la he ejecutado en el SQL Server y si me la acepta... ese es el problema...
__________________
BlueSteel
Responder Con Cita
  #10  
Antiguo 30-10-2007
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Podria ser con un SP

Hola amigos

saben,,, estaba pensando como solucionar mi problema... y se me ocurrio que podria hacer un Procedimiento almacenado... (ya que en el SQL si funciona)...

y ese procedimiento llamarlo desde delphi.. y ejecutarlo

crearé un procedimiento.. y les cuento como me va... salu2
__________________
BlueSteel
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
Envio masivo de mensajes via web supermanpy Varios 5 08-05-2010 19:00:26
upload masivo kayetano PHP 12 06-12-2006 16:45:39
Reemplazar Componentes (Masivo) vtdeleon Varios 7 11-09-2005 17:31:42
Traspaso masivo de datos .DBF eibarra Conexión con bases de datos 1 06-04-2005 16:06:59
consula de incremento masivo tutuk SQL 2 15-12-2004 04:25:01


La franja horaria es GMT +2. Ahora son las 15:05:21.


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