社区
数据库相关
帖子详情
DataWindow does not have UPDATE capability是什么原因?
ztao_zhou
2005-12-07 05:38:57
提示框出现:DataWindow does not have UPDATE capability.大概是什么原因?已经连接了到了数据窗口,但一运行UPDATE就弹了如上的对话框,是哪设置错了吗?
...全文
2929
7
打赏
收藏
DataWindow does not have UPDATE capability是什么原因?
提示框出现:DataWindow does not have UPDATE capability.大概是什么原因?已经连接了到了数据窗口,但一运行UPDATE就弹了如上的对话框,是哪设置错了吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
j9dai
2005-12-08
打赏
举报
回复
上段摘自秋枫兄的网站
j9dai
2005-12-08
打赏
举报
回复
改变数据窗口更新特性的方法
打开一数据窗口,从Rows菜单中选择的"Update Properties…"系统显示"Specify Update Prorerties"对话框:
A、 如果不允许数据窗口更新数据库,那么就不要选中复选框"Allow Updates",单击"OK"按钮关闭对话框。如果要禁止用户修改数据窗口的某列,那么在数据窗口画笔中将此列的TabOrder值设为0。
B、 如果允许数据窗口更新数据库,选中复选框"Allow Updates"。
C、 在"Table To Update"下拉列表框中选择要更新的表
D、 在"Where Clause For Update/Delete"中选则更新方式。
E、 在"Updatesble Cloumns"通过单击选择可更新的列,被选中的列将加亮显示。
F、 选择了要更新的列后,在"Unique Key Column(s)"列表框中定义唯一键,这个唯一键必须能够在表中唯一的标识一条记录。
G、 在"Key Modification"组框中选择当唯一键列更新时数据行的更新方式。
H、 如果当前表中包括了自动增长序号的列(称做标识列,并非所有的数据库都具备此特性),那么在"Indentity Column"下拉列表框中指定该列。
I、 单击"OK"关闭对话框。
注意事项:如果在"Indentity Column"下拉列表框中指定某列为标识列,那么就不要把该列选择为可更新列。否则,如果把该列选择为可更新列,那么数据窗口产生的任何更新数据库的Update语句都将失败。
关于"Specify Update Prorerties"对话框中的"Key Modification"组框的详细意义。"Key Modification"组框中两个选项指定当唯一键列被更新时的数据行的更新方式。
A、 选中"Use Delete Then Insert"单选钮,在唯一键列被更新的情况下,PoweBuild将首先删除原来的行,然后使用新的键值插入新行。(这种方法减少了数据库重新组织数据的次数,但也存在一些潜在的问题,当某个表的主键是另一个表的外键并在定义外部键时将删除方式定义同时删除(级联删除)时,应用程序可能并不想使用"Use Delete Then Insert"选项。)
B、 选中"Use Update"单选钮,在唯一键列被更新的情况下,PoweBuild修改行的键值(并非所有的数据库都支持主键更新,也就是说,如果您使用的数据库管理系统不支持主键更新,在这里您就不能选择"Use Update"选项)。这种方法避免了与外部键相关的级联删除问题。
关于"Specify Update Prorerties"对话框中的"Where Clause For Update/Delete"的三个选项的具体含义:
A、 Key Columns
当选中"Key Columns"单选钮时,数据窗口只使用"Unique Key Columns"列表框中选择主键来构造Where子句,该选项经常在单用户应用程序环境中使用,当PowerBuild生成Update或 Delete语句时,它比较某行键值列的原始值与数据库相应行键值列的值,如果两者相等,则更新操作或删除操作被成功的执行。
B、 Key and Updateable Columns
当选中"Key and Updateable Columns"单选钮时,PowerBuild在创建的Update或Delete语句中将键值列的原始值与可更改列的原始值与数据库的相应值进行比较。当这些值相等时,修改或删除相应的行(即Update或Delete语句成功执行)。
C、 Key and Modified Columns
当选中"Key and Modified Columns"单选钮时,PowerBuild在创建的Update或Delete语句中将键值列的原始值和已修改可更改列的原始值与数据库的相应值进行比较。当这些值相等时,修改或删除相应的行,该选项是对数据完整性的保护和操作并发性的折中。
lovelihp
2005-12-08
打赏
举报
回复
打开数据窗口,rows-update properties 选好更新的表和字段
Helloworld2004
2005-12-07
打赏
举报
回复
你那张表没有主键造成的
伟大的左前卫
2005-12-07
打赏
举报
回复
http://www.china-askpro.com/msg40/qa88.shtml
lw1a2
2005-12-07
打赏
举报
回复
ROWS-UPDATE PROPERTIES,在里面选要更新的字段
xiaoplx
2005-12-07
打赏
举报
回复
打开数据窗口,rows-update properties 选好更新的表和字段
PowerBuilder
Data
Window
的数据更新技术及应用.doc
PowerBuilder
Data
Window
的数据更新技术及应用
PB 刷新
data
window
当前行的数据
当数据存在主次表时,当更新了次表数据后,主表数据在后台有更变时。可利用刷新主表当前行的方法重显主表数据。 /************************************************************ 函数名称: f_refresh_currentrow(adw) 功 能: 刷新DW当前行数据,不可刷新NO
update
or 带arguments的DW 参数说明: adw 目标DW 返 回 值: integer 成功返回1,失败返回-1 作 者: sean 创建时间: 2010年8月18日 ************************************************************/ string ls_
data
object string ls_keys[] //key Column Name string ls_dbname[] //key field Name string ls_coltype[] //field style string ls_tablenm //table name string ls_condition //sql Condition long ll_currentrow //Current Row numeric long ll_column //Column count integer i
data
window
ldw
data
store l
data
store ldw=adw if ldw.rowcount( )=0 then return -1 elseif trim(ldw.describe( "
data
window
.table.arguments"))<>'?' then messagebox('','刷新数据窗口当前行失败!,数据窗口需要参数',exclamation!) return -1 else ll_currentrow=ldw.getrow( ) FOR ll_column = 1 TO long(ldw.object.
data
window
.column.count)//key names If ldw.Describe("#"+string(ll_column)+".key") ='yes' Then i++ ls_keys[i]=ldw.Describe("#"+string(ll_column)+".name") ls_dbname[i]=ldw.Describe("#"+string(ll_column)+".dbname") ls_coltype[i]=ldw.Describe("#"+string(ll_column)+".coltype") End If NEXT if upperbound(ls_keys[])=0 then messagebox('','刷新数据窗口当前行失败!,没有主键',exclamation!) return -1 else ls_tablenm=left(ls_dbname[1],pos(ls_dbname[1],'.') -1) //table name for i=1 to upperbound(ls_keys[]) if pos('numb,deci,long,',LeftA(ls_coltype[i],4) +',')>0 then ls_condition+="and "+ls_dbname[i]+"="+string(f_getitem(ldw,ll_currentrow,ls_keys[i])) else ls_condition+="and "+ls_dbname[i]+"='"+string(f_getitem(ldw,ll_currentrow,ls_keys[i]))+"'" end if next ls_condition=mid(ls_condition,4) //sql Condition l
data
store=create
data
store l
data
store.
data
object=ldw.
data
object l
data
store.settransobject( sql
ca
) if f_addwhere_retrieve(l
data
store,ls_condition)=1 then if l
data
store.rowcount( )=1 then ldw.object.
data
[ll_currentrow]=l
data
store.object.
data
[1] ldw.setitemstatus( ll_currentrow, 0, primary!, NotModified!) //if ldw.getrow( )<>ll_currentrow then ldw.scrolltorow( ll_currentrow) end if else messagebox('','刷新数据窗口当前行失败!,条件语法错误',exclamation!) return -1 end if destroy l
data
store end if end if
data
window
.net 2.5
data
window
.net 2.5 安装程序很老得一款Sysbase 控件,最后一独立版本有需要的下载
Data
Window
.NET 2.5 完美破解补丁
Data
Window
.NET 2.5 完美破解补丁,VS2005中也可以使用
pb中xml导入
data
window
源码
pb中xml导入
data
window
源码
数据库相关
754
社区成员
12,762
社区内容
发帖
与我相关
我的任务
数据库相关
PowerBuilder 数据库相关
复制链接
扫一扫
分享
社区描述
PowerBuilder 数据库相关
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章