Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 20
Elite237 Va por buen camino
Gracias de nuevo Delphius, este es el codigo que implemente, los componentes que uso son query y un database

Código Delphi [-]
procedure TForm1.BitBtnModificarClick(Sender: TObject);
var
i:integer;
begin
for i:=1 to sgEvaluacion.ColCount -1 do
  sgEvaluacion.cells[1,i]:=IntToStr(i);
   query1.close;
   query1.sql.clear;
   query1.sql.add('update set tevaluacion(eval_descripcion,eval_nivel,eval_ult_version,eval_ver_usada)');
   query1.sql.add('values(:eval_descripcion,:eval_nivel,:eval_ult_version,:eval_ver_usada)');
   query1.ParamByName('eval_descripcion').value:=(sgEvaluacion.Cells[1,i]);
   query1.ParamByName('eval_nivel').value:=(sgEvaluacion.Cells[2,i]);
   query1.ParamByName('eval_ult_version').value:=(sgEvaluacion.Cells[3,i]);
   query1.ParamByName('eval_ver_usada').value:=(sgEvaluacion.Cells[4,i]);
   try
    query1.execsql
   except
   end;
Application.MessageBox('Los datos se modificaron con éxito','Mensaje de confirmación',mb_OK);
end;

Pero me manda un error de sql..la verdad nose que error sera, se que es por que tengo mal mi sentencia, pero exactamente a que se refiere pues no.Ah..otra cosa, le quite lo de la conversiones puesto que me decia incompatibles string and integer.
Responder Con Cita
  #2  
Antiguo 25-10-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
Elite237, no te enojes pero cuando uno dice que le da error debe decir que error, y donde... ¡No soy adivino!

¿Leíste mi mensaje anterior? Leelo, tu consulta UPDATE está mal hecha.
Por otro lado, ¿que componentes estás empleando? ¿TADOQuery? ¿TQuery?

Si es TADOQuery el uso de parámetros es así:

Código Delphi [-]
ADOQuery1.Parameters.ParamByName().Value := ...
ADOQuery1.Parameters.ParamByName().DataType := ...

Si es un TQuery, u otro que emplee parametros de la clase TParams (la clase TADOQuery usa parametros de clase TParameters, de allí su diferencia), el uso es así:

Código Delphi [-]
TQuery1.Params.ParamByName().AsXXX := ...

¿Me explico?

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #3  
Antiguo 25-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 20
Elite237 Va por buen camino
Disculpame Delphius, estoy metiendo cosas donde no es..el componente que uso es TQuery. El error era por que escribi
Código Delphi [-]
update set evaluacion
y es update evaluacion set

