关于一个通过ODBC向服务器的数据库添加记录的问题(急)

黑兵 2004-07-01 02:49:29
问大家一个问题。我用ODBC连接的服务器的SQL Server2000数据库。现在想往数据库里添加一条记录,用以下两种方法总显示出错。不知何故,高手请帮忙,马上给分
数据库格式如下:
id 自增1
jlrq 日期型
bumen char型
tuanhao char型
zhaiyao char型
shouru 整型
zhichu 整型
zhgl char型
lrr char型
lsh char型
rz char型
lb char型
rs 整型

方法1.
if (Trim(ComboBox1->Text)=="收入")
{
sss="insert into htllsz_mingxi(jlrq,bumen,tuanhao,zhaiyao,shouru,zhichu,zhgl,lrr,lsh,rz,lb,rs) values("+DateTimePicker1->Date+",'"+lshbm+"','"+Trim(Edit2->Text)+"','"+Trim(Edit3->Text)+"',"+StrToInt(Trim(Edit4->Text))+",0,'无','"+Trim(Form1->yh->Caption)+"','"+p+"','否','"+Trim(ComboBox1->Text)+"',"+StrToInt(Trim(Edit5->Text))+")";
}
else
{
sss="insert into htllsz_mingxi(jlrq,bumen,tuanhao,zhaiyao,shouru,zhichu,zhgl,lrr,lsh,rz,lb,rs) values("+DateTimePicker1->Date+",'"+lshbm+"','"+Trim(Edit2->Text)+"','"+Trim(Edit3->Text)+"',0,"+StrToInt(Trim(Edit4->Text))+",'无','"+Trim(Form1->yh->Caption)+"','"+p+"','否','"+Trim(ComboBox1->Text)+"',"+StrToInt(Trim(Edit5->Text))+")";
}
Form3->Query1->RequestLive=true;
Form3->Query1->Active=false;
Form3->Query1->SQL->Clear();
Form3->Query1->SQL->Add(sss);
Form3->Query1->ExecSQL();
方法2.
Form3->Query1->RequestLive=true;
Form3->Query1->Insert();
Form3->Query1->FieldValues["jlrq"]=DateTimePicker1->Date;
Form3->Query1->FieldValues["bumen"]=lshbm;
Form3->Query1->FieldValues["tuanhao"]=Trim(Edit2->Text);
Form3->Query1->FieldValues["zhaiyao"]=Trim(Edit3->Text);
if (Trim(ComboBox1->Text)=="收入")
{
Form3->Query1->FieldValues["shouru"]=Trim(Edit4->Text);
Form3->Query1->FieldValues["zhichu"]=0;
}
else
{
Form3->Query1->FieldValues["shouru"]=0;
Form3->Query1->FieldValues["zhichu"]=Trim(Edit4->Text);
}
Form3->Query1->FieldValues["zhgl"]="无";
Form3->Query1->FieldValues["lrr"]=Trim(Form1->yh->Caption);
Form3->Query1->FieldValues["lsh"]=p;
Form3->Query1->FieldValues["rz"]="否";
Form3->Query1->FieldValues["lb"]=Trim(ComboBox1->Text);
Form3->Query1->FieldValues["rs"]=Trim(Edit5->Text);
if(Form3->Query1->State==dsEdit)
{
Form3->Query1->Post();
}
...全文
163 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
黑兵 2004-07-02
  • 打赏
  • 举报
回复
没有人遇到过这种情况么?
黑兵 2004-07-02
  • 打赏
  • 举报
回复
说得再具体点。
我把在登录窗体中放入了三个Query控件和一个Database控件
控件的设置如下(为了不出现数据库的登录窗对话框):
DATABASE NAME=lsz_database
USER NAME=huguangtao
ODBC DSN=lsz
OPEN MODE=READ/WRITE
SCHEMA CACHE SIZE=8
SQLQRYMODE=
LANGDRIVER=
SQLPASSTHRU MODE=SHARED AUTOCOMMIT
SCHEMA CACHE TIME=-1
MAX ROWS=-1
BATCH COUNT=200
ENABLE SCHEMA CACHE=FALSE
SCHEMA CACHE DIR=
ENABLE BCD=FALSE
ROWSET SIZE=20
BLOBS TO CACHE=64
PASSWORD=23230119750515001216117
USERNAME=huguangtao
整个程序所有用到的数据库操作都是利用登录窗体(Form3)中的Query控件。
但我发现。修改记录好使,就是插入记录不行,不知道为什么。大家帮帮忙。
黑兵 2004-07-02
  • 打赏
  • 举报
回复
Append();
故障依旧。。。。。
Query1:Cannot modify a read-only dataset.
====================
天啊,是不是BCB6整我啊。
JavaD 2004-07-02
  • 打赏
  • 举报
回复
确实很奇怪,试试Append();
黑兵 2004-07-02
  • 打赏
  • 举报
回复
还有没有别的办法?拜托各位了。
rfa 2004-07-01
  • 打赏
  • 举报
回复
楼主把游标的位置设置为“客户端”试试。
Form3->Query1->CursorLocation = clUseClient; //在Delphi中是设置为这个值,在BCB中记得也是设置为这个,如果不是楼主就自己再查一下吧,反正就是这个意思。

对于像ACCESS这种的本地数据库系统可以不用考虑游标位置,但是对于SQLserver或者Oracle等这种大型数据库系统就一定要主意这个问题了。游标在“服务端”的话便于时事响应数据库的变化,但是代价就是楼主遇到的这种莫名其妙的情况了,所以如果对数据的时事性要求不高的化就用“客户端”模式就完全应付的了。
黑兵 2004-07-01
  • 打赏
  • 举报
回复
怎么样改变Query控件的只读?我没有用session控件
lcxhjg 2004-07-01
  • 打赏
  • 举报
回复
你有没有用session控件啊,用它有时也会出错的。另一可能就是改变数据为只读了,去点就可以了!
WuChenCan 2004-07-01
  • 打赏
  • 举报
回复
说错了,应该是你Query1的记录源设置为只读。
在你的第2种方法前加入
ss= 'select top 0 * htllsz_mingxi'
with Form3->Query1 do
{
Close;
Sql->Text = ss;
Open;
}
试试行不行

Form3->Query1->Close;
Form3->Query1->
WuChenCan 2004-07-01
  • 打赏
  • 举报
回复
是不是你把Query1设置为只读了
黑兵 2004-07-01
  • 打赏
  • 举报
回复
Query1:Cannot modify a read-only dataset.
我加Form3->Query1->RequestLive=true;语句啦
拜托各位。谢谢。
wj964124 2004-07-01
  • 打赏
  • 举报
回复
程序是没有错的,是不是类型不匹配?
WuChenCan 2004-07-01
  • 打赏
  • 举报
回复
你的做法没有什么问题啊,可能是你字段类型和数值不符合或者会不会是你ODBC设置有问题啊!把你的错误信息贴出来啊!
黑兵 2004-07-01
  • 打赏
  • 举报
回复
我用BCB6作的,以往用""是好使的。
yleiou 2004-07-01
  • 打赏
  • 举报
回复
你是在delphi实现的吗

把""换成 '' 后看看怎么样

用"" 是不行的

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