帮忙看看,这是什么问题?分不够了 只能给30分(30分)

  • 主题发起人 主题发起人 yedixifeng
  • 开始时间 开始时间
Y

yedixifeng

Unregistered / Unconfirmed
GUEST, unregistred user!
帮忙看一下这个往sql server数据库里添加数据的代码,总是提示(将截断字符串或二进制数据。语句已终止。)


for a:=1 to 100 do
begin
//将数据存储到进货历史信息表
if Length(StringGrid1.Cells[2,a])<>0 then
begin
Query2.Close;
Query2.SQL.Clear;
Query2.SQL.Add('Insert 进货信息历史表(单据编号,经受人,进货日期,商品编号,商品名称,单位,数量,单价,合计金额,进货说明,仓库名称,仓库编号)');
Query2.SQL.Add('Values(:A,:B,:C,:D,:E,:F,:H,:G,:I,:J,:M,:N)');
Query2.Params[0].asInteger:=StrToInt(Label4.Caption);
Query2.Params[1].asString:=Edit1.Text;
Query2.Params[2].AsDatetime:=StrToDate(Label8.Caption);
Query2.Params[3].AsInteger:=StrToInt(StringGrid1.Cells[2,a]);
Query2.Params[4].AsString:=StringGrid1.Cells[3,a];
Query2.Params[5].AsString:=StringGrid1.Cells[4,a];
Query2.Params[6].AsInteger:=StrToInt(StringGrid1.Cells[5,a]);
Query2.Params[7].AsFloat:=StrToFloat(StringGrid1.Cells[6,a]);
Query2.Params[8].AsFloat:=StrToFloat(StringGrid1.Cells[7,a]);
Query2.Params[10].AsString:=Query4.FieldByName('仓库名称').AsString;
Query2.Params[11].AsInteger:=Query4.FieldByName('仓库编号').AsInteger;
if Length(StringGrid1.Cells[8,a])=0 then Query2.Params[9].AsString:='无'
Else
Query2.Params[9].AsString:=StringGrid1.Cells[8,a];
Query2.ExecSQL;
end;
end;
 
有数据超过字段定义长度了,你试着一个字段一个字段的增加长度,就行了.不能确定是那个字段.你试试就知道了.
 
先看字段类型是否匹配,再把SQL语句抓出来去ISQL里执行检查-+
 
呵呵,用这种方式就是麻烦.如果是直接把数据作为参数放到sql.text 那你就可以很容易的show出来,或者放一个edit里,然后复制到数据库执行,就可以很快找出问题所在了.
 
一般是值和列不匹配的原因。我不知道你的字段类型,你自己仔细点看看。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
928
SUNSTONE的Delphi笔记
S
I
回复
0
查看
627
import
I
后退
顶部