跪求!!!!想了几天了,郁闷死了
建了一个视图由base,buy2个表组成:buy(顺序码,条形码,进价,采购数量,采购日期)base(条形码,书籍名称,库存量,书籍名称,作者,出版社,零售价)。DBGrid显示的是视图的内容。然后我要输入数据
form1.ADOQuery1.SQL.Clear;
form1.ADOQuery1.SQL.Add('insert into base values(:条形码,:书籍名称,:库存量,:作者,:出版社,:零售价)');
form1.ADOQuery1.Parameters.ParamByName('条形码').Value:=strToFloat(form1.Edit1.Text);
form1.ADOQuery1.Parameters.ParamByName('书籍名称').Value:=form1.Edit2.Text;
form1.ADOQuery1.Parameters.ParamByName('库存量').Value:=strToInt(form1.Edit7.Text);
form1.ADOQuery1.Parameters.ParamByName('作者').Value:=form1.Edit3.Text;
form1.ADOQuery1.Parameters.ParamByName('出版社').Value:=form1.Edit4.Text;
form1.ADOQuery1.Parameters.ParamByName('零售价').Value:=strToFloat(form1.Edit5.Text);
form1.ADOQuery1.ExecSQL;
我用这样输入但是不能执行。因为SQL SERVER里视图不能自动更新,所以我就想直接对基本表进行操作,但是我怎么也找不到一个办法解决。所以要请大家帮帮忙,我想几天了~~都郁闷死了
问题点数:20、回复次数:17Top
1 楼zbk19821023()回复于 2005-01-02 16:05:09 得分 0
大家给意见的时候请详细点,我怕我看不懂~~~嘿嘿Top
2 楼hatum(hatum)回复于 2005-01-02 16:57:56 得分 0
关注Top
3 楼Kshape(C/C++初学者~~~~)回复于 2005-01-02 17:03:05 得分 20
这样吧!
with ADOQuery1 do
begin
sql.clear;
sql.add('insert into base values(:条形码,:书籍名称,:库存量,:作者,:出版社,:零售价)');
//最好加上你要录入的表中的字段名称,以防出错
//比如:insert into base(a,b,c,d,e,f) values(:条形码,:书籍名称,:库存量,:作者,:出版社,:零售价)'
Parameters.ParamByName('条形码').Value:=strToFloat(form1.Edit1.Text);
Parameters.ParamByName('书籍名称').Value:=form1.Edit2.Text;
Parameters.ParamByName('库存量').Value:=strToInt(form1.Edit7.Text);
Parameters.ParamByName('作者').Value:=form1.Edit3.Text;
Parameters.ParamByName('出版社').Value:=form1.Edit4.Text;
Parameters.ParamByName('零售价').Value:=strToFloat(form1.Edit5.Text);
ExecSQL;
end;
//没有编译,如果有问题,请说出问题是什么Top
4 楼hatum(hatum)回复于 2005-01-02 17:07:35 得分 0
SQL SERVER里视图不能自动更新 那如果要更新视图 怎么处理呢?Top
5 楼zbk19821023()回复于 2005-01-02 17:13:33 得分 0
和我的有区别吗?
Top
6 楼zbk19821023()回复于 2005-01-02 17:16:11 得分 0
错误是ADOQuery1:Parameters‘条形码’not found
Top
7 楼Kshape(C/C++初学者~~~~)回复于 2005-01-02 17:30:17 得分 0
你数据库里的字段名称是什么?
有“条形码”吗?
还有:强烈建议你不要用中文名作字段名称!Top
8 楼Kshape(C/C++初学者~~~~)回复于 2005-01-02 17:33:21 得分 0
这样吧!
with ADOQuery1 do
begin
sql.clear;
sql.add('insert into base values(:a,:b,:c,:d,:e,:f)');
//最好加上你要录入的表中的字段名称,以防出错
//比如:insert into base(a,b,c,d,e,f) values(:条形码,:书籍名称,:库存量,:作者,:出版社,:零售价)'
Parameters.ParamByName('a).Value:=strToFloat(form1.Edit1.Text);
Parameters.ParamByName('f).Value:=form1.Edit2.Text;
Parameters.ParamByName('c).Value:=strToInt(form1.Edit7.Text);
Parameters.ParamByName('d').Value:=form1.Edit3.Text;
Parameters.ParamByName('e).Value:=form1.Edit4.Text;
Parameters.ParamByName('f').Value:=strToFloat(form1.Edit5.Text);
ExecSQL;
end;
这样再出问题就没天理了!!!
还有:建议你不要用中文名作变量Top
9 楼hmily1688(没什么好说的)回复于 2005-01-02 17:33:52 得分 0
建议这样直接写成sql语句
query1.close;
query1.sql.text:='insert into base(a,b,c,d,e,f) values('
+ form1.Edit1.Text+','+form1.Edit2.Text+','+form1.Edit7.Text+','
类的,其余的你自己添加,注意要与库中的格式相同。
你可以用showmessage(query1.sql.text)在query1.execsql前来检验一下语句是否正确。
祝在新的一年中成为Delphi大拿Top
10 楼zbk19821023()回复于 2005-01-02 17:34:01 得分 0
晚上,我再来,希望大家能帮帮我Top
11 楼pplushuang()回复于 2005-01-02 19:00:44 得分 0
视图其实就是一组SQL语句,如果是单表视图的话,写的上面的语句,在没有约束的情况下,能实现更新。
便如果是多表视图的话。更新起来是比较困难的。可以直接对视图相关的表进行操作。Top
12 楼hmily1688(没什么好说的)回复于 2005-01-02 19:16:46 得分 0
兄弟我理会错你的意思了。直接更新用来组成你的视图的表,再刷新一下视图就OK了,在我的印象中SQL Server的多表视图用AdO时也能更新Top
13 楼zbk19821023()回复于 2005-01-02 20:04:34 得分 0
谢谢大家的帮助啊!!!~我来了~~~现在去试试 Kshape()的方法
Top
14 楼zbk19821023()回复于 2005-01-02 20:07:26 得分 0
Kshape() 告诉你一个不幸的事
我试试了。还不行
你有油箱吗??
我把程序发给你。你看看
Top
15 楼keple(今天你爬了没?)回复于 2005-01-02 20:15:12 得分 0
呵呵!!Top
16 楼zbk19821023()回复于 2005-01-02 20:18:26 得分 0
还有人能解决这个问题吗???
我喊一天了~~~都用了跪求这样的词语了~~~~诶~~~~`Top
17 楼zbhfyl(沙新月明)回复于 2005-01-03 12:52:25 得分 0
是不是因为他们不想让你跪呀????这么没志气Top




