Dim sql As String
Dim sTokens() As String
sql = "select form    yhlx"
    sTokens = Split(sql)            '调用Split函数拆分SQL语句
    
    If InStr("INSERT,DELETE,UPDATE", UCase((sTokens(0)))) Then
    Else
        msg = "SQL语句有误:" & SQLStr
    End If请帮忙解释一下上面的代码中SPLIT和INSTR、UCase这三个函数的作用。再就是可否提供一下这三个函数的详细用法的说明。谢谢。

解决方案 »

  1.   

    split 函数返回基于 0 的一维数组,其中包含指定数目的子字符串。split(expression[, delimiter[, count[, start]]])
    InStr是实现文本查找功能的函数。这个函数可以找到指定的字符串在另一字符串中最先出现的位置。UCASE()是返回字符串的大写形式
      

  2.   

    Split函数
          描述返回一个下标从零开始的一维数组,它包含指定数目的子字符串。语法Split(expression[, delimiter[, count[, compare]]])Split函数语法有如下几部分:部分 描述 
    expression 必需的。包含子字符串和分隔符的字符串表达式 。如果expression是一个长度为零的字符串(""),Split则返回一个空数组,即没有元素和数据的数组。 
    delimiter 可选的。用于标识子字符串边界的字符串字符。如果忽略,则使用空格字符(" ")作为分隔符。如果delimiter是一个长度为零的字符串,则返回的数组仅包含一个元素,即完整的 expression字符串。 
    count 可选的。要返回的子字符串数,–1表示返回所有的子字符串。 
    compare 可选的。数字值,表示判别子字符串时使用的比较方式。关于其值,请参阅“设置值”部分。 
    设置值compare参数的设置值如下:常数 值 描述 
    vbUseCompareOption –1 用Option Compare语句中的设置值执行比较。 
    vbBinaryCompare 0 执行二进制比较。 
    vbTextCompare 1 执行文字比较。 
    vbDatabaseCompare 2 仅用于Microsoft Access。基于您的数据库的信息执行比较。 
      

  3.   

    InStr 函数
          返回 Variant (Long),指定一字符串在另一字符串中最先出现的位置。语法 InStr([start, ]string1, string2[, compare])InStr 函数的语法具有下面的参数:部分 说明 
    start 可选参数。为数值表达式,设置每次搜索的起点。如果省略,将从第一个字符的位置开始。如果 start 包含 Null,将发生错误。如果指定了 compare 参数,则一定要有 start 参数。 
    string1 必要参数。接受搜索的字符串表达式。 
    string2 必要参数。被搜索的字符串表达式。 
    Compare 可选参数。指定字符串比较。如果 compare 是 Null,将发生错误。如果省略 compare,Option Compare 的设置将决定比较的类型。 
    设置 compare 参数设置为:常数 值 描述 
    vbUseCompareOption -1 使用Option Compare 语句设置执行一个比较。 
    vbBinaryCompare 0 执行一个二进制比较。 
    vbTextCompare 1 执行一个按照原文的比较。 
    vbDatabaseCompare 2 仅适用于Microsoft Access,执行一个基于数据库中信息的比较。 
    返回值如果 InStr返回 
    string1 为零长度 0 
    string1 为 Null Null 
    string2 为零长度 Start 
    string2 为 Null Null 
    string2 找不到 0 
    在 string1 中找到string2  找到的位置 
    start > string2 0 
    说明InStrB 函数作用于包含在字符串中的
      

  4.   

    UCase 函数
          返回 Variant (String),其中包含转成大写的字符串。语法UCase(string)必要的 string 参数为任何有效的字符串表达式。如果 string 包含 Null,将返回 Null。说明只有小写的字母会转成大写;原本大写或非字母之字符保持不变。
      

  5.   

    Split(sql)  
    ***********************
    将sql这个字符串以" "为界限拆分¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
    Split 函数
    返回一个从零开始的一维数组,其中包含指定数量的子字符串。Function Split(
       ByVal Expression As String,
       Optional ByVal Delimiter As String = " ",
       Optional ByVal Limit As Integer = -1,
       Optional ByVal Compare As CompareMethod = CompareMethod.Binary
    ) As String()
    参数
    Expression 
    必选项。字符串表达式,包含子字符串和分隔符。如果 Expression 是零长度的字符串 (""),Split 函数将返回长度为一的数组,其中包含一个空字符串。 
    Delimiter 
    可选项。单个字符,用于标识子字符串的界限。如果省略了 Delimiter,则假定空白字符 ("") 为分隔符。如果 Delimiter 为零长度字符串,则返回包含整个 Expression 字符串的单元素数组。 
    Limit 
    可选项。要返回的子字符串数;默认值为 -1,表示返回所有子字符串。 
    Compare 
    可选项。数值,指示计算子字符串时使用的比较模式。具体的值请参见“设置”。 
    设置
    Compare 参数可以具有下列值:常量 说明 
    Binary 执行二进制比较 
    Text 执行文本比较 示例
    下面的示例说明 Split 函数:Dim myString As String = "Look at these!"
    ' Returns ["Look", "at", "these!"]
    Dim myArray() As String = Split(myString) 
      

  6.   

    这个
    InStr("INSERT,DELETE,UPDATE", UCase((sTokens(0))))
    的第一个参数好象不对吧,不是应该是START型的数值或变量吗?
      

  7.   

    这个 
    InStr("INSERT,DELETE,UPDATE", UCase((sTokens(0)))) 
    的第一个参数好象不对吧,不是应该是START型的数值或变量吗?即使省略第一个参数也应该是这种形式吧 :InStr(,"INSERT,DELETE,UPDATE", UCase((sTokens(0)))) 
     
     
      

  8.   


    InStr 函数 
          返回 Variant (Long),指定一字符串在另一字符串中最先出现的位置。 语法 InStr([start, ]string1, string2[, compare]) InStr 函数的语法具有下面的参数: 部分 说明 
    start 可选参数。为数值表达式,设置每次搜索的起点。如果省略,将从第一个字符的位置开始。如果 start 包含 Null,将发生错误。如果指定了 compare 参数,则一定要有 start 参数。 
    string1 必要参数。接受搜索的字符串表达式。 
    string2 必要参数。被搜索的字符串表达式。 
    Compare 可选参数。指定字符串比较。如果 compare 是 Null,将发生错误。如果省略 compare,Option Compare 的设置将决定比较的类型。 
      

  9.   


    InStr("INSERT,DELETE,UPDATE", UCase((sTokens(0))))
    **************************************************
    是对的,没有问题
      

  10.   

    lz这种问题用msdn或搜索就可以解决
      

  11.   

    InStr([start, ]string1, string2[, compare]) 
    *********************************************
    教你一招,如何看msdn帮助,[] 内的是可以省略的
      

  12.   


    您是说,InStr(,"INSERT,DELETE,UPDATE", UCase((sTokens(0))))  第一个“,”可以省。
      

  13.   

    我无言。
    建议楼主看看MSDN先,F1就行了。
      

  14.   

    报歉,我没有看MSDN的习惯,那玩意真的是不符合中国人的习惯,东一榔头西一锤头的,没有条理性。真无劲。