ADO中删除数据出错,想办法解决它,进来看看,如何?(50分)

J

jettop

Unregistered / Unconfirmed
GUEST, unregistred user!
我用ADOConnection1 + ADOQuery1 + DataSource1 机制访问 MS SQL2000,
前端用 DBEdit + DBGrid 同时感知 DataSource1 。
方法:
第一步:ADOQuery1.SQL.Add('SELECT * FROM TAB1');
ADOQuery1.Open;
第二步:
DataSource1.DataSet.Delete;
这时出错提示:“无法为更新定位行。一些值可能在最后一次读取后已更改。”
问:要如何解决这类问题?如何实现删除更为有效,更安全的解决方案??

同时问另一问题:
因为MS SQL2000中表的FieldType 为 CHAR 型,
在前端的DBEdit中,我想在其感知它时,会截断多余的空格?
就象感知varchar型字段一样。

谢谢!




 
1.程序在编辑某数据时候﹐不允许其它用户或者你的其它代码修改提交该数据﹗
2.数据库字段设计时 Char --> varChar
 
针对2
我当然知道Char-->varchar
但这是不可能的,因为DB是人家定好的,我不可能改它,工作量大也不现实,但同时是CHAR
人家可以实现。
 
1.好象你没有让ADOQUERY进入编辑状态。
2.你可以试试对 DBEDIT 的 ONCHANGE进行编程,以便截掉空格。
 
jettop:
1.表TAB1設計應該不是很嚴謹,
TAB1里應該有一個關鍵字段,比如字段"no" ,這個字段值必須是唯一的,
當然你也可以設幾個字段為關鍵字.
2.當你刪除一個表的記錄的時候,數據庫會先找關鍵字段,找到了才會刪除.
你上面的情況應該是沒有關鍵字段,並且表里有兩條完全相同的記錄.
數據庫就不知道刪除那條記錄了.檢查一下你的表記錄
 
为啥不用SQL语句进行删除操作呢?
 
可用Trim()去除空格
 
我也有这样的问题,一直未能解决,期待!!![:(!]
 
第二个问题
在adoQuery 的该字段的onGetText 事件里:
Text := trim(sender.asstring);
 
针对1:
这问题我碰到过,我碰到时是因为我Sql Server 的表里设计了触发器的原因
还有后台的数据有可能已经更新也会发生的
你也可以用Query1.delete 试一下
 
第一个问题我已解决,问题出在我的SQL语句,“SELECT A.*,B.* FROM A,B WHERE A.F1=B.F1"
当提交SQL时,A表有数据,而B表没有数据,所以删除失败。[:)]

第二个问题,我对各位仁兄的方法都试了,仍不能解决。我当初认为这是一个小问题,拖到
最后处理,可是看来这个问题不小,还请兄弟们多帮忙,以解我烧眉之急,谢谢!!![:(]
 
试试ADODataSet
 
adoquery1.Aftersroll事件中
adoquery1.edit;
adoquery1.fieldbyname(yourfield).asstring := trim(adoquery1.fieldbyname(yourfield).asstring)
 
这个问题主要是你没有设定一个唯一字段引起的,增加一个自增长字段就可以了,这种现像在access中常
发生
 
第一个问题是因为你对数据集open导致的,你用ADOQuery1.ExecSQL 应该是可以解决的了
第二个问题只能是试试trim函数了
 
肯定是你用的多个ADOQUERY,应用冲突了
要么就是你在这个过程中用一个ADOQUERY查询了两次,这样的话再加个ADOQUERY就好了
分开用就好了
 
1.char => varchar

2.删除最好用别的方式.
adoquery1.execsql(sql);
 
1:直接用adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.text;='delete from tab1 ';
adoquery1.execsql;
不要先open了,再用datasource.dateset删除.
2.用trim可以的,在adoquery的afterscroll里写>:
dbtext1.text;=trim(dbtext1.text)
这样只是在显示的时候去掉了空格,实际的数据库里面还是有空格的.
如果想将数据库里面的空格也去掉,就只能用edit....post了
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
968
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
919
DelphiTeacher的专栏
D
顶部