设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 3240|回复: 7
打印 上一主题 下一主题

[其它] 变量赋值,大家来帮看一下问题在哪,谢谢

[复制链接]
跳转到指定楼层
1#
发表于 2012-10-2 10:22:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
dim i as long
Private Sub Command21_Click() '添加记录
i = 0
    If Len(Me.Text5) > 0 Then
        '有输入
        i = i + 1
    End If
    If Len(Me.text6) > 0 Then
        '有输入
        i = i + 1
    End If
    If Len(Me.text7) > 0 Then
        '有输入
        i = i + 1
    End If
    If i = 0 Then
        MsgBox "输入为空"
        Exit Sub
    End If
DoCmd.RunSQL "INSERT INTO 表1 (姓名,工种,规格,数量) VALUES ([text1],[text2],[text3],[text4]/i”
end sub

我想判断[text5],[text6],[text7]是否有输入来赋i的值+1,最多是三个都有输入时i=3,运行时停在插入记录那行,提示输入i的值,应该是i赋值不成功,
不过能过
If i = 0 Then
        MsgBox "输入为空"
        Exit Sub
    End If
这段,搞不明白啊
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2012-10-2 11:05:57 | 只看该作者
你的SQL有问题

空格也算吗?个人感觉这样要好些,
   If TRIM(Me.Text5)<>"" Then
        '有输入
        i = i + 1
    End If
3#
发表于 2012-10-2 18:12:28 | 只看该作者
TRIM$ 好于 TRIM

value 返回的是 VARAINT 型,文本框是不会返回空格的,这里value返回 null,在IF THEN 中如果返回NULL,则会跳过
len和lenb在VB所以操作字符串中的函数是最好的,如果len的性能时间为1,那么TRIM$的性能时间在18,甚至更高

4#
发表于 2012-10-2 18:17:04 | 只看该作者
判定文本框是否输入,下面代码性能更好,另外利用位判定,可以确定哪些文本框有输入值?
    If Len(Me.Text5) Then i = &H1        '有输入
    If Len(Me.Text6) Then i = &H10        '有输入
    If Len(Me.Text7) Then i = &H100        '有输入

或  If isnull(Me.Text7) Then i = &H100        '有输入
5#
发表于 2012-10-2 18:24:06 | 只看该作者
帮你改了,
Private Sub Command21_Click() '添加记录

    Dim strSQLVal As String, i As Long
    If Len(Me.Text5) Then strSQLVal = "[text1],"
    If Len(Me.Text6) Then strSQLVal = strSQLVal & "[text2],"
    If Len(Me.Text7) Then strSQLVal = strSQLVal & "[text3]"
        
    If Len(strSQLVal) Then
        DoCmd.RunSQL "INSERT INTO 表1 (姓名,工种,规格,数量) VALUES (" & strSQLVal & ",[text4]/i)"
    Else
        MsgBox "输入为空"
    End If
   
End Sub
6#
发表于 2012-10-2 18:25:16 | 只看该作者
或  If isnull(Me.Text7) Then i = &H100        少了一个NOT
或  If not isnull(Me.Text7) Then i = &H100  
7#
发表于 2012-10-2 19:51:12 | 只看该作者
本帖最后由 todaynew 于 2012-10-5 08:50 编辑

此类问题皆可利用逻辑值的特性进行计算:

Private Sub Command21_Click()
    dim i as long
    i=val(me.text5.value)>0+val(me.text6.value)>0+val(me.text7.value)>0  '每个逻辑表达式为真则为-1,为否则为0
    i=-i
    if i=0 then exit sub
    DoCmd.RunSQL "INSERT INTO 表1 (姓名,工种,规格,数量) VALUES ("  & me.text1.value & "," & me.text2.value & "," & me.text3.value & "," & me.text4.value/i & ")"
end sub
8#
发表于 2012-10-3 10:51:24 | 只看该作者
你的insert into的SQL写错鸟:应该是这样吧
DoCmd.RunSQL "INSERT INTO 表1 (姓名,工种,规格,数量) VALUES (“ & [text1] & ”,  " & [text2]& ”,  " & [text3] & ”,  "  & [text4]/i  &  ")"
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-14 05:14 , Processed in 0.105120 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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