Hola amigos un saludo especial.
En el siguiente procedimiento tengo tres dudas que por mas vueltas y consultas que he hecho definitivamente no pude.
1) marcado con verde, la pregunta es: como declaro en esa variable un valor que esta en el listview.Columns[0]. es decir necesito que la variable "repetir" corresponda a cualquier numero que esta previamente reflejado en esa columna.
2) marcado con purpura, la situación es casi la misma de la pregunta No. 1; Necesito que "si el registro esta chequeado" entonces haga la acción de grabar.
3) marcado con turquesa, vuelve y juega; el parámetro para la grabación no me da con ninguna opción estudiada (y juro que lo he hecho).
En síntesis este procedimiento busca: Grabar en una tabla llamada "registros" tres campos llamados "PROCEDIMIENTO, CODIGO_PROCEDIMIENTO, VALOR" los registros que esten chequeados de una lista contenida en unas columnas de un ListView, el numero de veces que dice una columna adicional del mismo listview.
Mil gracias por los aportes y atención.
Código Delphi
[-]
procedure TForm1.GrabarClick(Sender: TObject);
var
i, j, repetir: integer;
begin
for i := 0 to ListView.Items.Count - 1 do
begin
Repetir := StrToInt(ListView.Items.Item[0].SubItems[0]);
if (ListView.Selected = nil) then
with IBQGrabar do
begin
SQL.Text := 'INSERT INTO TREGISTROS'
+ '(PROCEDIMIENTO, CODIGO_PROCEDIMIENTO, VALOR)'
+ 'VALUES(:PROCEDIMIENTO, :CODIGO_PROCEDIMIENTO, :VALOR)';
IBQGrabar .ParamByName('PROCEDIMIENTO').AsString:= ListView.Items.Item[0].SubItems[1];
IBQGrabar .ParamByName('CODIGO_PROCEDIMIENTO').AsInteger:= ListView.Items.Item[0].SubItems[2];
IBQGrabar .ParamByName('VALOR').AsFloat:= StrToFloatDef(ListView.Items.Item[0].SubItems[3], 0);
For j := 1 to Repetir do
ExecSQL;
end;
end;
IBT1.CommitRetaining;
ShowMessage('MUESTRA(S) GRABADA(S) CON EXITO');
end;
BD: Firebird