ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1431|回复: 8

[求助] 文本框百分比保存到Access出错求助

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-2-8 08:03 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
各位老师早!
我将文本框百分比保存到Access出错,请教如何解决?谢谢!
文本框百分比保存到Access出错求助.rar (33.61 KB, 下载次数: 4)

TA的精华主题

TA的得分主题

发表于 2017-2-8 09:35 | 显示全部楼层

Private Sub TextBox3_Change() '解决TextBox3.Value为空时自动计算出错
    Dim t As Double
    On Error Resume Next
    t = (Val(TextBox3.Value) - Val(TextBox5.Value)) / Val(TextBox5.Value)
    If Err.Number = 0 Then
        TextBox4.Value = t
        TextBox4.Text = Format(TextBox4, "0.00")
    Else
        TextBox4.Value = 0
    End If
End Sub


Private Sub UserForm_Initialize()
ComboBox1.AddItem "办公室"
ComboBox1.AddItem "财务部"
ComboBox1.AddItem "销售部"
ComboBox3.AddItem "Z2014070001"
ComboBox3.AddItem "Z2014070002"
ComboBox3.AddItem "Z2014070003"
ComboBox3.AddItem "Z2014070004"
ComboBox3.AddItem "Z2014070005"
ComboBox3.AddItem "Z2014070006"
Label8.Caption = "比例(%):"
End Sub

