procedure yourprodname{你自己启过程名)( {这里列举你所用到的行参和具体类型} );
begin
If (TmpTime1<=B_Time1) And (TmpTime2>=B_Time2) Then
Begin
Pb_S :=B_Time1;
Pb_E :=B_Time2;
ADOQuery_APPEND(ADOQuery2,Userid1,Attnumber1, Name1,DateTimeToStr(Pb_S),DateTimeToStr(Pb_E));
End;
IF (TmpTime1>=B_Time1) And (TmpTIme2<=B_Time2) Then
Begin
Pb_S :=TmpTime1;
Pb_E :=TmpTime2;
ADOQuery_APPEND(ADOQuery2,Userid1,Attnumber1, Name1,DateTimeToStr(Pb_S),DateTimeToStr(Pb_E));
End;
end;
注意:如果你的行参需要向过程外部传送数据,请在行参前面写上 var 保留字。
begin
If (TmpTime1<=B_Time1) And (TmpTime2>=B_Time2) Then
Begin
Pb_S :=B_Time1;
Pb_E :=B_Time2;
ADOQuery_APPEND(ADOQuery2,Userid1,Attnumber1, Name1,DateTimeToStr(Pb_S),DateTimeToStr(Pb_E));
End;
IF (TmpTime1>=B_Time1) And (TmpTIme2<=B_Time2) Then
Begin
Pb_S :=TmpTime1;
Pb_E :=TmpTime2;
ADOQuery_APPEND(ADOQuery2,Userid1,Attnumber1, Name1,DateTimeToStr(Pb_S),DateTimeToStr(Pb_E));
End;
end;
注意:如果你的行参需要向过程外部传送数据,请在行参前面写上 var 保留字。
解决方案 »
- SocketConnection 连接问题 : scktsrvr.exe
- Dll调用问题??
- 如何将字段中不是中文字符去掉???
- 救命!我的源码没了,如何得到程序可执行体的某个控件的值?(在线等)
- dll与ocx区别
- 请问刚安装的Oracle8.05如何才能以SYSDBA身份进去
- 数据库查询的问题,多谢,多谢
- 请教大虾:详细讲解exit过程的作用范围,如在while中的if语句中的exit,是退出if还是while??
- 请问各位 NMSMTP1 中subType 和 EncodeType分别是什么意思?
- 为什么获取不到网页源代码
- 关于文凭的问题!给20分
- delphi中停泊窗口的问题。请高手自指教!
FBusiness_Look: TFBusiness_Look;
Function ADOQuery_APPEND(ADOQuery :TADOQuery;p1,p2 :Integer;p3,p4,p5 :String):Boolean;Forward;
Function ADOQuery_Userinfo(ADOQuery:TADOQuery;P1:Variant):Boolean;Forward;
Function Pb_Del(ADOQuery:TADOQuery):Boolean;Forward;
Function ADOQuery_Attnumber(ADOQuery:TADOQuery;P1:Variant):Boolean;Forward;
Function ADOQuery_Business(ADOQuery:TADOQuery;P1:Variant):Boolean;Forward;
implementation
{$R *.DFM}
Function ADOQuery_Business(ADOQuery:TADOQuery;P1:Variant):Boolean;
Begin
Try
Result :=True;
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('Select * From User_Business Where Userid=:F0');
ADOQuery.Parameters[0].Value :=P1;
ADOQuery.Prepared;
ADOQuery.Open;
Except
Result :=False;
End;
End;
Function ADOQuery_Attnumber(ADOQuery:TADOQuery;P1:Variant):Boolean;
Begin
Try
Result :=True;
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('Select * From Userinfo Where Attnumber=:F0');
ADOQuery.Parameters[0].Value :=P1;
ADOQuery.Prepared;
ADOQuery.Open;
Except
Result :=False;
End;
End;
Function Pb_Del(ADOQuery:TADOQuery):Boolean;
Begin
Try
Result :=True;
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('Delete * From PB');
ADOQuery.Prepared;
ADOQuery.ExecSQL;
Except
Result :=False;
End;
End;
Function ADOQuery_Userinfo(ADOQuery:TADOQuery;P1:Variant):Boolean;
Begin
Try
Result :=True;
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('Select Userid,Attnumber From Userinfo Where Deptid=:F0');
ADOQuery.Parameters[0].Value :=P1;
ADOQuery.Prepared;
ADOQuery.Open;
Except
Result :=False;
End;
End;
Function ADOQuery_APPEND(ADOQuery :TADOQuery;p1,p2 :Integer;p3,p4,p5 :String):Boolean;
Begin
Try
Result :=True;
ADOQuery.Open;
ADOQuery.Append;
ADOQuery.Fields[0].AsInteger :=P1;
ADOQuery.Fields[1].AsInteger :=p2;
ADOQuery.Fields[2].AsString :=p3;
ADOQuery.Fields[3].AsString :=P4;
ADOQuery.Fields[4].AsString :=p5;
ADOQuery.Post;
Except
Result :=False;
End;
End;procedure TFBusiness_Look.dxDBTreeView1Change(Sender: TObject;
Node: TTreeNode);
Var
Node1 :TTreeNode;
Min,Max,i :Integer;
Deptid1 :Integer;
Deptname1 :String;
begin
Pb_Del(ADOQuery2 );
ComBOBOx1.Clear;
ComBoBoX1.Items.Clear;
Node1 :=dxDBTreeView1.Selected;
If Node1.Level <> 0 Then
Begin
If Node1.HasChildren Then
Begin
Min :=Node1.getFirstChild.AbsoluteIndex;
While Node1.HasChildren Do
Node1 :=Node1.GetLastChild;
Max :=Node1.AbsoluteIndex;
For i:=Min-1 To Max Do
Begin
Deptname1 :=dxDBTreeView1.Items[i].Text;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select Deptid From Departments ');
ADOQuery1.SQL.Add('Where Deptname =:Fdeptname');
ADOQuery1.Parameters[0].Value :=Deptname1;
ADOQuery1.Prepared;
ADOQuery1.Open;
Deptid1 :=ADOQuery1.FieldByName('Deptid').AsInteger;
ADOQuery_Userinfo(ADOQuery1,Deptid1);
While Not ADOQuery1.Eof Do
Begin
ComBOBOx1.Items.Add(IntToStr(ADOQuery1.fieldByName('AttNumber').AsInteger));
ADOQuery1.Next;
End;
End;
End
Else //该节点没有字节点
Begin
ADOTable1.Open;
ADOTable1.Locate('Deptname',Node1.Text,[]);
Deptid1 :=ADOTable1.FieldByName('Deptid').AsInteger;
ADOQuery_Userinfo(ADOQuery1,Deptid1);
While Not ADOQuery1.Eof DO
Begin
ComBoBoX1.Items.Add(IntToStr(ADOQuery1.FieldByName('AttNumber').AsInteger));
ADOQuery1.Next;
End;
End;
End
Else //当前节点为根节点
Begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select Userid,Attnumber From Userinfo');
ADOQuery1.Prepared;
ADOQuery1.Open;
While Not ADOQuery1.Eof Do
Begin
ComBoBox1.Items.Add(IntToStr(ADOQuery1.FieldByName('AttNumber').AsInteger));
ADOQuery1.Next;
End;
End;
IF ComBoBox1.Items.Count>=2 Then
ComBoBOx1.Items.Add('<全部>');
End;procedure TFBusiness_Look.Button1Click(Sender: TObject);
Var
TmpTime1,TmpTime2 :TDateTime;
B_Time1,B_Time2 :TDateTime;
Pb_S,Pb_E :TDateTime;
N1 ,j,Userid1,Attnumber1 :Integer;
Name1 :String;
FADOQuery :TADOQuery;
begin
TmpTime1 :=Int(DateTimePicker1.DateTime)+Frac(DateTimePicker2.DateTime);
TmpTime2 :=Int(DateTimePicker3.DateTime)+Frac(DateTimePicker4.DateTime);
IF ComBoBox1.Text <> '' Then
Begin
If ComBoBox1.Text <> '<全部>' Then
Begin
FADOQuery :=TADOQuery.Create(Self);
FADOQuery.Connection :=ADOConnection1;
ADOQuery_Attnumber(FADOQuery,StrToInt(ComBoBox1.Text));
Userid1 :=FADOQuery.FieldByName('Userid').AsInteger;
Attnumber1 :=FADOQuery.FieldByName('Attnumber').AsInteger;
Name1 :=FADOQuery.FieldByName('Name').AsString;
FADOQuery.Free;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select * From User_Business Where Userid=:F0');
ADOQuery1.Parameters[0].Value :=Userid1;
ADOQuery1.Prepared;
ADOQuery1.Open;
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('Select * From Pb');
ADOQuery2.Prepared;
ADOQuery2.Open;
While Not ADOQuery1.Eof Do
Begin
B_Time1 :=StrToDateTime(ADOQuery1.FieldByName('B_StartDate').AsString);
B_Time2 :=StrToDateTime(ADOQuery1.FieldByName('B_EndDate').AsString);
If TmpTime1<=TmpTime2 Then
Begin
If (TmpTime1<=B_Time1) And (TmpTime2>=B_Time2) Then
Begin
Pb_S :=B_Time1;
Pb_E :=B_Time2;
ADOQuery_APPEND(ADOQuery2,Userid1,Attnumber1, Name1,DateTimeToStr(Pb_S),DateTimeToStr(Pb_E));
End;
IF (TmpTime1>=B_Time1) And (TmpTime2<=B_Time2) Then
Begin
Pb_S :=TmpTime1;
Pb_E :=TmpTime2;
ADOQuery_APPEND(ADOQuery2,Userid1,Attnumber1, Name1,DateTimeToStr(Pb_S),DateTimeToStr(Pb_E));
End;
If (TmpTime1<=B_Time1) And (TmpTime2>=B_Time1) And (TmpTime2<=B_Time2) Then
Begin
Pb_S :=B_Time1;
Pb_E :=TmpTime2;
ADOQuery_APPEND(ADOQuery2,Userid1,Attnumber1, Name1,DateTimeToStr(Pb_S),DateTimeToStr(Pb_E));
End;
If (TmpTime1>=B_Time1) And (TmpTime1<=B_Time2) And (TmpTime2>=B_Time2) Then
Begin
Pb_S :=TmpTime1;
Pb_E :=B_Time2;
ADOQuery_APPEND(ADOQuery2,Userid1,Attnumber1, Name1,DateTimeToStr(Pb_S),DateTimeToStr(Pb_E));
End;
End;
ADOQuery1.Next;
End;
End
Else //为<全部>
Begin
N1:=ComBoBox1.Items.Count;
J:=0;
While j<=N1-2 Do
//For j:=1 To N1-2 Do
Begin
FADOQuery :=TADOQuery.Create(Self);
FADOQuery.Connection :=ADOConnection1;
ADOQuery_Attnumber(FADOQuery,StrToInt(ComBoBOx1.Text));
Userid1 :=FADOQuery.FieldByName('Userid').AsInteger;
Attnumber1 :=FADOQuery.FieldByName('Attnumber').AsInteger;
Name1 :=FADOQuery.FieldByName('Name').AsString;
FADOQuery.Free;
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('Select * From Pb');
ADOQuery2.Prepared;
ADOQuery2.Open;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select * From User_Business Where Userid=:F0');
ADOQuery1.Parameters[0].Value :=Userid1;
ADOQuery1.Prepared;
ADOQuery1.Open;
While Not ADOQuery1.Eof Do
Begin
B_Time1 :=StrToDateTime(ADOQuery1.FieldByName('B_StartDate').AsString);
B_Time2 :=StrToDateTime(ADOQuery1.FieldByName('B_EndDate').AsString);
If TmpTime1<=TmpTime2 Then
Begin
If (TmpTime1<=B_Time1) And (TmpTime2>=B_Time2) Then
Begin
Pb_S :=B_Time1;
Pb_E :=B_Time2;
ADOQuery_APPEND(ADOQuery2,Userid1,Attnumber1, Name1,DateTimeToStr(Pb_S),DateTimeToStr(Pb_E));
End;
IF (TmpTime1>=B_Time1) And (TmpTIme2<=B_Time2) Then
Begin
Pb_S :=TmpTime1;
Pb_E :=TmpTime2;
ADOQuery_APPEND(ADOQuery2,Userid1,Attnumber1, Name1,DateTimeToStr(Pb_S),DateTimeToStr(Pb_E));
End;
// If (TmpTime1<=B_Time1) And (TmpTime2<=B_Time2) Then
// If (TmpTime1>=B_Time2) And (TmpTime2>=B_Time2) Then
If (TmpTime1<=B_Time1) And (TmpTime2>=B_Time1) And (TmpTime2<=B_Time2) Then
Begin
Pb_S :=B_Time1;
Pb_E :=TmpTime2;
ADOQuery_APPEND(ADOQuery2,Userid1,Attnumber1, Name1,DateTimeToStr(Pb_S),DateTimeToStr(Pb_E));
End;
If (TmpTime1>=B_Time1) And (TmpTime1<=B_Time2) And (TmpTime2>=B_Time2) Then
Begin
Pb_S :=TmpTime1;
Pb_E :=B_Time2;
ADOQuery_APPEND(ADOQuery2,Userid1,Attnumber1, Name1,DateTimeToStr(Pb_S),DateTimeToStr(Pb_E));
End;
End;
ADOQuery1.Next;
End;
J:=j+1;
End;End;
End;
Button1.Enabled :=False;
End;procedure TFBusiness_Look.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Button1.Enabled :=True;
Pb_Del(ADOQuery2 );
end;procedure TFBusiness_Look.ComboBox1Change(Sender: TObject);
begin
Pb_Del(ADOQuery2 );
Button1.Enabled :=True;
end;procedure TFBusiness_Look.DateTimePicker1Change(Sender: TObject);
begin
Pb_Del(ADOQuery2);
Button1.Enabled :=True;
end;procedure TFBusiness_Look.DateTimePicker2Change(Sender: TObject);
begin
Pb_Del(ADOQuery2);
Button1.Enabled :=True;
end;procedure TFBusiness_Look.DateTimePicker3Change(Sender: TObject);
begin
Pb_Del(ADOQuery2);
Button1.Enabled :=True;
end;procedure TFBusiness_Look.DateTimePicker4Change(Sender: TObject);
begin
Pb_Del(ADOQuery2);
Button1.Enabled :=True;
end;procedure TFBusiness_Look.Button2Click(Sender: TObject);
begin
Close;
end;
end.
Var
TmpTime1,TmpTime2 :TDateTime;
B_Time1,B_Time2 :TDateTime;
Pb_S,Pb_E :TDateTime;
N1 ,j,Userid1,Attnumber1 :Integer;
Name1 :String;
FADOQuery :TADOQuery;
procedure test ( FTmpTime1,FTmpTime2 :TDateTime;
FB_Time1,FB_Time2 :TDateTime);
var
Pb_S,Pb_E :TDateTime;
begin
If (TmpTime1<=B_Time1) And (TmpTime2>=B_Time2) Then
Begin
Pb_S :=B_Time1;
Pb_E :=B_Time2;
ADOQuery_APPEND(ADOQuery2,Userid1,Attnumber1, Name1,DateTimeToStr(Pb_S),DateTimeToStr(Pb_E));
End;
IF (TmpTime1>=B_Time1) And (TmpTime2<=B_Time2) Then
Begin
Pb_S :=TmpTime1;
Pb_E :=TmpTime2;
ADOQuery_APPEND(ADOQuery2,Userid1,Attnumber1, Name1,DateTimeToStr(Pb_S),DateTimeToStr(Pb_E));
End;
If (TmpTime1<=B_Time1) And (TmpTime2>=B_Time1) And (TmpTime2<=B_Time2) Then
Begin
Pb_S :=B_Time1;
Pb_E :=TmpTime2;
ADOQuery_APPEND(ADOQuery2,Userid1,Attnumber1, Name1,DateTimeToStr(Pb_S),DateTimeToStr(Pb_E));
End;
If (TmpTime1>=B_Time1) And (TmpTime1<=B_Time2) And (TmpTime2>=B_Time2) Then
Begin
Pb_S :=TmpTime1;
Pb_E :=B_Time2;
ADOQuery_APPEND(ADOQuery2,Userid1,Attnumber1, Name1,DateTimeToStr(Pb_S),DateTimeToStr(Pb_E));
End;
end ;
begin
TmpTime1 :=Int(DateTimePicker1.DateTime)+Frac(DateTimePicker2.DateTime);
TmpTime2 :=Int(DateTimePicker3.DateTime)+Frac(DateTimePicker4.DateTime);
IF ComBoBox1.Text <> '' Then
Begin
If ComBoBox1.Text <> '<全部>' Then
Begin
FADOQuery :=TADOQuery.Create(Self);
FADOQuery.Connection :=ADOConnection1;
ADOQuery_Attnumber(FADOQuery,StrToInt(ComBoBox1.Text));
Userid1 :=FADOQuery.FieldByName('Userid').AsInteger;
Attnumber1 :=FADOQuery.FieldByName('Attnumber').AsInteger;
Name1 :=FADOQuery.FieldByName('Name').AsString;
FADOQuery.Free;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select * From User_Business Where Userid=:F0');
ADOQuery1.Parameters[0].Value :=Userid1;
ADOQuery1.Prepared;
ADOQuery1.Open;
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('Select * From Pb');
ADOQuery2.Prepared;
ADOQuery2.Open;
While Not ADOQuery1.Eof Do
Begin
B_Time1 :=StrToDateTime(ADOQuery1.FieldByName('B_StartDate').AsString);
B_Time2 :=StrToDateTime(ADOQuery1.FieldByName('B_EndDate').AsString);
If TmpTime1<=TmpTime2 Then
Begin
test ( TmpTime1,TmpTime2 ,B_Time1,FB_Time2 );
End;
ADOQuery1.Next;
End;
End
Else //为<全部>
Begin
N1:=ComBoBox1.Items.Count;
J:=0;
While j<=N1-2 Do
//For j:=1 To N1-2 Do
Begin
FADOQuery :=TADOQuery.Create(Self);
FADOQuery.Connection :=ADOConnection1;
ADOQuery_Attnumber(FADOQuery,StrToInt(ComBoBOx1.Text));
Userid1 :=FADOQuery.FieldByName('Userid').AsInteger;
Attnumber1 :=FADOQuery.FieldByName('Attnumber').AsInteger;
Name1 :=FADOQuery.FieldByName('Name').AsString;
FADOQuery.Free;
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('Select * From Pb');
ADOQuery2.Prepared;
ADOQuery2.Open;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select * From User_Business Where Userid=:F0');
ADOQuery1.Parameters[0].Value :=Userid1;
ADOQuery1.Prepared;
ADOQuery1.Open;
While Not ADOQuery1.Eof Do
Begin
B_Time1 :=StrToDateTime(ADOQuery1.FieldByName('B_StartDate').AsString);
B_Time2 :=StrToDateTime(ADOQuery1.FieldByName('B_EndDate').AsString);
If TmpTime1<=TmpTime2 Then
Begin
test ( TmpTime1,TmpTime2 ,B_Time1,FB_Time2 );
End;
ADOQuery1.Next;
End;
J:=j+1;
End;End;
End;
Button1.Enabled :=False;
End;