sql1 = "select * from CompetitionNM where id=" & Val(Trim(ComboTeam1.Text)) & ""
我的ComboTeam1.值为4dabc
我想得到前面的4,但程序得到的查询结果却是40.谁能帮解决一下.我只想得到这个4,如果VAL函数不行,那还有什么函数能够解决呢.

解决方案 »

  1.   

    cint(left(ComboTeam1.Text,1))这个只限于一位数,如果你是40abcd这样的就不适用了,你需要做点别的
      

  2.   

    希望对你有帮助
    Mid 函数  语言参考 
    --------------------------------------------------------------------------------描述
    从字符串中返回指定数目的字符。
    语法
    Mid(string, start[, length])
    Mid 函数的语法有以下参数:参数 描述 
    string 字符串表达式,从中返回字符。如果 string 包含 Null,则返回 Null。 
    start string 中被提取的字符部分的开始位置。如果 start 超过了 string 中字符的数目,Mid 将返回零长度字符串 ("")。 
    length 要返回的字符数。如果省略或 length 超过文本的字符数(包括 start 处的字符),将返回字符串中从 start 到字符串结束的所有字符。 说明
    要判断 string 中字符的数目,可使用 Len 函数。 
    --------------------------------------------------------------------------------
     
    注意 MidB 函数用于字符串中的字节数据,其参数指定的是字节数而不是字符数。 InStr 函数  语言参考 
    启始页 | 版本 1 
     
    请参阅 
    --------------------------------------------------------------------------------描述
    返回某字符串在另一字符串中第一次出现的位置。
    语法
    InStr([start, ]string1, string2[, compare])
    InStr 函数的语法有以下参数:参数 描述 
    start 可选。数值表达式,用于设置每次搜索的开始位置。如果省略,将从第一个字符的位置开始搜索。如果 start 包含 Null,则会出现错误。如果已指定 compare,则必须要有 start 参数。 InstrRev 函数  语言参考 
    启始页 | 版本 2 
     请参阅 
    --------------------------------------------------------------------------------描述
    返回某字符串在另一个字符串中出现的从结尾计起的位置。 
    语法
    InstrRev(string1, string2[, start[, compare]])
    InstrRev 函数的语法有以下参数:参数 描述 
    string1 必选。接受搜索的字符串表达式。 
    string2 必选。被搜索的字符串表达式。 
    start 可选。数值表达式,用于设置每次搜索的开始位置。如果省略,则默认值为 -1,表示从最后一个字符的位置开始搜索。如果 start 包含 Null,则出现错误。 
    compare 可选。在计算子字符串时,指示要使用的比较类型的数值。如果省略,将执行二进制比较。有关数值,请参阅“设置”部分。 
    设置
    compare 参数可以有以下值:
    常数 Value 描述 
    vbBinaryCompare 0 执行二进制比较。 
    vbTextCompare 1 执行文本比较。 
    vbDatabaseCompare 2 执行基于包含在数据库(在此数据库中执行比较)中的信息的比较。 
    返回值
    InStrRev 返回以下值:
    如果 InStrRev 返回 
    string1 为零长度 0 
    string1 为 Null Null 
    string2 为零长度 start 
    string2 为 Null Null 
    string2 没有找到 0 
    在 string1 中找到 string2 找到匹配字符串的位置 
    start > Len(string2) 0 
    说明
    请注意 InstrRev 函数的语法不同于 Instr 函数的语法。 string1 必选。接受搜索的字符串表达式。 
    string2 必选。要搜索的字符串表达式。 
    compare 可选。指示在计算子字符串时使用的比较类型的数值。有关数值,请参阅“设置”部分。如果省略,将执行二进制比较。 
    设置
    compare 参数可以有以下值:
    常数 值 描述 
    vbBinaryCompare 0 执行二进制比较。 
    vbTextCompare 1 执行文本比较。 
    vbDatabaseCompare 2 执行基于包含在数据库(在此数据库中执行比较)中的信息的比较。 
    返回值
    Instr 函数返回以下值:
    如果 InStr 返回 
    string1 为零长度 0 
    string1 为 Null Null 
    string2 为零长度 start 
    string2 为 Null Null 
    string2 没有找到 0 
    在 string1 中找到 string2 找到匹配字符串的位置 
    start > Len(string2) 0 
    说明--------------------------------------------------------------------------------
     
    注意 InStrB 函数使用包含在字符串中的字节数据,所以 InStrB 返回的不是一个字符串在另一个字符串中第一次出现的字符位置,而是字节位置。 
      

  3.   

    好象哪看到过val遇到d就容易出错,感觉应该有解决的办法吧,要不这样楼主的前几位
    无法判定的情况下很难取出,要不只能用正则了,麻烦
      

  4.   

    不会吧,我在VB6(SP6)中测试,
    如下:
    ?val("4dabc")
     4 你怎么会得出40呢
      

  5.   

    如果是4e1abc 则得到的结果是40.即把e当成是科学计数法了.这样得到的结果就为40了.应当如何处理.
      

  6.   

    将字符串中的e用ee代替,
    如:
    ?val(replace("4e2abc","e","ee",1,1))
     4 
      

  7.   

    s = "4e2abc"
        For i = 1 To Len(s)
        If Not IsNumeric(Mid(s, i, 1)) Then Exit For
        Next
        Debug.Print Val(Mid(s, 1, i))