这是什么意思啊,是当我在向数据库插入记录时提示的,帮帮忙啊!

解决方案 »

  1.   

    dulei115()兄,我就是问那个语句是否过长的,后来我用了你的方法之后还是不行:
    var
      s: string;s := 'insert into ChargeItem(ItemCode, ItemName, ItemDesc, CharCode, ' +
         'SysCode, ItemLevl, CharOrg, CharStd, CharDesc, BegDate, ExtDate, ' +
         'CharObj, UpdateDate, UpdatePerson, CommitPerson, ParenetName1, ' +
         'ParenetName2, ParenetName3, ParenetName4, capitalinfo)' +
         'values (:ItemCode, :ItemName, :ItemDesc, :CharCode, :SysCode, ' +
         ':ItemLevl, :CharOrg, :CharStd, :CharDesc, :BegDate, :ExtDate, ' +
         ':CharObj, :UpdateDate, :UpdatePerson, :CommitPerson, :ParenetName1, ' +
         ':ParenetName2, :ParenetName3, :ParenetName4, :capitalinfo)';
    SQL.Add(s);同样的提示,怎么回事啊!
      

  2.   

    1:该表自身的问题
    由提示可以肯定是字段范围不够,不够有很多种
    i)字符不够长
    ii)浮点到整型
    iii)高精度到低精度
    .....2:该表有触发器,在触发器关联的其他表插入产生的问题
      

  3.   

    [Microsoft][ODBC SQL Server Driver][SQL Server]将截断字符串或二进制数据
    就是这样!
      

  4.   

    奇怪,按照xhh_88(三友)的提示看看。
    肯定不是因为太长,
    /////////////
    你的最后是个字段什么类型,还有,把代码贴出来,详细一点的
      

  5.   

    我看过了,没有触发器,类型也匹配的,最后一个字段是char,长度为3!
    其实也就一个插入操作,剩下的代码是:
        ParamByName('ItemCode').AsString := Edit2.Text;
        ParamByName('ItemName').AsString := Edit3.Text;
        ParamByName('ItemDesc').AsString := Edit4.Text;
        ParamByName('CharCode').AsString := tmpCharCode;
        ParamByName('SysCode').AsString := Edit1.Text;
        ParamByName('ItemLevl').AsString := tmpItemLevl;
        ParamByName('CharOrg').AsString := Edit12.Text;
        ParamByName('CharStd').AsString := Edit9.Text;
        ParamByName('CharDesc').AsString := Edit10.Text;
        ParamByName('BegDate').AsDateTime := StrToDateTime(MaskEdit1.Text);
        ParamByName('ExtDate').AsDateTime := StrToDateTime(MaskEdit2.Text);
        ParamByName('CharObj').AsString := Edit11.Text;
        ParamByName('UpdateDate').AsDateTime := StrToDateTime(Edit14.Text);
        ParamByName('UpdatePerson').AsString := edtOperator.Text;
        ParamByName('CommitPerson').AsString := Edit13.Text;
        ParamByName('ParenetName1').AsString := Edit5.Text;
        ParamByName('ParenetName2').AsString := Edit6.Text;
        ParamByName('ParenetName3').AsString := Edit7.Text;
        ParamByName('ParenetName4').AsString := Edit8.Text;
        ParamByName('capitalinfo').AsString := tmpMoneyCode;
        ParamByName('ItemDesc').AsString := Edit4.Text;
        Prepare;
        ExecSQL;
      

  6.   

    代码只能这样写。你最好改一下:
    ParamByName('ItemCode').Value := ...;//不要写成AsString
    ////////////////////////////////
    说的是ParenetName2, ParenetName3, ParenetName4, capitalinfo这四个字段对吧,他们都是什么类型的,还有那个tmpMoneyCode是什么类型
      

  7.   

    ParenetName2, ParenetName3, ParenetName4是varchar类型的,capitalinfo是char的,长度分别为200和3,另外那个tmp开头的是我自定义的字符串型变量,存储代码的!
      

  8.   

    1 ITEMCODE char 10 1
    0 ITEMNAME char 200 1
    0 ITEMDESC varchar 200 1
    0 CHARCODE char 3 1
    0 CHARUNIT char 10 1
    0 SYSCODE char 3 1
    0 ITEMLEVL char 3 1
    0 CHARORG char 50 1
    0 CHARSTD varchar 50 1
    0 CHARDESC varchar 100 1
    0 BEGDATE datetime 8 1
    0 EXTDATE datetime 8 1
    0 CHAROBJ varchar 50 1
    0 CHARSCOP varchar 60 1
    0 CHARGENAME char 20 1
    0 UPDATEDATE datetime 8 1
    0 UPDATEPERSON char 8 1
    0 COMMITPERSON char 8 1
    0 PARENETNAME1 varchar 200 1
    0 PARENETNAME2 varchar 200 1
    0 PARENETNAME3 varchar 200 1
    0 PARENETNAME4 varchar 200 1
    0 PARENETNAME5 varchar 200 1
    0 ISSTAT char 10 1
    0 capitalinfo char 3 -1
      

  9.   

    ParamByName('capitalinfo').AsString := tmpMoneyCode;
    那会不会就是capitalinfo的长度不够
    //////////////////////////////////////////////
    我插入前面16个字段没有问题,可是后面四个任意加上后就不行了,出错提示了!
    ////////////////////////////////////////////
    根据你上面说的又不象是它一个的问题
    //////////////////////////////////////////
    还有一个,遇到  ××× := Edit5.Text;都把它改成  := Trim(Edit5.Text);
      

  10.   

    在Prepare;处设置断点,看看SQL.Text的内容是什么。把它贴出来
      

  11.   

    问题出在ExecSQL处!SQL.Text中的内容就是那个insert语句啊:
    insert into ChargeItem(ItemCode, ItemName, ItemDesc, CharCode, SysCode, ItemLevl, CharOrg, CharStd, CharDesc, BegDate, ExtDate, CharObj, UpdateDate, UpdatePerson, CommitPerson, ParenetName1, ParenetName2, ParenetName3, ParenetName4, capitalinfo)
    values(:ItemCode, :ItemName, :ItemDesc, :CharCode, :SysCode, :ItemLevl, :CharOrg, :CharStd, :CharDesc, :BegDate, :ExtDate, :CharObj, :UpdateDate, :UpdatePerson, :CommitPerson, :ParenetName1, :ParenetName2, :ParenetName3, :ParenetName4, :capitalinfo)
    我试了Trim函数还是不行,另外,capitalinfo为三位,这是没有问题的,我的变量也是三位的!头大啊!
      

  12.   

    是不是跟QUERY的属性有关那,可是为什么前16位就行的那!
      

  13.   

    我要的是运行时的SQL.Text的内容
    ///////////////////
    是不是跟QUERY的属性有关那,可是为什么前16位就行的那!
    /////////////////////////////////
    那你试试把前面的16个中的四个去掉,换成这四个行不行
      

  14.   

    82      15:38:30  SQL Vendor: ODBC - SQLAllocStmt
    83      15:38:30  SQL Vendor: ODBC - SQLExecDirect
    84      15:38:30  SQL Vendor: ODBC - SQLNumResultCols
    85      15:38:30  SQL Vendor: ODBC - SQLDescribeCol
    86      15:38:30  SQL Misc: SQL Server - Set rowset size
    87      15:38:30  SQL Vendor: ODBC - SQLBindCol
    88      15:38:30  SQL Stmt: SQL Server - Fetch
    89      15:38:30  SQL Vendor: ODBC - SQLSetStmtOption
    90      15:38:30  SQL Vendor: ODBC - SQLExtendedFetch
    91      15:38:30  SQL Data Out: SQL Server - Column = 1, Name = CharCode, Type = fldZSTRING, Precision = 3, Scale = 0, Data = 001
    92      15:38:55  SQL Prepare: SQL Server - insert into ChargeItem(ItemCode, ItemName, ItemDesc, CharCode, SysCode, ItemLevl, CharOrg, CharStd, CharDesc, BegDate, ExtDate, CharObj, UpdateDate, UpdatePerson, CommitPerson, ParenetName1, ParenetName2, ParenetName3, ParenetName4, capitalinfo)
    values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)93      15:38:55  SQL Data In: SQL Server - Param = 1, Name = , Type = fldZSTRING, Precision = 10, Scale = 0, Data = 0010000126
    94      15:38:55  SQL Data In: SQL Server - Param = 2, Name = , Type = fldZSTRING, Precision = 4, Scale = 0, Data = aaaa
    95      15:38:55  SQL Data In: SQL Server - Param = 3, Name = , Type = fldZSTRING, Precision = 4, Scale = 0, Data = aaaa
    96      15:38:55  SQL Data In: SQL Server - Param = 4, Name = , Type = fldZSTRING, Precision = 3, Scale = 0, Data = 001
    97      15:38:55  SQL Data In: SQL Server - Param = 5, Name = , Type = fldZSTRING, Precision = 3, Scale = 0, Data = 001
    98      15:38:55  SQL Data In: SQL Server - Param = 6, Name = , Type = fldZSTRING, Precision = 3, Scale = 0, Data = 000
    99      15:38:55  SQL Data In: SQL Server - Param = 7, Name = , Type = fldZSTRING, Precision = 3, Scale = 0, Data = aaa
    100     15:38:55  SQL Data In: SQL Server - Param = 8, Name = , Type = fldZSTRING, Precision = 3, Scale = 0, Data = aaa
    101     15:38:55  SQL Data In: SQL Server - Param = 9, Name = , Type = fldZSTRING, Precision = 3, Scale = 0, Data = aaa
    102     15:38:55  SQL Data In: SQL Server - Param = 10, Name = , Type = fldTIMESTAMP, Precision = 23, Scale = 0, Data = 1/9/2004 0:0:0:0
    103     15:38:55  SQL Data In: SQL Server - Param = 11, Name = , Type = fldTIMESTAMP, Precision = 23, Scale = 0, Data = 1/10/2004 0:0:0:0
    104     15:38:55  SQL Data In: SQL Server - Param = 12, Name = , Type = fldZSTRING, Precision = 3, Scale = 0, Data = aaa
    105     15:38:55  SQL Data In: SQL Server - Param = 13, Name = , Type = fldTIMESTAMP, Precision = 23, Scale = 0, Data = 1/9/2004 0:0:0:0
    106     15:38:55  SQL Data In: SQL Server - Param = 14, Name = , Type = fldZSTRING, Precision = 14, Scale = 0, Data = 显示操作员姓名
    107     15:38:55  SQL Data In: SQL Server - Param = 15, Name = , Type = fldZSTRING, Precision = 3, Scale = 0, Data = aaa
    108     15:38:55  SQL Data In: SQL Server - Param = 16, Name = , Type = fldZSTRING, Precision = 4, Scale = 0, Data = aaaa
    109     15:38:55  SQL Data In: SQL Server - Param = 17, Name = , Type = fldZSTRING, Precision = 4, Scale = 0, Data = aaaa
    110     15:38:55  SQL Data In: SQL Server - Param = 18, Name = , Type = fldZSTRING, Precision = 4, Scale = 0, Data = aaaa
    111     15:38:55  SQL Data In: SQL Server - Param = 19, Name = , Type = fldZSTRING, Precision = 4, Scale = 0, Data = aaaa
    112     15:38:55  SQL Data In: SQL Server - Param = 20, Name = , Type = fldZSTRING, Precision = 3, Scale = 0, Data = 001
    113     15:38:55  SQL Stmt: SQL Server - Fetch
    114     15:38:55  SQL Vendor: ODBC - SQLSetStmtOption
    115     15:38:55  SQL Vendor: ODBC - SQLExtendedFetch
    116     15:38:55  SQL Stmt: SQL Server - EOF
    117     15:38:55  SQL Stmt: SQL Server - Reset
    118     15:38:55  SQL Vendor: ODBC - SQLFreeStmt
    119     15:38:55  SQL Execute: SQL Server - insert into ChargeItem(ItemCode, ItemName, ItemDesc, CharCode, SysCode, ItemLevl, CharOrg, CharStd, CharDesc, BegDate, ExtDate, CharObj, UpdateDate, UpdatePerson, CommitPerson, ParenetName1, ParenetName2, ParenetName3, ParenetName4, capitalinfo)
    values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)120     15:38:55  SQL Vendor: ODBC - SQLAllocStmt
    121     15:38:55  SQL Vendor: ODBC - SQLBindParameter
    122     15:38:55  SQL Vendor: ODBC - SQLBindParameter
    123     15:38:55  SQL Vendor: ODBC - SQLBindParameter
    124     15:38:55  SQL Vendor: ODBC - SQLBindParameter
    125     15:38:55  SQL Vendor: ODBC - SQLBindParameter
    126     15:38:55  SQL Vendor: ODBC - SQLBindParameter
    127     15:38:55  SQL Vendor: ODBC - SQLBindParameter
    128     15:38:55  SQL Vendor: ODBC - SQLBindParameter
    129     15:38:55  SQL Vendor: ODBC - SQLBindParameter
    130     15:38:55  SQL Vendor: ODBC - SQLBindParameter
    131     15:38:55  SQL Vendor: ODBC - SQLBindParameter
    132     15:38:55  SQL Vendor: ODBC - SQLBindParameter
    133     15:38:55  SQL Vendor: ODBC - SQLBindParameter
    134     15:38:55  SQL Vendor: ODBC - SQLBindParameter
    135     15:38:55  SQL Vendor: ODBC - SQLBindParameter
    136     15:38:55  SQL Vendor: ODBC - SQLBindParameter
    137     15:38:55  SQL Vendor: ODBC - SQLBindParameter
    138     15:38:55  SQL Vendor: ODBC - SQLBindParameter
    139     15:38:55  SQL Vendor: ODBC - SQLBindParameter
    140     15:38:55  SQL Vendor: ODBC - SQLBindParameter
    141     15:38:55  SQL Vendor: ODBC - SQLExecDirect
    142     15:38:55  SQL Vendor: ODBC - SQLError
    143     15:38:55  SQL Error: SQL Server - [Microsoft][ODBC SQL Server Driver][SQL Server]将截断字符串或二进制数据。
    144     15:38:55  SQL Vendor: ODBC - SQLError
    145     15:38:55  SQL Error: SQL Server - [Microsoft][ODBC SQL Server Driver][SQL Server]语句已终止。
    146     15:38:55  SQL Vendor: ODBC - SQLError
    147     15:38:55  SQL Error: SQL Server - Unmapped SQL Error Code: 3621
    148     15:38:55  SQL Stmt: SQL Server - Reset
    149     15:38:55  SQL Vendor: ODBC - SQLFreeStmt
      

  15.   

    我靠,吓死我了,看不清楚。你按照下面的方法一步步来:
    鼠标停在代码
      Prepare;
      处,按F5,这一行代码显示红色
    Run ,运行到那个地方的时候会停下来的,按Ctrl+ F7 ,在弹出的对话框中输入
        ADOQuery1(你的Query的Name).SQl.Text  回车看它的内容,如果没有,按一下F7,再通过按Ctrl+ F7看它的内容
    ///////////////////////////////
    然后贴出来
      

  16.   

    dulei115()兄,问题搞清楚了,娘的,是因为那个“显示操作员姓名”惹的祸,我原来是想给自己提示的,这样的话存储时就发生错误了,不过我还是要感谢你,分不够我给你加好吗??