唉.原来公司有位"高人".因为与老板不合被老板"炒"了.他走时将他的程序.源码都"带"走了.导致公司现在工作无法进行.现在找到一个他早期的有错误的源码.老板把这个艰巨的任务交给我这个菜鸟了.说叫我10.1放假搞出来.要不我也"悬"了......update data set
money=0,items=0x85DC3200000000FF1648 where accountid='user1'
我用sql server的查询分析器可以添加进去.但不能直接在表格中手动添加.大家帮我看看啊.谢谢了.
在此我向那些10.1还坚守岗位的大家说.你们辛苦了.

解决方案 »

  1.   

    update [data] set
    [money]=0,items=0x85DC3200000000FF1648 where accountid='user1'
      

  2.   

    编程时的命名一定要注意不要使用系统保留字,data和money之类的就很危险
      

  3.   

    要么items数据类型不是Binary的,把详细的错误描述贴出来
      

  4.   

    我的代码
    Dim Cn As ADODB.Connection
     Set Cn = New ADODB.Connection
        Cn.ConnectionString = "Provider=SQLOLEDB;Persist Security Info=True;User ID=" & Text2.Text & ";Password=" & Text3.Text & ";Initial Catalog=online;Data Source=" & Text1.Text 
        Cn.Open
    Dim strsql As String
    text4.text=0x85DC3200000000FF1648
    text5.text=user1
    strsql = "update data set items='" & Text4.Text & "' where [AccountID]='" & Text5.Text & "'"
    Cn.Execute strsql
      

  5.   

    运行是显示适时错误-2147217913(800040e07)
    不允许从数据类型varchar到数据类型varbinary的隐性转换.请使用convert函数来运行此查询.
    以上是运行是的出错提示
      

  6.   

    哦.
    strsql = "update warehouse set items=  0x85DC3200000000FF1648 " & " where [AccountID]='" & Text5.Text & "'"
    这样写可以.但如果我想用text4.text来动态填写.这个进制怎样转换
      

  7.   

    strsql = "update data set items = CONVERT(char(50)," & Text4.Text & ") where [AccountID]='" & Text5.Text & "'"
      

  8.   

    不行的
    提示不允许从数据类型char到数据类型varbinary的隐性转换
      

  9.   

    我机器上没装sql,不能肯定的答复你
    这问题是因为你的item列是varbinary 类型,而你在VB里是把它当字符串写进去的.
    SQL server 做隐性转换的时候不能转换过来.
    以下是几点建议:
    1.你在写存入的时候那边上两个引号不打,看SQL能不能隐性转换过去
    2.你看看convert函数(sql server的)有没有能将varchar 转为varbinaryr的
    3.写个store procedure 来做
    4.改为以recordset 的方式引用,再看看MSDN看binary 类型该怎样存取同情十一还在受资本家剥削的同志们, 我也属于被剥削的一员 , 很有同感...
    只能把原因向你说明,问题还得你自己解决
      

  10.   

    下面的表格列出了 ANSI SQL 数据类型和等效的 Microsoft Jet 数据库引擎  SQL 数据类型与他们之间有效的同义字。ANSI SQL 
    的数据类型 Microsoft Jet 
    SQL 的数据类型
    同义字
    BIT,BIT VARYING BINARY(请参阅注意) VARBINARY
    不支持 BIT(请参阅注意) BOOLEAN,LOGICAL,LOGICAL1,YESNO
    不支持 BYTE INTEGER1
    不支持 COUNTER AUTOINCREMENT
    不支持 CURRENCY MONEY
    DATE,TIME,TIMESTAMP DATETIME DATE,TIME,TIMESTAMP
    不支持 GUID
    DECIMAL 不支持
    REAL SINGLE FLOAT4,IEEESINGLE,REAL
    DOUBLE PRECISION,FLOAT DOUBLE FLOAT,FLOAT8,IEEEDOUBLE,NUMBER,NUMERIC
    SMALLINT SHORT INTEGER2,SMALLINT
    INTEGER LONG INT,INTEGER,INTEGER4
    INTERVAL 不支持
    不支持 LONGBINARY GENERAL,OLEOBJECT
    不支持 LONGTEXT LONGCHAR,MEMO,NOTE
    CHARACTER,CHARACTER VARYING TEXT ALPHANUMERIC,CHAR,CHARACTER,STRING,VARCHAR
    不支持 VALUE(请参阅注意)
    注意?ANSI SQL 的 BIT 数据类型并不对应 Microsoft Jet SQL 的 BIT 数据类型,但是它对应 BINARY 的数据类型。ANSI SQL 并没有等效于 Microsoft Jet SQL 的 BIT 的数据类型。
    ?VALUE 保留字不表示由 Microsoft Jet 数据库引擎定义的数据类型。
      

  11.   

    数据类型 存储大小 描述
    BINARY 每个字符占一个字节 任何类型的数据都可存储在这种类型的字段中。不需数据转换(例如,转换到文本数据)。数据输入二进制字段的方式决定了它的输出方式。
    BIT 1 个字节  Yes 和 No ,以及只包含这两个数值之一的字段。
    BYTE 1 个字节 介于 0 到 255 之间的整型数。
    COUNTER 4 个字节 每当有新记录添加至表中时,由 Microsoft Jet 数据库引擎自动增加数值。在 Microsoft Jet 数据库引擎中,此数值的数据类型为 Long。
    CURRENCY 8 个字节 介于 ??22,337,203,685,477.5808 到 922,337,203,685,477.5807 之间的符号整数。
    DATETIME
    (清参阅 DOUBLE ) 8 个字节 介于 100 到 9999 年的日期或时间数值。
    GUID 128 个位 用于远程过程调用的唯一识别数字。
    SINGLE 4 个字节 单精度浮点数,负数范围是从 -3.402823E38 到 -1.401298E-45,正数从1.401298E-45 到 3.402823E38,和 0。
    DOUBLE 8 个字节 双精度浮点数,负数范围是从 -1.79769313486232E308 到 -4.94065645841247E-324,正数从 4.94065645841247E-324 到 1.79769313486232E308,和 0。
    SHORT 2 个字节 介于 -32,768 到 32,767 的短整型数。
    LONG 4 个字节 介于 -2,147,483,648 到 2,147,483,647 的长整型数。
    LONGTEXT 每个字符占一个字节 从零到最大 1.2 千兆字节。
    LONGBINARY 视实际需要而定 从零到最大 1.2 千兆字节。用于 OLE 对象。
    TEXT 每个字符占一个字节 长度从 0 到 255 个字符。
      

  12.   

    谢谢大家。都早点休息吧直接用update 语句已经能添加进去现在的新问题是用text4.text来动态填写时格式转换一直不对大家都休息吧。明天我在想想
      

  13.   

    strsql = "update data set items = cast(" & Text4.Text & " as varbinary) where [AccountID]='" & Text5.Text & "'"
      

  14.   

    谢谢大家
    QWERT520的方法可以用
    我自己也琢磨出来了一种可行的方法
    'strsql = "update data set items =" & Text4.Text & " where [AccountID]='" & Text5.Text & "'"
      

  15.   

    哈哈~~~~谢谢大家
    QWERT520的方法可以用
    我自己也琢磨出来了一种可行的方法
    'strsql = "update data set items =" & Text4.Text & " where [AccountID]='" & Text5.Text & "'"
    晕倒~就是不要用单引号啊.!