Código SQL [-]
El error que me manda es SQL Error code =-104
token unknown - line,char 24 ('

asi deje mi codigo por ultimo
Código Delphi [-]
procedure TForm1.BitBtnModificarClick(Sender: TObject);
var
i:integer;
begin
for i:=1 to sgEvaluacion.ColCount -1 do
  sgEvaluacion.cells[1,i]:=IntToStr(i);
   query1.close;
   query1.sql.clear;
   query1.sql.add('update tevaluacion set (eval_descripcion,eval_nivel,eval_ult_version,eval_ver_usada)');
   query1.sql.add('values(:eval_descripcion,:eval_nivel,:eval_ult_version,:eval_ver_usada)');
   query1.Params.ParamByName('eval_descripcion').asstring:=(sgEvaluacion.Cells[1,i]);
   query1.Params.ParamByName('eval_nivel').asstring:=(sgEvaluacion.Cells[2,i]);
   query1.Params.ParamByName('eval_ult_version').asstring:=(sgEvaluacion.Cells[3,i]);
   query1.Params.ParamByName('eval_ver_usada').asstring:=(sgEvaluacion.Cells[4,i]);
   try
    query1.execsql
   except
   end;
Application.MessageBox('Los datos se modificaron con éxito','Mensaje de confirmación',mb_OK);
end;

espero np haber hecho otra cosa mal, no te quiero desesperar delphius.Saludos
Responder Con Cita
  #4  
Antiguo 25-10-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
Sigo viendo el mismo error en tu consulta Elite237.
Por otro lado, recién ahora me doy cuenta de que metí mal el dedo. Una consulta UPDATE se construye sin esos paréntesis:

Código SQL [-]
UPDATE tabla SET Campo1 = :Parametro1, ... , CampoN = :ParametroN WHERE (condicion/es)

Y noto en tu código que tienes un for y dentro de él supuestamente muchas sentencias. Si quieres que se ejecuten todas, debes poner un begin-end entre el for:

Código Delphi [-]
for i := xx to yyy do
  begin
   // tus sentencias...
  end;

Según como lo tienes el FOR lo único que hará es la primera línea. Fíjate bien.... Tomate el tiempo, no te apresures ni arrebates.

Como usas TQuery, imagino que empleas componentes DBE. En ese caso, el uso de parámetros es como he indicado antes:

Código Delphi [-]
Query1.Params.ParamByName().AsXXX = ....

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #5  
Antiguo 27-10-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 25
Caro Va por buen camino
Holitas

Cita:
Empezado por Delphius Ver Mensaje
StringGrid1.Cols[Numero].Clear;
// o bien...
StringGrid1.Rows[Numero].Clear;

Lo que hace el Clear es borrar TODA la fila o clumna, según sea el caso.
Marcelo el Clear no borra una fila o columna, lo que hace es limpiar la columna o fila.

Para borrar una fila de un StringGrid debes utilizar el procedimiento DeleteRow donde le pasas como parametro la fila a eliminar, pero como es un metodo protegido, primero defines un nuevo tipo que herede de un TStringGrid.

Código Delphi [-]
type
  StringG = class (TStringGrid);

  .........................
  .........................
procedure TForm1.ButtonBorrarClick(Sender: TObject);
begin
  //En este caso te eliminara la fila actual del StringGrid
  StringG(StringGrid1).DeleteRow(StringGrid1.Row);
end;

Sobre actualizar, como te dice Marcelo, esta mal la sintaxis del update, supongo que quieres actualizar la fila actual, si es así no necesitas el ciclo.

Código Delphi [-]
procedure TForm1.BitBtnModificarClick(Sender: TObject);
var
i:integer;
begin
 
for i:=1 to sgEvaluacion.ColCount -1 do
  //que es lo que quieres hacer con esta linea ya que te va a cambiar
 //el valor de la columna 1 y fila i 
  sgEvaluacion.cells[1,i]:=IntToStr(i);

 
query1.close;
query1.sql.clear;
query1.sql.add('update tevaluacion set eval_descripcion=:eval_descripcion, eval_nivel=:eval_nivel, ');
query1.sql.add('eval_ult_version=:eval_ult_version, eval_ver_usada=:eval_ver_usada');

//Row es la fila actual
query1.ParamByName('eval_descripcion').asstring:=(sgEvaluacion.Cells[1,sgEvaluacion.Row]);
query1.ParamByName('eval_nivel').asstring:=(sgEvaluacion.Cells[2,sgEvaluacion.Row]);
query1.ParamByName('eval_ult_version').asstring:=(sgEvaluacion.Cells[3,sgEvaluacion.Row]);
query1.ParamByName('eval_ver_usada').asstring:=(sgEvaluacion.Cells[4,sgEvaluacion.Row]);

try
  query1.execsql
except
............

Ahora no se si tu quieres actualizar todas las filas de tu StringGrid, de la forma que esta tu ciclo, se va actualizar la cantidad que tienes en ColCount y la fila i.

No te olvides poner una condición a tu update, sino la actualización se hara para todos tus registros.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #6  
Antiguo 27-10-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
Cita:
Empezado por Caro Ver Mensaje
Holitas

Marcelo el Clear no borra una fila o columna, lo que hace es limpiar la columna o fila.

Para borrar una fila de un StringGrid debes utilizar el procedimiento DeleteRow donde le pasas como parametro la fila a eliminar, pero como es un metodo protegido, primero defines un nuevo tipo que herede de un TStringGrid.

Código Delphi [-]type StringG = class (TStringGrid); ......................... ......................... procedure TForm1.ButtonBorrarClick(Sender: TObject); begin //En este caso te eliminara la fila actual del StringGrid StringG(StringGrid1).DeleteRow(StringGrid1.Row); end;
Muy buena aclaración Caro,
Tienes razón, yo estaba entendiendo a que "Borrar" se refiere a limpiar el contenido de la fila o columna.

Sería oportuno que Elite237 nos haga saber si por borrar se refiere a eliminar, o por el contrario a limpiar el contenido. De ese modo sabré si lo estado aconsejando mal.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #7  
Antiguo 27-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 20
Elite237 Va por buen camino
Hola delphius y caro...si, lo que quiero es borrar toda la fila. Delphius no es limpiar el contenido sino borrar toda la fila.Y el update lo quiero hacer para una sola fila, osea que el usuario edite en el stringgrid.Gracias por contestar.Saludos
Responder Con Cita
  #8  
Antiguo 27-10-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 25
Caro Va por buen camino
Cita:
Empezado por Elite237 Ver Mensaje
no es limpiar el contenido sino borrar toda la fila.Y el update lo quiero hacer para una sola fila,
Hola, con lo que he puesto arriba, ya tendrías ambas cosas, pero como te digo tienes que aumentar una condición a tu update, supongo que cada fila esta identificada por un codigo, entonces en el Where del Update pondrías la condición por ese codigo, para que no modifique todos los registros de tu tabla sino solo el registro que tenga ese codigo.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #9  
Antiguo 29-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 20
Elite237 Va por buen camino
Código Delphi [-]

 type
  StringG = class (TStringGrid);
 
  .........................
  .........................
procedure TForm1.ButtonBorrarClick(Sender: TObject);
begin
  //En este caso te eliminara la fila actual del StringGrid
  StringG(StringGrid1).DeleteRow(StringGrid1.Row);
end;
Te acuerdas de esto que me dijiste,fijate que si aplica cuando tengo por ejemplo
5 filas, si me elimina 1, pero ayer introduje unos 20 registros en el stringgrid y al momento de borrar una fila, me borro todas y solo me dejo una fila.
Tu sabras el motivo? Este es el codigo que tengo en mi boton.:
Código Delphi [-]
procedure TForm1.BitBtnASEliminarClick(Sender: TObject);
begin
if MessageBox(Handle,'¿Esta seguro que desea eliminar los datos?',
   'Confirmar',MB_ICONWARNING or MB_YESNO) = IDYES then
  begin
   query2.close;
   query2.sql.clear;
   query2.sql.add('delete from det_evaluacion');
   query2.sql.add('where det_eval = '''+sgPreguntas.cells[0,sgPreguntas.row]+'''');
   try
    query2.execsql
   except
   end;
  StringG(sgPreguntas).DeleteRow(sgPreguntas.Row);
 application.MessageBox('Se eliminaron los datos correctamente','Mensaje de confirmación',mb_OK+mb_IconInformation);
 LlenarGridPreguntas(sender);
end;
end;
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Pintar celdas StringGrid cacu OOP 4 24-10-2007 17:22:21
desplazarme en celdas de un stringgrid sexshop_3 Varios 4 27-08-2007 00:54:31
StringGrid + celdas Makiley Varios 4 01-02-2006 13:01:15
combinar celdas de StringGrid VRO Varios 2 21-04-2005 08:02:16
bloquear celdas en un stringgrid ciscu Gráficos 1 18-12-2003 18:34:50


La franja horaria es GMT +2. Ahora son las 16:35:06.


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
Copyright 1996-2007 Club Delphi