PDA

Ver la Versión Completa : Se puede hacer una consulta sobre un componente.


carlos gonzalez
24-06-2005, 14:16:07
Hola amigos tengo un problema con una consulta que quiero hacer o no se si puede hacer. Dejen les explico



Tengo un componente simpledataset de dbexpress por medio del cual ago una consulta a una tabla, de una tabla que tiene 20 campos yo selecciono solo 5 y los mando a un dbgrild yo manualmente le agrego otra columna al dbgrild esto es porque el usuario por medio de un asterisco va a seleccionar algunos registros.



El código es el sig.



procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);

var codigo:string;

begin

if (key=#13) then

begin

simpledataset1.Edit;

simpledataset1.FieldBYName('Nopagar').AsString:='*';

simpledataset1.Post;}



end;

end;



mi duda es, si es posible hacer una consulta sobre los datos que tiene el dbgrild marcados con un asterisco o los que el usuario acaba de marcar, estos datos no se guardan, el asterisco me sirve solo para saber que datos fueron seleccionados y después de eso insertar los datos seleccionados en una tabla temporal.



Si alguien me puede ayudar u orientar se los voy a agradecer bastante.



Estaré esperando sus comentarios.



Su amigo Carlos.



Saludos

hermes_32
24-06-2005, 14:33:19
Hola carlos,

supongo que lo que quieres es procesar una serie de registros de una tabla que el usuario marque (tu lo haces mediante un asterisco).
Yo lo que haría sería utilizar una campo calculado Boolean en vez de string, y ponerlo como columna para seleccionar. A mi me parece que queda mejor.
Sería hacer lo mismo que hacer tu pero de la siguiente manera:


simpledataset1.Edit;
simpledataset1.FieldBYName('Nopagar').AsBoolean := not simpledataset1.FieldBYName('Nopagar').AsBoolean;
simpledataset1.Post


Despues de marcar los registros, haces lo siguiente:

1) Te posicionas en el primer registro de la tabla.
2) Recorres hasta el final
3) Procesas los registros que "Nopagar" sea True

Un saludo.

Lepe
24-06-2005, 18:13:03
Esto es totalmente distinto.

Pones el dbgrid con multiselect a true, si te parece oportuno, dgRowSelect de las opciones a true.

El usuario puede marcar las filas con las teclas CTRL/Shift y con un clic de raton, por tanto, el fondo de esas filas quedan en azul y las letras en blancas.

Ahora solo tienes que hacer un recorrido por las filas que estan seleccionadas.
Si buscas en la ayuda de delphi por SelectedRow de un DBGrid, viene un ejemplo.

Otra opción es instalar un componente de terceros, el Scalabium Grid (usa google) permite poner un Checkbox a la izquierda de las filas, y el usuario simplemente marca los checkboxes.

Un saludo.