关于DBLookupComboBox中数据的存盘(100分)

  • 主题发起人 主题发起人 浦欣
  • 开始时间 开始时间

浦欣

Unregistered / Unconfirmed
GUEST, unregistred user!
我在单机数据库中用TDBLookupComboBox控件时,DataField中的数据可以存盘,但在C/S结构的SQL Server数据库中,
DataField中的内容似乎成了只读的,即使通过Edit,FieldByName(MyFieldName).AsString:=Value,Post;直接写数据库
表面上改变,实际上根本没变,为什么?我如何才能实现其功能?
 
TDBLookupComboBox本身就是只读的。一般将一个表的一个字段作为另一个表的字段时
用TDBLookupComboBox来选择,这时需要设置保存 TDBLookupComboBox 的目标字段。
一般对于较少的选项才用 TDBLookupComboBox,选项多的最好用其他控件,
TDBLookupComboBox 是出于与DELPHI以前版本保留的,最好不用。
 
我现在就需要实现从ComboBox下拉框中选择数据,并保存它的编号,请问如何实现?
 
在POST之前,假设你的数据库处于edit状态(没edit则table.edit一下)
直接写
if combobox.text<>'' then
table.fieldbyname('fieldname').as类型:=combobox.text;

 
My Source:
ClientData1.Edit;
ClientData1.FieldByName('filedname').AsString:=val;
ClientData1.Post;
可惜根本没存,ChangeCount根本没变
 
ApplyUpdate
 
不要认为changecount是对的说。
以前碰到过changcount不为修改过的记录数的时候。
 
可我的数据还存住,其它字段没问题?
因为这个问题,我已经耽误了几天了,请各们大侠救救我!我愿意再出200大洋!
 
很多人利用changcount来判断数据是否修改,然后再提交数据。
如果你也是这么做的话,如果说changcount真的有问题那就不会提交数据。
试试直接applyupdates(0);
而且看你写的东西,既然是c/s结构又怎么用的clientdataset?
 
ClientData1.applyupdates(0);
ClientData1.refresh;
 
用ApplyUpdates(-1)、ApplyUpdates(0)直接存盘我都用过
to kusanagi:
服务器端:ADOConnection,ADOQuery,ADOTable,DataSetProvider
客户端:DCOMCONNECTION,ClientDataset
数据库:SQL Server 7.0
操作系统:Win2000 Server
配置:PIII733 /128M/20G/TNT 16M/40X/
你们都没遇到过这个问题,难道是我的机器有问题???

我在服务器端的BeforeUpdates中添加了一个ShowMessage('ok');根本没显示,说明客户
端根本没存,DelaDS根本没变化(不管我是用ApplyUpdates(-1)还是ApplyUpdates(0))
我快要交工了,实在不行,大家给我想个办法绕过这个问题(但表面上看不出来)!谢谢!!!

 
在服务端ADODataSet的AfterOpen事件中加上对所有字段的ProviderFlag的定义。
pfInWhere, pfInUpdate, pfInKey 根据需要和数据库设计来写。
还要在TDataSetProvider上注意ResolveToDataSet属性。
 
哦,忘记告诉你Inprise的人建议不用ADOQuery&amp;ADOTable
用ADODataSet代替。
我用Access的时候用长度为1的Text字段保存权限('0','1')发觉修改的内容不能保存。
后来改变长度为2才可以。不知道你是否也是一样的问题。Good Luck
 
我已经找到问题在哪儿。
我将indexField的字段的类型人nvarchar改为char类型,就好了!
请问nvarchar,varchar,nchar,char到底有什么不同?
 
多人接受答案了。
 
后退
顶部