有时在EXCUTESQL的SQL语句中必须用CSTR,什么时候必须用CSTR,什么时候可以不用CSTR.

解决方案 »

  1.   

    请看看以下的语句:
    sql = "Insert into sdjl ([用户编号],[用户姓名],[用户类型],[电价(元/kWh)],[购电量(kWh)],[调剂电量(kWh)],[购电日期],[售电员],类型,线损比例) values (" + Trim(Text2.Text) + ",'" + Trim(Text1.Text) + "','" + DataCombo1.Text + "'," + CStr(Text10) + ",0,0,#" + CStr(sj(NowDate)) + "#," + CStr(userID) + ",1," + CStr(Val(Trim(xiansun.Text))) + ")"问题如下:
    1、什么情况下必须用"#" + CStr(sj(NowDate)) + "#"这种 两个井号的  形式
    2、什么情况下必须用"'" + Trim(Text1.Text) + "'" 这种两个 单引号  ' 的形式。
    3、什么情况下必须用  CStr(userID) 这种  CSTR 的形式。
    4、为什么Trim(Text1.Text) + "','" + DataCombo1.Text 这几个不用加CSTR。
      

  2.   

    cstr 把Variant 改成 string。
    1, 日期可加
    2, char type
    3, 看上面
    4, 本来就是string
      

  3.   

    CStr都不需要数据库里面 日期型用# , 字符型用' ,数字型什么也不用
      

  4.   

    CStr都不需要数据库里面 日期型用# , 字符型用' ,数字型什么也不用
      

  5.   

    sql = ""
    sql = sql & " Insert into sdjl (  " & vbCrLf
    sql = sql & "                   [用户编号] " & vbCrLf
    sql = sql & "                 , [用户姓名] " & vbCrLf
    sql = sql & "                 , [用户类型] " & vbCrLf
    sql = sql & "                 , [电价(元/kWh)] " & vbCrLf
    sql = sql & "                 , [购电量(kWh)] " & vbCrLf
    sql = sql & "                 , [调剂电量(kWh)] " & vbCrLf
    sql = sql & "                 , [购电日期] " & vbCrLf
    sql = sql & "                 , [售电员] " & vbCrLf
    sql = sql & "                 , 类型 " & vbCrLf
    sql = sql & "                 , 线损比例 " & vbCrLf
    sql = sql & "                  )  " & vbCrLf
    sql = sql & "           values (  " & vbCrLf
    sql = sql & "                    " + Trim(Text2.Text) + "  " & vbCrLf   '数据库中[用户编号]这个字段是数字类型,不需要加
    sql = sql & "                 , '" + Trim(Text1.Text) + "' " & vbCrLf   '数据库中[用户姓名]这个字段是字符类型,需要加''
    sql = sql & "                 , '" + DataCombo1.Text + "' " & vbCrLf
    sql = sql & "                 ,  " + CStr(Text10) + " " & vbCrLf
    sql = sql & "                 , 0 " & vbCrLf
    sql = sql & "                 , 0 " & vbCrLf
    sql = sql & "                 , #" + CStr(sj(NowDate)) + "# " & vbCrLf  '数据库中[购电日期]这个字段是日期类型,需要加##(指access数据库,其他数据库不同)
    sql = sql & "                 ,  " + CStr(userID) + " " & vbCrLf
    sql = sql & "                 , 1 " & vbCrLf
    sql = sql & "                 ,  " + CStr(Val(Trim(xiansun.Text))) + " " & vbCrLf
    sql = sql & "                  ) "
      

  6.   

    cstr在lz这里应该去掉也可以,lz可以去掉试验一下,看数据库中数据是否有什么不同
      

  7.   


    请问& vbCrLf 有什么用。
      

  8.   

    CSTR是轉換為字符串的函數。不一定要用這個函數的。
      

  9.   


    回车换行看这个代码
    Private Sub Command1_Click()
        Dim strT As String
        
        strT = ""
        strT = strT & " select id " & vbCrLf
        strT = strT & "      , my_name " & vbCrLf
        strT = strT & "      , tl " & vbCrLf
        strT = strT & "      , ph " & vbCrLf
        strT = strT & "   from my_table " & vbCrLf
        strT = strT & "  where id = '001'  " & vbCrLf    Debug.Print strT
        
    End Sub结果
     select id 
          , my_name 
          , tl 
          , ph 
       from my_table 
      where id = '001' 无论是在vb代码,还是peint出来,看着逻辑都清楚
      

  10.   

    http://download.csdn.net/source/1644211
      

  11.   

    操作符 + 根据两边操作数的不同,可以解释为加法、也可以解释为连接。而 VB 又存在自动类型转换,当一边操作数为数值时(比如 userID),会试图将另一边转化为数值做加法,如果不是数值型字符串就会出类型不匹配的错误。
    为了避免发生歧义,连接一定要用 & 操作符。自己对比下面几个表达式
    Debug.Print "1" & 3
    Debug.Print "A" & 3
    Debug.Print "1" + 3
    Debug.Print "A" + 3
      

  12.   

     CStr(Text10),没有必要再转换,本来就是文本