Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-10-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola Elite237,
Para borrar se puede emplar el método Clear ya sea de la propiedad Cols o Rows, según se necesite. Por ejemplo:

Código Delphi [-]
StringGrid1.Cols[1].Clear;

Borrará el contenido de la columna 1.

Y para actualizar, no queda otra que recorrer fila a fila, o columna a columna y sustituir el contenido. Por ejemplo algo como esto:

Código Delphi [-]
for i := 1 to stringgrid1.RowCount - 1 do
    StringGrid1.Cells[1,i] := IntToStr(i);

Recuerda que Cols y Rows no corresponden a la normal representación e idea de lo que se entiende por una tabla.
Lo que es Cols en StringGrid equivale a las filas, y a la inversa Rows a las columnas. La verdad es que no se porqué programaron de ese modo al TStringGrid.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #2  
Antiguo 25-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
Hola que tal Delphius, gracias por contestar, tengo una duda acerca del clear. Dices que seria SringGrid.clear....ok..ok, pero lo que quiero hacer es esto: de 4 columnas que tengo nombre, apellidos,direccion,telefono, lo que quiero es que en el propio stringgrid yo pueda modificar los datos de esa fila(ya coloque a true la opcion goEditing) y despues guardarlos en mi base de datos..en si quiero eliminar registros y actualizar registros(filas) del stringgrid. Ya tengo los botones eliminar y actualizar.
Responder Con Cita
  #3  
Antiguo 25-10-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por Elite237 Ver Mensaje
Hola que tal Delphius, gracias por contestar, tengo una duda acerca del clear. Dices que seria SringGrid.clear....ok..ok, pero lo que quiero hacer es esto: de 4 columnas que tengo nombre, apellidos,direccion,telefono, lo que quiero es que en el propio stringgrid yo pueda modificar los datos de esa fila(ya coloque a true la opcion goEditing) y despues guardarlos en mi base de datos..en si quiero eliminar registros y actualizar registros(filas) del stringgrid. Ya tengo los botones eliminar y actualizar.
Hola Elite237,
Dije que es:

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.

Por lo otro, no veo donde está el problema. Si tienes los datos, en el StringGrid y deseas volcarlos a un registro de una tabla, basta con "recorrer" la fila en cuestión columna a columna y componer la instrucción SQL.

Por ejemplo:

Código Delphi [-]
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('INSERT INTO tu_tabla (tus_campos)';
Query1.SQL.Add('VALUES (:parametro1, ..., :parametroN');

Query1.Parameters.ParamByName('parametro1').AsXxx := YyyToXxx(StringGrid1[COLUMNA,FILA]);
...
Query1.Parameters.ParamByName('parametroN').AsZzz := YyyToZzz(StringGrid1[COLUMNA + N,FILA]);

Query1.Execsql;

¿Esa es tu duda?

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 25-10-2008 a las 18:11:02. Razón: Error en etiquetas NOPARSE
Responder Con Cita
  #4  
Antiguo 25-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
Ese codigo seria en el boton de actualizar me imagino..pero seria asi no?
Código Delphi [-]
Query1.SQL.Add('UPDATE INTO tu_tabla (tus_campos)';


una duda que significa YyyToxxx...te refieres a algo asi como StrToInt verdad

Código Delphi [-]
Query1.Parameters.ParamByName('parametroN').AsZzz := YyyToZzz(StringGrid1[COLUMNA + N,FILA]);
Responder Con Cita
  #5  
Antiguo 25-10-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por Fenareth Ver Mensaje
Pero cabe aclarar que ésto es al momento de hacer referencia a una intersección en el StrinGrid... es decir StringGrid.Cells[columna,fila]...

En tiempo de diseño Col corresponde a las Columnas y Row a las Filas, así como en algunas otras propiedades que se manejan ya en el código...

Sólo aclarando

Para poder insertar los registros mostrados en el StringGrid en la Tabla correspondiente tendrás que hacer un recorrido por las filas del mismo e ir transfiriendo el contenido de cada una de las celdas al campo correspondiente en la Tabla.
Muchas gracias por la aclaración Fenareth,
No me había dado cuenta de que habías posteado. Disculpa.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #6  
Antiguo 25-10-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por Elite237 Ver Mensaje
Ese codigo seria en el boton de actualizar me imagino..pero seria asi no?
Código Delphi [-]Query1.SQL.Add('UPDATE INTO tu_tabla (tus_campos)';



una duda que significa YyyToxxx...te refieres a algo asi como StrToInt verdad

Código Delphi [-]Query1.Parameters.ParamByName('parametroN').AsZzz := YyyToZzz(StringGrid1[COLUMNA + N,FILA]);
Lo hice con INSERT a propósito, el fin es que tu lo analices y comprendras. Exacto, debería ser UDPATE; sólo recuerda que la instrucción UPDATE es como sigue:

Código SQL [-]
UPDATE tu_tabla SET(Campo1 = :parametro1, ..., CampoN = :parametroN) WHERE (tu_condicion/es)

¡Sin la condición actualizas todos los registros!

Efectivamente, cuando hablé sobre YyyToXxx, o YyyToZzz me refiero a que debes realizar la conversión en forma adecuada al tipo.

¡PERDON!
Cometí un error antes. Es:
Código Delphi [-]
Query1.Parameters.ParamByName('parametro').Value := ....
Query1.Parameters.ParamByName('parametro').DataType := ftXxx

Recuerda, mis ejemplos son empleando TADOQuery, si usas otros componentes Querys, Es posible que no sea Parameters, sino Params.ParamByName().AsXxxx y en este caso, no es necesario el DataType.

No te olvides indicar que componentes usas. Dependiendo de ello la sintaxis puede variar un poco.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 25-10-2008 a las 18:44:58. Razón: Me olvidé la etiqueta NOPARSE
Responder Con Cita
  #7  
Antiguo 25-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
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
  #8  
Antiguo 25-10-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
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
  #9  
Antiguo 25-10-2008
Avatar de Fenareth
[Fenareth] Fenareth is offline
Miembro Premium
 
Registrado: oct 2007
Ubicación: Guadalajara, Jalisco, México
Posts: 494
Poder: 17
Fenareth Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
...
Recuerda que Cols y Rows no corresponden a la normal representación e idea de lo que se entiende por una tabla.
Lo que es Cols en StringGrid equivale a las filas, y a la inversa Rows a las columnas. La verdad es que no se porqué programaron de ese modo al TStringGrid.

Saludos,
Pero cabe aclarar que ésto es al momento de hacer referencia a una intersección en el StrinGrid... es decir StringGrid.Cells[columna,fila]...

En tiempo de diseño Col corresponde a las Columnas y Row a las Filas, así como en algunas otras propiedades que se manejan ya en el código...

Sólo aclarando

Para poder insertar los registros mostrados en el StringGrid en la Tabla correspondiente tendrás que hacer un recorrido por las filas del mismo e ir transfiriendo el contenido de cada una de las celdas al campo correspondiente en la Tabla.
__________________
Ask questions. Think for yourself. Wake up and you’ll make the difference
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
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 18:14:40.


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