📄 untcommons.pas
字号:
Result:=formatDatetime('yyyy-MM-dd hh:mm:ss',now());
end;
function Tcommons.GetUserName(const DBName, UserCode,
PassWord: WideString): WideString;
var
cmdStr:String;
AdoQ:Tadoquery;
begin
try
cmdStr:='select fname from tuser where fcode='+vartosql(UserCode)+' and fpwd='+vartosql(Password);
AdoQ:=GetNewAdoquery;
if OpenindicatinnDB(DBname) then
begin
aopensql:=Topensql.create(AdoQ,cmdStr);
aopensql.Execute;
if AdoQ.RecordCount>0 then
Result:=Adoq.fieldbyname('fname').AsString
else
Result:='';
end
else
Result:='';
finally
FreeExistAdoquery(AdoQ);
Aopensql.Free;
end;
end;
function Tcommons.GetUserRight(const DBName: WideString;
UserID: Integer): OleVariant;
var
CL:TRTLCriticalSection;
Q:Tadoquery;
CDS:Tclientdataset;
DSP:Tdatasetprovider;
cmdStr:String;
begin
try
InitializeCriticalSection(CL);
EnterCriticalSection(CL);
cmdStr:='Exec pGetRight :@UserID';
Q:=GetNewAdoquery;
CDS:=GetNewClientdataset;
DSP:=GetNewDatasetProvider;
CDS.Active:=False;
if OpenindicatinnDB(DBname) then
begin
DSP.DataSet:=Q;
CDS.SetProvider(DSP);
Q.Close;
Q.SQL.Clear;
Q.SQL.Text:=CmdStr;
Q.Parameters.ParamByName('@UserID').Value:=UserID;
CDS.Active:=True;
Result:=CDS.Data;
end;
finally
FreeExistClientDataset(CDS);
FreeExistDatasetProvider(DSP);
FreeExistAdoquery(Q);
LeaveCriticalSection(CL);
end;
end;
function Tcommons.GetVehicleStatus(const DBName: WideString): OleVariant; safecall;
var
CL:TRTLCriticalSection;
Q:Tadoquery;
CDS:Tclientdataset;
DSP:Tdatasetprovider;
cmdStr:String;
begin
try
InitializeCriticalSection(CL);
EnterCriticalSection(CL);
cmdStr:='Exec phastenvehicle';
Q:=GetNewAdoquery;
CDS:=GetNewClientdataset;
DSP:=GetNewDatasetProvider;
CDS.Active:=False;
if OpenindicatinnDB(DBname) then
begin
DSP.DataSet:=Q;
CDS.SetProvider(DSP);
Q.Close;
Q.SQL.Clear;
Q.SQL.Text:=CmdStr;
CDS.Active:=True;
Result:=CDS.Data;
end;
finally
FreeExistClientDataset(CDS);
FreeExistDatasetProvider(DSP);
FreeExistAdoquery(Q);
LeaveCriticalSection(CL);
end;
end;
function Tcommons.GetVIPID(const DBName: WideString;
CustomerID: Integer): Integer;
var
cmdStr:String;
AdoQ:Tadoquery;
begin
try
cmdStr:='Select fID from tvip where fCustomerID='+Vartosql(CustomerID);
AdoQ:=GetNewAdoquery;
if OpenindicatinnDB(DBname) then
begin
aopensql:=Topensql.create(AdoQ,cmdStr);
aopensql.Execute;
if AdoQ.RecordCount>0 then
Result:=AdoQ.fieldbyname('fid').AsInteger
else
Result:=0;
end
else
Result:=0;
finally
FreeExistAdoquery(AdoQ);
Aopensql.Free;
end;
end;
function Tcommons.IntransAction: boolean;
begin
if DMServer.AdoConMain.InTransaction then
Result:=True
else
Result:=False;
end;
function Tcommons.IsUnique(const DBName, TableName, MasterField,
CheckValue: WideString): WordBool;
var
cmdStr:String;
AdoQ:Tadoquery;
begin
try
cmdStr:='Select '+MasterField+' from '+TableName+' where '+MasterField+'='+Vartosql(CheckValue);
AdoQ:=GetNewAdoquery;
if OpenindicatinnDB(DBname) then
begin
aopensql:=Topensql.create(AdoQ,cmdStr);
aopensql.Execute;
if AdoQ.RecordCount>0 then
Result:=True
else
Result:=False;
end
else
Result:=False;
finally
FreeExistAdoquery(AdoQ);
Aopensql.Free;
end;
end;
function Tcommons.IsVip(const DBName: WideString; Cid: Integer): WordBool;
var
cmdStr:String;
AdoQ:Tadoquery;
begin
try
cmdStr:='Select fcustomerID from tvip where fcustomerID='+Vartosql(Cid);
AdoQ:=GetNewAdoquery;
if OpenindicatinnDB(DBname) then
begin
aopensql:=Topensql.create(AdoQ,cmdStr);
aopensql.Execute;
if AdoQ.RecordCount>0 then
Result:=True
else
Result:=False;
end
else
Result:=False;
finally
FreeExistAdoquery(AdoQ);
Aopensql.Free;
end;
end;
function Tcommons.OpenindicatinnDB(DBname:String):Boolean;
var
Q:Tadoquery;
begin
Result:=False;
if DBname='' then
DBname:='Master';
try
Q:=Tadoquery.Create(nil);
Q.Connection:=DmServer.AdoConMain;
with Q do
begin
Close;
sql.Clear;
Sql.Text:='Use '+DBname;
Execsql;
end;
Result:=True;
finally
Q.Close;
Q.SQL.Clear;
Q.Free;
end;
end;
procedure Tcommons.RollbackTrans;
begin
dmServer.AdoConMain.RollbackTrans;
end;
function Tcommons.SysLog(const DBName,Fstate,Fform, Fevent, Fuser,
Fpcname: WideString): WordBool;
const
fdate='yyyy-MM-dd';
ftime='hh:mm:ss';
var
sqlstr:String;
AdoQ:Tadoquery;
fMts:TstatusThread;
begin
try
if DBName='MASTER' then
begin
sqlstr:='';
end
else
sqlstr:='Insert into tsyslog(fstate,fdate,ftime,fform,fevent,fuser,fpcname) values('
+vartosql(fstate)+','
+vartosql(formatDatetime(fdate,now()))+','
+vartosql(formatDatetime(ftime,now()))+','
+vartosql(fform)+','
+vartosql(fevent)+','
+vartosql(fuser)+','
+vartosql(fpcname)+')';
AdoQ:=GetnewAdoquery;
if openindicatinnDB(DBName) then
begin
aexecSQL:=Texecsql.Create(adoq,sqlstr);
aexecsql.Execute;
fMts:=TstatusThread.Create(fuser,fform,'Normal',fevent);
Result:=True;
end
else
begin
fMts:=TstatusThread.Create(fuser,fform,'Failed',fevent);
Result:=False;
end;
finally
freeExistAdoquery(adoq);
aexecsql.Free;
end;
end;
function Tcommons.vartosql(value: Variant): String;
begin
if varisnull(Value) then
Result:='NULL'
else
case Vartype(value) of
varDate:
Result:=Quotedstr(Datetimetostr(VartoDatetime(Value)));
varString,varOlestr:
Result:=Quotedstr(Trim(Vartostr(Value)));
varboolean:
begin
if Value then
Result:='1'
else
Result:='0';
end;
else
Result:=Quotedstr(Trim(Vartostr(Value)));
end;
end;
function Tcommons.VehicleRent(const DBName, Vcode, Sdate, Edate: WideString): OleVariant;
var
CL:TRTLCriticalSection;
Q:Tadoquery;
CDS:Tclientdataset;
DSP:Tdatasetprovider;
cmdStr:String;
begin
try
InitializeCriticalSection(CL);
EnterCriticalSection(CL);
cmdStr:='Exec pVehicleRentQuery :@Vcode,:@Sdate,:@Edate';
Q:=GetNewAdoquery;
CDS:=GetNewClientdataset;
DSP:=GetNewDatasetProvider;
CDS.Active:=False;
if OpenindicatinnDB(DBname) then
begin
DSP.DataSet:=Q;
CDS.SetProvider(DSP);
Q.Close;
Q.SQL.Clear;
Q.SQL.Text:=CmdStr;
Q.Parameters.ParamByName('@Vcode').Value:=Vcode;
Q.Parameters.ParamByName('@Sdate').Value:=Sdate;
Q.Parameters.ParamByName('@Edate').Value:=Edate;
CDS.Active:=True;
Result:=CDS.Data;
end;
finally
FreeExistClientDataset(CDS);
FreeExistDatasetProvider(DSP);
FreeExistAdoquery(Q);
LeaveCriticalSection(CL);
end;
end;
function Tcommons.WriteBalance(const DBName: WideString; pStatus,
pBillStatus: Integer; const pNo, pBillName: WideString;
pCusTomerID: Integer; const pRemark: WideString; pOverk, Poverf,
Povert, pHire, pMortgage, pPMortgage, pPMainTain, pPBenZine,
pPOther: Single; const pCreaUser: WideString): WordBool;
var
sqlstr:String;
AdoQ:Tadoquery;
begin
sqlstr:='';
try
case pStatus of
1:
Begin
sqlStr:= sqlStr+'Insert into tBalance(fBillStatus,fno,fBillName,';
sqlStr:= sqlStr+'fDate,fCustomerID,fRemark,fOverK,fOverf,fOvert,';
sqlStr:= sqlStr+'fHire,fMortgage,fPmortgage,fpMainTain,';
sqlStr:= sqlStr+'fpBenZine,fpOther,fCreaUser,fOrderFlag) values('
+vartosql(pBillStatus)+','
+vartosql(pno)+','
+vartosql(pBillName)+','
+vartosql(GetServerTime)+','
+vartosql(pCustomerID)+','
+vartosql(pRemark)+','
+vartosql(pOverk)+','
+vartosql(pOverf)+','
+vartosql(pOvert)+','
+vartosql(pHire)+','
+vartosql(pMortgage)+','
+vartosql(ppMortgage)+','
+vartosql(ppMaintain)+','
+vartosql(ppBenZine)+','
+vartosql(ppOther)+','
+vartosql(pCreaUser)+','
+vartosql(1)+')';
end;
2:
Begin
sqlstr:=sqlstr+' Update tBalance set fOrderFlag=0,fnote='+vartosql('该单据被'+pCreaUser+'修改,不能入帐。最后修改时间为'+GetServerTime());
sqlstr:=sqlstr+' where fno='+vartosql(pNo)+' and fid=(Select max(fid) as fid from tBalance where fno='+Vartosql(pno)+')';
sqlStr:= sqlStr+' Insert into tBalance(fBillStatus,fno,fBillName,';
sqlStr:= sqlStr+'fDate,fCustomerID,fRemark,fOverK,fOverf,fOvert,';
sqlStr:= sqlStr+'fHire,fMortgage,fPmortgage,fpMainTain,';
sqlStr:= sqlStr+'fpBenZine,fpOther,fModiUser,fOrderFlag) values('
+vartosql(pBillStatus)+','
+vartosql(pno)+','
+vartosql(pBillName)+','
+vartosql(GetServerTime)+','
+vartosql(pCustomerID)+','
+vartosql(pRemark)+','
+vartosql(pOverk)+','
+vartosql(pOverf)+','
+vartosql(pOvert)+','
+vartosql(pHire)+','
+vartosql(pMortgage)+','
+vartosql(ppMortgage)+','
+vartosql(ppMaintain)+','
+vartosql(ppBenZine)+','
+vartosql(ppOther)+','
+vartosql(pCreaUser)+','
+vartosql(1)+')';
end;
3:
begin
sqlstr:=sqlstr+' Update tBalance set fOrderFlag=0,fnote='+vartosql('该单据被'+pCreaUser+'删除,不能入帐。最后删除时间为'+GetServerTime());
sqlstr:=sqlstr+' where fno='+vartosql(pNo)+' and fid=(Select max(fid) as fid from tBalance where fno='+Vartosql(pno)+')';
end;
end;
AdoQ:=GetnewAdoquery;
if openindicatinnDB(DBName) then
begin
aexecSQL:=Texecsql.Create(adoq,sqlstr);
aexecsql.Execute;
Result:=True;
end
else
begin
Result:=False;
end;
finally
freeExistAdoquery(adoq);
aexecsql.Free;
end;
end;
function Tcommons.WriteDraft(const DBName: WideString; pStatus: Integer;
const pBillName, pBillNo, pBillSelfNo, pCompany, pRemark,
pCreaUser: WideString): WordBool;
var
sqlstr:String;
AdoQ:Tadoquery;
begin
try
case pStatus of
1:
sqlstr:='Insert into tDraft(fdate,fbillName,fbillNo,fbillSelfNo,fCompany,fRemark,fCreaUser) values('
+vartosql(GetServerTime)+','
+vartosql(pBillName)+','
+vartosql(pBillNo)+','
+vartosql(pBillSelfNo)+','
+vartosql(pCompany)+','
+vartosql(pRemark)+','
+vartosql(pCreaUser)+')';
2:
sqlstr:='update tDraft set fdate='+vartosql(GetServerTime)+','+
'fbillSelfNo='+vartosql(pBillSelfNo)+','+
'fCompany='+vartosql(pCompany)+','+
'fRemark='+vartosql(pRemark)+','+
'fModiUser='+vartosql(pCreaUser)+
' where fBillno='+vartosql(pbillNo);
3:
sqlstr:='Delete tDraft where fbillNo='+vartosql(pbillNo);
end;
AdoQ:=GetnewAdoquery;
if openindicatinnDB(DBName) then
begin
aexecSQL:=Texecsql.Create(adoq,sqlstr);
aexecsql.Execute;
Result:=True;
end
else
begin
Result:=False;
end;
finally
freeExistAdoquery(adoq);
aexecsql.Free;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -