Office中国论坛/Access中国论坛

标题: 变量赋值,大家来帮看一下问题在哪,谢谢 [打印本页]

作者: huang1314    时间: 2012-10-2 10:22
标题: 变量赋值,大家来帮看一下问题在哪,谢谢
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
这段,搞不明白啊
作者: 风中漫步    时间: 2012-10-2 11:05
你的SQL有问题

空格也算吗?个人感觉这样要好些,
   If TRIM(Me.Text5)<>"" Then
        '有输入
        i = i + 1
    End If
作者: lynnwang    时间: 2012-10-2 18:12
TRIM$ 好于 TRIM

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


作者: lynnwang    时间: 2012-10-2 18:17
判定文本框是否输入,下面代码性能更好,另外利用位判定,可以确定哪些文本框有输入值?
    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        '有输入
作者: lynnwang    时间: 2012-10-2 18:24
帮你改了,
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
作者: lynnwang    时间: 2012-10-2 18:25
或  If isnull(Me.Text7) Then i = &H100        少了一个NOT
或  If not isnull(Me.Text7) Then i = &H100  
作者: todaynew    时间: 2012-10-2 19:51
本帖最后由 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
作者: layaman_999    时间: 2012-10-3 10:51
你的insert into的SQL写错鸟:应该是这样吧
DoCmd.RunSQL "INSERT INTO 表1 (姓名,工种,规格,数量) VALUES (“ & [text1] & ”,  " & [text2]& ”,  " & [text3] & ”,  "  & [text4]/i  &  ")"





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3