程序中使用的自動翻譯出的SQL語句(一張"件薪"員工的單據):<br>自定義項目中是1位小數的翻譯成Round( 公式 +0.001,1),是2位小數的翻譯成Round( 公式 +0.0001,2),.... 是整數的翻譯成Round( 公式 +0.01,0), 每個項目都是中文,公式中自己翻譯成相應的英文.復合的項目翻譯用它本身的公式替代,直到沒有復合的項目( 有可能有死循環,因為公式變量之間的互相嵌套,因此,設置循環次數限制為10次內, 如F01=3.42*1.5,I02=F01*T201, 翻譯后:I02=取一位小數(取一位小數(3.42*1.5)*T201)),不能有F01等計算字段. 3.42是東莞的最低工資標准,*1.5是正常加班時時薪是3.42的1.5倍,*2是周六日加班,*3是節假日加班, T201,TimeWage,D01等項目是來源於考勤表,基本資料表,薪資表,住宿表等其它表單中的項目,由用戶指定到薪資表中,其它基本項目(非計算字段)都有指定的來源,自動翻譯后如下:<br>UPDATE PayrollDetail SET EmployeeID=EmployeeID,[I01]=Round((27.4*ST02)+0.001,1),[F01]=Round((3.42*1.5)+0.001,1),[I02]=Round(((Round((3.42*1.5)+0.001,1))*T201)+0.001,1),[F02]=Round((3.42*2.0)+0.001,1),[I03]=Round(((Round((3.42*2.0)+0.001,1))*(T202+T203))+0.001,1),[F03]=Round((3.42*3)+0.001,1),[I04]=Round((3.42*3.0*T204)+0.001,1),[I06]=Round((CASE WHEN TimeWage>27.4 THEN (TimeWage-27.4)*(ST01+C203) ELSE 0 END)+0.001,1),[I09]=Round((CASE WHEN T504>0 THEN 3.42*T504 ELSE 0 END)+0.001,1),[F10]=Round(((Round((27.4*ST02)+0.001,1))+(Round(((Round((3.42*1.5)+0.001,1))*T201)+0.001,1))+(Round(((Round((3.42*2.0)+0.001,1))*(T202+T203))+0.001,1))+(Round((3.42*3.0*T204)+0.001,1))+I05+(Round((CASE WHEN T504>0 THEN 3.42*T504 ELSE 0 END)+0.001,1))+I07+I10+F07+F04+(Round((CASE WHEN TimeWage>27.4 THEN (TimeWage-27.4)*(ST01+C203) ELSE 0 END)+0.001,1))+F08)+0.001,1),[D06]=Round((T304/60*3.42)+0.001,1),[F11]=Round((D01+D03+D05+D02+D04+(Round((T304/60*3.42)+0.001,1))+D07)+0.001,1),[PayableWage]=Round(((Round(((Round((27.4*ST02)+0.001,1))+(Round(((Round((3.42*1.5)+0.001,1))*T201)+0.001,1))+(Round(((Round((3.42*2.0)+0.001,1))*(T202+T203))+0.001,1))+(Round((3.42*3.0*T204)+0.001,1))+I05+(Round((CASE WHEN T504>0 THEN 3.42*T504 ELSE 0 END)+0.001,1))+I07+I10+F07+F04+(Round((CASE WHEN TimeWage>27.4 THEN (TimeWage-27.4)*(ST01+C203) ELSE 0 END)+0.001,1))+F08)+0.001,1))-(Round((D01+D03+D05+D02+D04+(Round((T304/60*3.42)+0.001,1))+D07)+0.001,1))+W_PriorAdditional)+0.001,1) WHERE PayrollID='PRD20060717-0001'