|
|
@@ -9,6 +9,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
unit RealICQDBHistory;
|
|
|
|
|
|
interface
|
|
|
@@ -109,6 +113,7 @@ type
|
|
|
procedure SetDBFileName(Value: string);
|
|
|
procedure SetLoginName(Value: string);
|
|
|
procedure CheckFieldTeamID;
|
|
|
+ function AddColumn(ATable, AColumn, TypeName, DefaultValue: string): Boolean;
|
|
|
protected
|
|
|
public
|
|
|
constructor Create;
|
|
|
@@ -740,7 +745,7 @@ begin
|
|
|
ADODataSet := TADODataSet.Create(nil);
|
|
|
try
|
|
|
ADODataSet.Connection := FADOConnection;
|
|
|
- ADODataSet.CommandText := 'SELECT Top 1000 Sender,Receiver FROM Messages WHERE (Receiver = ''' + AReceiver + ''' or Sender=''' + AReceiver + ''') AND TeamID = ''-1'' ORDER BY SendDateTime DESC';
|
|
|
+ ADODataSet.CommandText := 'SELECT Top 1000 Sender,Receiver FROM Messages WHERE (Receiver = ''' + AReceiver + ''' or Sender=''' + AReceiver + ''') AND TeamID = ''-1'' ORDER BY ID DESC';
|
|
|
|
|
|
ADODataSet.Open;
|
|
|
while not ADODataSet.Eof do
|
|
|
@@ -1301,51 +1306,61 @@ begin
|
|
|
OpenDBConntion;
|
|
|
FDesKey := Copy(MD5En(FLoginName), 25, 8);
|
|
|
UpdateMsgDB;
|
|
|
+end;
|
|
|
+
|
|
|
+function TRealICQDBHistory.AddColumn(ATable, AColumn, TypeName, DefaultValue: string): Boolean;
|
|
|
+var
|
|
|
+ ADOQuery: TADOQuery;
|
|
|
+ sqlStr: string;
|
|
|
+ AField: TField;
|
|
|
+begin
|
|
|
+ ADOQuery := TADOQuery.Create(nil);
|
|
|
+ ADOQuery.Connection := FADOConnection;
|
|
|
+
|
|
|
+ try
|
|
|
+ ADOQuery.SQL.Text := Format('SELECT * FROM %s WHERE 1 = 2;', [ATable]);
|
|
|
+ ADOQuery.Open;
|
|
|
+ if ADOQuery.FindField(AColumn) = nil then
|
|
|
+ begin
|
|
|
+ ADOQuery.SQL.Text := Format('ALTER TABLE %s Add COLUMN %s %s;', [ATable, AColumn, TypeName]);
|
|
|
+ ADOQuery.ExecSQL;
|
|
|
+ ADOQuery.SQL.Text := Format('Update %s Set %s=%s;', [ATable, AColumn, DefaultValue]);
|
|
|
+ ADOQuery.ExecSQL;
|
|
|
+ end;
|
|
|
+ ADOQuery.Close;
|
|
|
+ except
|
|
|
+ on Ex: Exception do
|
|
|
+ begin
|
|
|
+ Error(Ex.Message, 'TRealICQDBHistory.AddColumn');
|
|
|
+ FreeAndNil(ADOQuery);
|
|
|
+ end;
|
|
|
+ end;
|
|
|
+ FreeAndNil(ADOQuery);
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
//Éý¼¶ÏûÏ¢Êý¾Ý¿â
|
|
|
procedure TRealICQDBHistory.UpdateMsgDB;
|
|
|
var
|
|
|
ADOCommand: TADOCommand;
|
|
|
begin
|
|
|
try
|
|
|
- ADOCommand := TADOCommand.Create(nil);
|
|
|
- try
|
|
|
- ADOCommand.Connection := FADOConnection;
|
|
|
- try
|
|
|
- ADOCommand.CommandText := 'delete from Messages where teamid = "" or teamid is null ';
|
|
|
- ADOCommand.Execute;
|
|
|
-
|
|
|
- ADOCommand.CommandText := 'update Messages set [Sender] = Right([Sender], Len([Sender]) - Instr([Sender],"+")), [Receiver] = Right([Receiver], Len([Receiver]) - Instr([Receiver],"+")) ';
|
|
|
- ADOCommand.Execute;
|
|
|
-
|
|
|
- ADOCommand.CommandText := 'ALTER TABLE Messages Add COLUMN IsPrivateMessage bit ';
|
|
|
- ADOCommand.Execute;
|
|
|
-
|
|
|
- ADOCommand.CommandText := 'Update Messages Set IsPrivateMessage=false';
|
|
|
- ADOCommand.Execute;
|
|
|
-
|
|
|
- ADOCommand.CommandText := 'ALTER TABLE Messages Add COLUMN IsRead bit ';
|
|
|
- ADOCommand.Execute;
|
|
|
-
|
|
|
- ADOCommand.CommandText := 'Update Messages Set IsRead=true';
|
|
|
- ADOCommand.Execute;
|
|
|
- except
|
|
|
- //
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- end;
|
|
|
- finally
|
|
|
- ADOCommand.Free;
|
|
|
- end;
|
|
|
- ADOCommand.Free;
|
|
|
+ ADOCommand := TADOCommand.Create(nil);
|
|
|
+ ADOCommand.Connection := FADOConnection;
|
|
|
+ ADOCommand.CommandText := 'delete from Messages where teamid = "" or teamid is null ';
|
|
|
+ ADOCommand.Execute;
|
|
|
+ ADOCommand.CommandText := 'update Messages set [Sender] = Right([Sender], Len([Sender]) - Instr([Sender],"+")), [Receiver] = Right([Receiver], Len([Receiver]) - Instr([Receiver],"+")) ';
|
|
|
+ ADOCommand.Execute;
|
|
|
+ AddColumn('Messages', 'IsPrivateMessage', 'bit', 'false');
|
|
|
+ AddColumn('Messages', 'IsRead', 'bit', 'true');
|
|
|
except
|
|
|
on E: Exception do
|
|
|
begin
|
|
|
+ ADOCommand.Free;
|
|
|
Error(E.Message, 'TRealICQDBHistory.UpdateMsgDB');
|
|
|
end;
|
|
|
end;
|
|
|
+ ADOCommand.Free;
|
|
|
end;
|
|
|
|
|
|
//------------------------------------------------------------------------------
|