程序运行一两天就会关掉.
我写的这个程序不断访问数据库(读数据).
用到了三个 TIMER 控件.
每天的数据有几千个.光是我的TIMER 控件就要处理 2000个数据.
我用的DBGrid 控件显示数据库表里面的数据.我还用设置了DBGrid 每次只显示10个记录.
10个记录处理完 NEXT 下一条记录...现在我的最大的难题是 ? 我的程序为什么会关掉.??是我的TIMER 有问题? 还是 DBGrid 里面积累了太多的数据(一天就有 8000条)每次我只显示了10条朋友们帮帮我了,十万火急 !!!!!! 小弟跪求有经验的朋友赐教.也谢谢帮我UP 的朋友!
我写的这个程序不断访问数据库(读数据).
用到了三个 TIMER 控件.
每天的数据有几千个.光是我的TIMER 控件就要处理 2000个数据.
我用的DBGrid 控件显示数据库表里面的数据.我还用设置了DBGrid 每次只显示10个记录.
10个记录处理完 NEXT 下一条记录...现在我的最大的难题是 ? 我的程序为什么会关掉.??是我的TIMER 有问题? 还是 DBGrid 里面积累了太多的数据(一天就有 8000条)每次我只显示了10条朋友们帮帮我了,十万火急 !!!!!! 小弟跪求有经验的朋友赐教.也谢谢帮我UP 的朋友!
三个TIMER 是各干各的事.
Timer1.Enabled:=false;
processData;
Timer1.Enabled:=true;你的信息太少,无法确定问题在啊.
procedure TForm1.Timer2Timer(Sender: TObject);
var
MNumber , RNumber ,R1 ,M1: string; // Place , Num , Car , Speed , FX1 , FX2 ,
MyJpeg , MyJpeg1 : TJPEGImage;
MyBmp ,Bmp0 , Bmp1 : TBitMap;
J , Speeds , NewSuport : integer;
NewSpeed , Middle : String;
begin
CreateDirTime;
With ADOQuery1 do
begin
JJNum := FieldByName('TXTPWZ').AsString; // 近景
YJNum := FieldByName('QJTPWZ').AsString; // 远景
CarNum := FieldByName('HPHM').AsString; //车牌号码
FXNum := FieldByName('FXBH').AsString; //方向编号
Speed := FieldByName('CLSD').AsString; //速度
CarColor := FieldByName('HPYS').AsString; //车的颜色
CarTime := FieldByName('jGSJ').AsDateTime; //Time
Randomize();
J := Random(8);
Speeds := StrToInt(Speed);
NewSuport := Speeds - J;
NewSpeed := IntToStr(NewSuport);
if FXNum = '2' then
FXNum := '1'
else
FXNum := '2';
M1 := Copy(YJNum , 30 , 6);
R1 := Copy(JJNum , 30 , 6);
DateSeparator := '-';
ShortDateFormat := 'yyyymmdd';
MNumber := XHRoadNo +'_'+ FXNum +'_'+ FXNumNB +'_'+ 'A' +'_'+DateToStr(CarTime)+'_'+ M1 +'_'+ NewSpeed +'_'+ CarNum +'.jpg';
RNumber := XHRoadNo +'_'+ FXNum +'_'+ FXNumNB +'_'+ 'B' +'_'+DateToStr(CarTime)+'_'+ R1 +'_'+ NewSpeed +'_'+ CarNum +'.jpg'; //Number := Str + '\' + Number;
MNumber := Str1 + '\' + MNumber;
RNumber := Str1 + '\' + RNumber;
ReNameFile(JJNum , RNumber);
ReNameFile(YJNum , MNumber);
Try
Try
MyJpeg := TJPEGImage.Create;
MyJpeg1 := TJPEGImage.Create;
MyBmp := TBitmap.Create;
Bmp0 := TBitmap.Create;
Bmp1 := TBitmap.Create; MyJpeg.LoadFromFile(MNumber);
MyJpeg1.LoadFromFile(RNumber);
MyBmp.Assign(MyJpeg);
Bmp0.Assign(MyJpeg1); Bmp1.PixelFormat := Bmp0.PixelFormat;
Bmp1.Width := Widths;
Bmp1.Height := Heights;
Bmp1.Canvas.StretchDraw(Bounds(0,0,Bmp1.Width,Bmp1.Height),Bmp0);
MyBmp.Canvas.Brush.Color := clyellow;
MyBmp.Canvas.Font.Name := '宋体';
MyBmp.Canvas.Font.Size := 12;
MyBmp.Canvas.Font.Color := clred;
MyBmp.Canvas.TextOut(1 , 220 , '西环高架干将路' + '' + DateTimeToStr(CarTime)+'' + '超速' + ''+ Speed + 'Km/h');
MyJpeg1.Assign(Bmp1);
MyJpeg.Assign(MyBmp);
MyJpeg.SaveToFile(MNumber);
MyJpeg1.SaveToFile(RNumber);
Except
end;
Finally
MyBmp.Free;
MyJpeg.Free;
Bmp0.Free;
Bmp1.Free;
MyJpeg1.Free;
end;
Next;
RrushBase;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.Text := 'Select * from PASSED_CAR where JGSJ >= :sd and HPHM<>''*'' and CLSD >= ''85'' and CLSD <=''160''';
ADOQuery1.Parameters.ParamValues['sd'] := datetostr(DateTimePicker1.Date);
ADOQuery1.Open;
Timer2.Enabled := True;
end;procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
TStringgrid(DBGrid1).RowCount := 11;
end;procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := False;
end;
还有就是瑞星升级完时,我的这个程序就会被杀死掉了。
和你那个差不多,我估计是DBGrid 表数据太大造成的.
SQL语句如下:ADOQuery1.SQL.Text := 'Select * from PASSED_CAR where JGSJ >= :sd and HPHM<>''*'' and CLSD >= ''85'' and CLSD <=''160'''; JGSJ >= :sd 我在想问题会不会是出在这里.
我打算换一种方式去每天刷新数据...