Private Sub CommandButton1_Click() '查询
    'On Error GoTo 100
    If ComboBox3.Text = "" Then
        MsgBox "请输入工号", 1 + 16, "出错提示"
        ComboBox3.SetFocus
    Else
        Dim RS1 As Recordset
        Dim DB1 As Database
        
        Set DB1 = OpenDatabase(ThisWorkbook.Path & "\" & "Info.MDB")
        Set RS1 = DB1.OpenRecordset(Name:="信息", Type:=dbOpenDynaset)
         RS1.FindFirst "工号='" & ComboBox3.Value & "'"
         If RS1.NoMatch = True Then
            MsgBox "对不起,没有查到工号为:" & ComboBox3.Value & " 的相关信息"
            RS1.Close
            Exit Sub
         Else
             ComboBox1.Value = RS1.Fields("部门").Value
             TextBox2.Value = RS1.Fields("姓名").Value
             TextBox5.Value = RS1.Fields("预算").Value
             TextBox3.Value = RS1.Fields("实际").Value
             TextBox1.Value = RS1.Fields("顺序号").Value
'             TextBox4.Value = RS1.Fields("比例").Value
        End If
        RS1.Close
        Set RS1 = Nothing
        Set DB1 = Nothing
       TextBox4.Text = Format(TextBox4, "0.00")
    End If
   
    Exit Sub          '正常执行结束,跳出 sub
100:
        MsgBox "程序执行出错", 1 + 16, "系统提示"
End Sub

Private Sub CommandButton2_Click() '修改
    Dim cnn As New ADODB.Connection
    Dim rst As New ADODB.Recordset
    Dim X As Integer
    Dim myNo As String, SQL As String, myStr As String, varchar
    Dim rs As ADODB.Recordset
    Dim XGSJ As Date, Convert As Date
    Dim dls As Single, bgs As Single
    Dim bl
    Dim b As String
    'MsgBox "bL:" & bl
    cnn.Open "provider=Microsoft.jet.OLEDB.4.0;data source=" & ThisWorkbook.Path & "\Info.mdb"
            SQL = "update 信息 set 部门='" & ComboBox1.Value & " ',姓名='" & TextBox2.Value & " ',预算='" & Me.TextBox5.Value & "'," _
                & "实际='" & Me.TextBox3.Value & "',比例=" & Val(TextBox4.Text) & " where 工号='" & ComboBox3.Value & "'"  'Access语句
            'MsgBox SQL
            cnn.Execute SQL
        MsgBox "保存成功!", vbInformation
    Set cnn = Nothing
End Sub
Private Sub CommandButton3_Click()
Unload Me
End Sub

TA的精华主题

TA的得分主题

发表于 2017-2-8 09:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1.     SQL = "update 信息 set "
  2.     SQL = SQL & " 部门='" & ComboBox1.Value & "'"  '//原来多个空格
  3.     SQL = SQL & ",姓名='" & TextBox2.Value & "'"   '//原来多个空格
  4.     SQL = SQL & ",预算=" & Me.TextBox5.Value   '//货币也是数字格式
  5.     SQL = SQL & ",实际=" & Me.TextBox3.Value    '//货币也是数字格式
  6.     SQL = SQL & ",比例=" & Replace(Me.TextBox4.Value, "%", "") * 1 / 100   '//转换为数字
  7.     SQL = SQL & " where 工号='" & ComboBox3.Value & "'"    'Access语句
复制代码

TA的精华主题

TA的得分主题

发表于 2017-2-8 09:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

Private Sub TextBox3_Change() '解决TextBox3.Value为空时自动计算出错
    Dim t As Double
    On Error Resume Next
    t = (Val(TextBox3.Value) - Val(TextBox5.Value)) / Val(TextBox5.Value)
    If Err.Number = 0 Then
        TextBox4.Value = t
        TextBox4.Text = Format(TextBox4, "0.00")
    Else
        TextBox4.Value = 0
    End If
End Sub


Private Sub UserForm_Initialize()
ComboBox1.AddItem "办公室"
ComboBox1.AddItem "财务部"
ComboBox1.AddItem "销售部"
ComboBox3.AddItem "Z2014070001"
ComboBox3.AddItem "Z2014070002"
ComboBox3.AddItem "Z2014070003"
ComboBox3.AddItem "Z2014070004"
ComboBox3.AddItem "Z2014070005"
ComboBox3.AddItem "Z2014070006"
Label8.Caption = "比例(%):"
End Sub

Private Sub CommandButton1_Click() '查询
    'On Error GoTo 100
    If ComboBox3.Text = "" Then
        MsgBox "请输入工号", 1 + 16, "出错提示"
        ComboBox3.SetFocus
    Else
        Dim RS1 As Recordset
        Dim DB1 As Database
        
        Set DB1 = OpenDatabase(ThisWorkbook.Path & "\" & "Info.MDB")
        Set RS1 = DB1.OpenRecordset(Name:="信息", Type:=dbOpenDynaset)
         RS1.FindFirst "工号='" & ComboBox3.Value & "'"
         If RS1.NoMatch = True Then
            MsgBox "对不起,没有查到工号为:" & ComboBox3.Value & " 的相关信息"
            RS1.Close
            Exit Sub
         Else
             ComboBox1.Value = RS1.Fields("部门").Value
             TextBox2.Value = RS1.Fields("姓名").Value
             TextBox5.Value = RS1.Fields("预算").Value
             TextBox3.Value = RS1.Fields("实际").Value
             TextBox1.Value = RS1.Fields("顺序号").Value
'             TextBox4.Value = RS1.Fields("比例").Value
        End If
        RS1.Close
        Set RS1 = Nothing
        Set DB1 = Nothing
       TextBox4.Text = Format(TextBox4, "0.00")
    End If
   
    Exit Sub          '正常执行结束,跳出 sub
100:
        MsgBox "程序执行出错", 1 + 16, "系统提示"
End Sub

Private Sub CommandButton2_Click() '修改
    Dim cnn As New ADODB.Connection
    Dim rst As New ADODB.Recordset
    Dim X As Integer
    Dim myNo As String, SQL As String, myStr As String, varchar
    Dim rs As ADODB.Recordset
    Dim XGSJ As Date, Convert As Date
    Dim dls As Single, bgs As Single
    Dim bl
    Dim b As String
    'MsgBox "bL:" & bl
    cnn.Open "provider=Microsoft.jet.OLEDB.4.0;data source=" & ThisWorkbook.Path & "\Info.mdb"
            SQL = "update 信息 set 部门='" & ComboBox1.Value & " ',姓名='" & TextBox2.Value & " ',预算='" & Me.TextBox5.Value & "'," _
                & "实际='" & Me.TextBox3.Value & "',比例=" & Val(TextBox4.Text) & " where 工号='" & ComboBox3.Value & "'"  'Access语句
            'MsgBox SQL
            cnn.Execute SQL
        MsgBox "保存成功!", vbInformation
    Set cnn = Nothing
End Sub
Private Sub CommandButton3_Click()
Unload Me
End Sub

TA的精华主题

TA的得分主题

发表于 2017-2-8 09:43 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-2-8 23:37 | 显示全部楼层
xd3210 发表于 2017-2-8 09:41
Private Sub TextBox3_Change() '解决TextBox3.Value为空时自动计算出错
    Dim t As Double
    On E ...

谢谢你的回复,很遗憾,你的代码也出错!请你自己先试一试。

TA的精华主题

TA的得分主题

发表于 2017-2-9 08:14 | 显示全部楼层
忘得快 发表于 2017-2-8 23:37
谢谢你的回复,很遗憾,你的代码也出错!请你自己先试一试。

我的机器上可以运行。
有三处做了改动:
TextBox4.Text = Format(TextBox4, "0.00")
Label8.Caption = "比例(%):"
SQL = "update 信息 set 部门='" & ComboBox1.Value & " ',姓名='" & TextBox2.Value & " ',预算='" & Me.TextBox5.Value & "'," _
                & "实际='" & Me.TextBox3.Value & "',比例=" & Val(TextBox4.Text) & " where 工号='" & ComboBox3.Value & "'"

TA的精华主题

TA的得分主题

发表于 2017-2-9 08:55 | 显示全部楼层
小数与百分数转换进行了修正,供参考。另外,原SQL更新中,字符串后有空格,导致初次调入没有问题,一旦修改保存后再次调会出错。

文本框百分比保存到Access出错求助.rar

21.22 KB, 下载次数: 4

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-2-9 21:13 | 显示全部楼层
xd3210 发表于 2017-2-9 08:55
小数与百分数转换进行了修正,供参考。另外,原SQL更新中,字符串后有空格,导致初次调入没有问题,一旦修 ...

奇怪!用你的文件修改保存不会出错,将代码复制到的我的文件上就出错了,不知是何原因?
另外,字符串后有空格是怎么产生的?请教如何避免和消除空格?谢谢!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-27 03:10 , Processed in 0.050612 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表