Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ðÒÏÂÌÅÍÁ, D7 + ADO + MySQL5

3 views
Skip to first unread message

Eugeny Ipatov

unread,
Oct 14, 2007, 3:59:36 AM10/14/07
to
Привет, All!

Исходный текст:

procedure FormRightQueryStrings(ObjType : TSecurityObjType; Obj : Integer;
SubjType : TSecurityObjType; Subj : Integer; var ObjS, SubjS : String);
begin
if ObjType<>objDefault then
begin
ObjS:=format('OType = %d AND OID = %d', [Integer(ObjType), Integer(Obj)]);
end else ObjS:=format('OType = %d', [Integer(ObjType)]);
if SubjType<>objDefault then
begin
SubjS:=format('SType = %d AND SID = %d', [Integer(SubjType),
Integer(Subj)]);
end else SubjS:=format('SType = %d', [Integer(SubjType)]);
end;


function FormRightQueryString(ObjType : TSecurityObjType; Obj : Integer;
SubjType : TSecurityObjType; Subj : Integer) : String;
var ObjS,
SubjS : String;
begin
FormRightQueryStrings(ObjType, Obj, SubjType, Subj, ObjS, SubjS);
Result:=format(
'SELECT * FROM rights WHERE %s AND %s;',
[ObjS, SubjS]
);
end;

procedure TMainPage.SetRights;
var Table : TADOTable;
ObjS,
SubjS : String;
begin
FormRightQueryStrings(ObjType, Obj, SubjType, Subj, ObjS, SubjS);
Table:=TADOTable.Create(Self);
try
Table.Connection:=WebDataModule1.ADOConnection1;
Table.TableName:='rights';
Table.Filter:=ObjS + ' AND ' + SubjS;
Table.Filtered:=true;
Table.Open;
Table.Edit;
Table.FindField('OType').AsInteger:=Integer(ObjType);
Table.FindField('OID').AsInteger:=Obj;
Table.FindField('SType').AsInteger:=Integer(SubjType);
Table.FindField('SID').AsInteger:=Subj;
Table.FindField('View').AsInteger:=Integer(Rights[secView]);
Table.FindField('Post').AsInteger:=Integer(Rights[secPost]);
Table.FindField('Comment').AsInteger:=Integer(Rights[secComment]);
Table.FindField('SpecPost').AsInteger:=Integer(Rights[secSpecPost]);
Table.FindField('Moderate').AsInteger:=Integer(Rights[secModerate]);
Table.FindField('Admin').AsInteger:=Integer(Rights[secAdmin]);
Table.FindField('SplitTo').AsInteger:=Integer(Rights[secSplitTo]);
Table.Post;
finally
Table.Free;
end;
end;

В результате, если в базе отсутствует запись, то она создаётся нормально. Если
такая запись уже есть, то он почему-то не может её сабдейтить:

"Hе удается найти строку для обновления. Hекоторые значения могли быть изменены
со времени ее последнего чтения"

* Оpигинал в ru.delphi
* Также послано в ru.delphi.db
* Также послано в ru.delphi.master

Eugeny

0 new messages