Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

access 中用程序执批量的数据替换

hlm  发表于:2010-12-24 21:59:49  
复制

我在ACCESS数据库中建了个gz表,表中有字段zz(在职)、tx(退休)、gl(工龄)、gze(工资额)
单个的update语句会写,想通过程序实现将“工资额”按“工龄”的长短批量增加(即:工龄小于10年的工资额加5,超过10年的加15)请教怎么实现。

 

Top
wang decheng 发表于:2010-12-25 09:14:12

运行更新查询

UPDATE gz SET gz.gze = IIf(gz.gl>=10,gz.gze+15,gz.gze+5);



hlm 发表于:2010-12-25 10:05:21

谢谢wang decheng,单个的update语句会写,想请教在ACCESS中如何通过程序实现。

就象在VF6.0中用

select gz

scan

   if gl>=10

     repl  gze with gze+15
   else

     repl  gze with gze+5

   endif
 endscan



wang decheng 发表于:2010-12-25 11:31:14

Public Function INCREMENTGZ(GL As Integer, GZE As Currency) As Currency
On Error GoTo INCREMENTGZ_Error
     If GL >= 10 Then
      INCREMENTGZ = GZE + 15
       Else
         INCREMENTGZ = GZE + 5
     End If
     On Error GoTo 0
   Exit Function
INCREMENTGZ_Error:

    MsgBox "Error " & Err.Number & " (" & Err.Description & ") 在增加工资程序中"
End Function



hlm 发表于:2010-12-25 14:51:11

再次感谢wang decheng的热心帮助!

 

我是菜鸟,您这是做了个自定义函数吧。其实我是想通过上面的例子找到个思路。

比如:怎么在程序中调用ACCESS中的GZ表,然后针对某些需要替换的字段,用同一个程序完成相关的操作。

因为,在增加工资程序中需要满足的条件比较多。



煮江品茶 发表于:2010-12-25 15:38:48

1、写一个子程序如下:

Sub 增资子程序(StrWh as String,x as Single)

'参数:StrWh--条件字符串;x--增资额

dim ssql as string

ssql="UPDATE gz SET gze =" & gz+x & " where " & StrWh

DoCmd.SetWarnings False
DoCmd.RunSQL ssql

end sub

 

2、在按钮的单击事件中调用子程序:

Private Sub Command8_Click()

dim strwh as string

strwh="zz='在职' and gl<10"

call 增资子程序(strwh,50)

strwh="zz='在职' and gl>=10"

call 增资子程序(strwh,100)

strwh="zz='退休'"

call 增资子程序(strwh,20)

End Sub



hlm 发表于:2010-12-25 17:57:16

谢谢煮江品茶帮助与教导!您给了我很好的思路,继续学习中,如遇问题再次请教。暂就结贴。

 

 



总记录:6篇  页次:1/1 9 1 :