TSqlite3Dataset version:
unit Unit_Sqlite3Dataset_Utils;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Sqlite3DS;
// Thanks to: rvk, see http://forum.lazarus.freepascal.org/index.php/topic,28183.msg175671.html#msg175671
// TSqlite3Dataset version, converted by: totya
procedure Sqlite3DatasetKez_RowUp (const Sqlite3Dataset:TSqlite3Dataset;
const OrderNumberField: string);
procedure Sqlite3DatasetKez_RowDown (const Sqlite3Dataset:TSqlite3Dataset;
const OrderNumberField: string);
implementation
procedure Sqlite3DatasetKez_RowUp (const Sqlite3Dataset:TSqlite3Dataset;
const OrderNumberField: string);
var
num1, num2: integer;
begin
with Sqlite3Dataset do
begin
if not(TableExists) then exit;
num1:= FieldByName(OrderNumberField).AsInteger;
Prior;
if BOF then exit;
num2:= FieldByName(OrderNumberField).AsInteger;
Edit;
FieldByName(OrderNumberField).AsInteger:= num1;
Post;
Next;
Edit;
FieldByName(OrderNumberField).AsInteger:= num2;
Post;
ApplyUpdates;
//SQLTransaction1.CommitRetaining;
Close;
SQL:='SELECT * '+
'FROM '+
TableName+' '+
'ORDER BY '
+OrderNumberField+' '+
'ASC;';
Open;
//Refresh;
Locate(OrderNumberField, num2,[]);
end;
end;
procedure Sqlite3DatasetKez_RowDown (const Sqlite3Dataset:TSqlite3Dataset;
const OrderNumberField: string);
var
num1, num2: integer;
begin
with Sqlite3Dataset do
begin
if not(TableExists) then exit;
num1:= FieldByName(OrderNumberField).AsInteger;
Next;
if EOF then exit;
num2:= FieldByName(OrderNumberField).AsInteger;
Edit;
FieldByName(OrderNumberField).AsInteger:= num1;
Post;
Prior;
Edit;
FieldByName(OrderNumberField).AsInteger:= num2;
Post;
ApplyUpdates;
//SQLTransaction1.CommitRetaining;
Close;
SQL:='SELECT * '+
'FROM '+
TableName+' '+
'ORDER BY '
+OrderNumberField+' '+
'ASC;';
Open;
//Refresh;
Locate(OrderNumberField, num2,[]);
end;
end;
end.
Thanks again!