解决方案 »
- 向网页(登陆页)传递用户信息抛出异常,急急急急急急!!!!
- DELPHI判断本机是否有摄像头
- 单击dbgrid中的某一行之后,如何根据规定的项目取得dbgrid中的数据。
- 使用ShellExecute调用一个程序,如何知道该程序什么结束呢?
- 简单问题,谁会?
- 急需Map Guide方面的帮助资料。。。。。
- 在DELPHI里怎样使用cookies,多谢帮助,
- 高兴呀!以后晚上也可以看见大家了!散分!
- 如何使用Terminal Services client?
- 有哪位知道infopower4000pro_vcl6的注册码和密码?
- 文件被其他程序于独占模式打开,我如何才能操作这个文件?急!!
- 类型转换问题!
if (combobox1.itemindex>0) and (edit1.text<>'') then
sql:=sql+' where '+combobox1.text+'='+#39+edit1.text+#39;
...
procedure TFrmPosI44FtrS.BitBtn1Click(Sender: TObject);
var aStrX,aStrSQL:String; aStrB,aStrE,aStrFilter:String;
aStrFldNm1,aStrFldNm2,aStrFldNm3,aStrFldNm4:ShortString;
aBeFirst:Boolean;begin
try
aStrFilter:='';
aBeFirst:=True;//標誌是否初次遇到有效條件;
////處理日期篩選條件:////
aStrX:='';
aStrFldNm1:='POSTM.TM003';
aStrB:=trim(EdtDateB.Text); //(開}{始}{日}{期)
aStrE:=trim(EdtDateE.Text);//(結束日期)
if (aStrB<>'') then
begin
if (aStrE='') then
begin
aStrX:='('+aStrFldNm1+'>='+USDlmt+aStrB+USDlmt+')';
end else
begin
aStrX:='(('+aStrFldNm1+'>='+USDlmt+aStrB+USDlmt+')and('+aStrFldNm1+'<='+USDlmt+aStrE+USDlmt+'))';
end;
end else if (aStrE<>'') then
begin
aStrX:='('+aStrFldNm1+'<='+USDlmt+aStrE+USDlmt+')';
end;
if (aStrX<>'') then
begin
aStrFilter:=aStrX;
aBeFirst:=False;
end;
////End of 處理日期篩選條件////
//獲取ListBox中的多項"或"關係的篩選條件:
aStrFldNm2:='POSTM.TM008';
aStrX:=fGetFltr1Fld(ListBox1.Items,aStrFldNm2);
//收集前面的條件成為與(AND)關係:
if aStrX<>'' then //有條件內容則:
begin
//非首次,則加上' AND ':
if Not aBeFirst then aStrFilter:=aStrFilter+' AND ';
//連起來:
aStrFilter:=aStrFilter+aStrX;
aBeFirst:=False;
end;
////確認碼:
aStrFldNm3:='POSTN.TN012';
aStrB:=Trim(CmbBxQueRen.Text);
aStrE:=fGetHead(aStrB);
if aStrE<>'' then
begin
aStrX:='('+aStrFldNm3+'='+USDlmt+aStrE+USDlmt+')';
end else
begin
aStrX:='';
end;
//收集條件:
if aStrX<>'' then
begin
if Not aBeFirst then aStrFilter:=aStrFilter+' AND ';
aStrFilter:=aStrFilter+aStrX;
aBeFirst:=False;
end;
////簽回碼:
aStrFldNm4:='POSTN.S_SGN';
aStrB:=Trim(CmbBxQianHui.Text);
aStrE:=fGetHead(aStrB);
if aStrE<>'' then
begin
if aStrE='N' then
begin //特殊處理簽回碼為'N'的狀況:
aStrX:='(('+aStrFldNm4+'='+USDlmt+aStrE+USDlmt+')OR('+aStrFldNm4+'='+USDlmt+''+USDlmt+')OR('+aStrFldNm4+' IS NULL))';
end else
begin
aStrX:='('+aStrFldNm4+'='+USDlmt+aStrE+USDlmt+')';
end;
end else
begin
aStrX:='';
end;
//收集條件:
if aStrX<>'' then
begin
if Not aBeFirst then aStrFilter:=aStrFilter+' AND ';
aStrFilter:=aStrFilter+aStrX;
//aBeFirst:=False;//最後一次不要;
end;
if aStrFilter<>'' then
begin
aStrFilter:=' WHERE ('+aStrFilter+') ';
end;
///////////////// 收集條件 END //////////////////////// //顯示報表:
aStrSQL:='SELECT MIN (TN008) AS TN008,MIN (TN004) AS TN004,MIN (TN005) AS TN005,MIN (TN006) AS TN006,MIN(TN007) AS TN007,SUM(TN010) AS TN010 FROM POSTN '
+'INNER JOIN POSTM ON ((POSTM.TM001=POSTN.TN001) AND ( POSTM.TM002=POSTN.TN002)) '
+aStrFilter
+' GROUP BY TN008,TN004,TN005 '
+' ORDER BY TN008,TN004,TN005' ;
if not assigned(QRPT6) then
QRPT6:=TQRPT6.Create(application);
with QRpt6.QryRTM do
begin
aStrX:=SQL.Text;
if aStrX<>aStrSQL then
begin
Active:=False;
Filter:='';
Filtered:=False;
SQL.Text:=aStrSQL; end;
if not Active then
begin
Active:=True;
end;
end;
if QRPT6.QryRTM.RecordCount<=0 then
begin
Showmessage('沒有符合條件的紀錄.');
exit;
end;
//////////對報表窗體控件標題設置://////
aStrB:=trim(EdtDateB.Text); //(開}{始}{日}{期)
aStrE:=trim(EdtDateE.Text);//(結束日期)
aStrB:=LeftStr(aStrB+' ',8);
aStrE:=LeftStr(aStrE+' ',8);
QRpt6.qrlabel2.Caption:=aStrB+' To '+aStrE; ///////////////////////////////////////
QRpt6.Preview;
except
on E:exception do
showmessage(E.message);
end;
///////////////////////////////////////
end;