Не знаю, имеет ли TUNIQuery метод ExecSql, но это будет работать с TADOQuery, в моем случае ListView.ViewStyle устанавливается в vsReport и содержит 4 столбца.
Я думаю, что если вы используете StringGrid или DBGrid будет намного легче Генделя
procedure TForm1.PostData;
const
SQLCMD = 'INSERT INTO MYTABLE (NAME, POSITION, SALL, DATE) VALUES '+
'(%s, %s, %s, %s)';
var
// IL: TListItem;
I, J, ItemsCount, SubItemsCount: integer;
LineItem: array of string;
begin
ItemsCount:= ListView1.Items.Count;
for I := 0 to ItemsCount - 1 do // looping thru the items
begin
SubItemsCount:= ListView1.Items[I].SubItems.count;
SetLength(LineItem, SubItemsCount + 1);
LineItem[0]:= ListView1.Items[0].Caption; // the first item caption (first col)
for J := 0 to SubItemsCount - 1 do // looping thru the subitems of each line
LineItem[J+1]:= ListView1.Items[I].SubItems.Strings[J];
//
// just to see the sql command
// ShowMessage(
// Format(SQLCMD, [ QuotedStr(LineItem[0]),
// QuotedStr(LineItem[1]),
// LineItem[2], //int field no need to quote the parameter
// QuotedStr(LineItem[3])]
// ));
//
with TAdoQuery.Create(nil) do
try
ConnectionString:= 'Your Connection String';
SQL.Text:=
Format(SQLCMD, [QuotedStr(LineItem[0]),
QuotedStr(LineItem[1]),
LineItem[2], //int field no need to quote the parameter
QuotedStr(LineItem[3]));
ExecSql; // you might handel execsql to know the row was affected, also not sure if unidac have the same method
finally
Free;
end;
SetLength(LineItem, 0);
end;
end;
Что вы пробовали? какие компоненты db вы используете? – RRUZ
Я использую компонент UniDac (devart.com) db, я не могу попробовать .. потому что я не могу заполнить, как начать, можете ли вы дать мне несколько советов? – vkatsitadze