动态datawindow

boy_go 2002-08-13 06:30:08
在动态生成datawindow后,不能改变title行的背景色,但是其text还是可以改的,不知道为什么?
还有动态生成的datawindow,用update时出错,不知道什么设置?
...全文
56 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
mongtze 2002-08-14
  • 打赏
  • 举报
回复
动态创建的表一定要创建主键才能UPDATE,
create table ls_tablename (a char(6) not null constraint pk_a primary key clustered,b,c,...)
这样如果数据窗口还不可以UPDATE的话,你找我!
TianChong 2002-08-14
  • 打赏
  • 举报
回复
改变列背景色要这样写,没问题:
dw_1.Object.columnname.Background.Color = "16777215" //设置某列(columnnmae)颜色为蓝色

主键可以点击菜单"Tools"->"DataBase Painter"(或按Shift+F7)打开"TABLES"节点(就是点击那个+号)->打开你的表所在的节点->右键点击"Primary Key"->选"New Primary Key"(会打开一个对话框)->在"columns:"里选中(打钩)你要作为主键的列->在"Primary Key"里输入一个名称(可随意如PK_column01)->保存->OK.

如果嫌这样太麻烦就在MS SQLSERVER的"Query Analyzer"里输入:

use yourdatabase
go
alter table t_name add(constraint pk_name primary key column(c_name))
go

按F5运行...OK.

qlqllu 2002-08-13
  • 打赏
  • 举报
回复
不知道怎么不能生成主键?
alter table t_name add(constraint pk_name primary key column(c_name));
海洋‘s 2002-08-13
  • 打赏
  • 举报
回复
我自己做了一个动态生成数据窗口的程序,我试过还可以的,不知道是否对你有用。
海洋‘s 2002-08-13
  • 打赏
  • 举报
回复
下面代码你可以参考一下:
string ls_error, ls_sql,ls_table,ls_column
string ls_style, ls_dwsyntax
int li_total,li_num,li_selected
//设置数据来源
li_selected=dw_table.getrow()
if li_selected<>0 then
ls_table=dw_table.getitemstring(li_selected,1,primary!,false)
else
Messagebox("错误!","请选择表名,然后选择列名,选择数据窗口格式后才能创建窗口!",stopsign!)
return
end if
ls_sql="select "
li_total=lb_columns.totalitems()
//确定用户在列表框lb_columns中选择的列名
for li_num=1 to li_total
if lb_columns.state(li_num)=1 then
ls_column=lb_columns.text(li_num)
ls_sql+=ls_column+","
end if
end for
//默认为选择全部列
if ls_column="" then
ls_sql+="*,"
end if
ls_sql=left(ls_sql,len(ls_sql)-1)+" from "+ls_table
//设置显示风格
ls_style = "style(type=grid)"
//获取生成数据窗口对象的源代码
ls_dwsyntax = SQLCA.SyntaxFromSQL(ls_sql, ls_style, ls_error)
IF Len(ls_error) > 0 THEN
MessageBox("错误提示", "错误原因为" + ls_error)
RETURN
END IF
//在数据窗口控件中生成数据窗口对象
dw_master.Create( ls_dwsyntax, ls_error)

dw_master.modify('text.background.color="536870912"')

IF Len(ls_error) > 0 THEN
MessageBox("错误提示", "数据窗口创建错误,其原因是" + ls_error)
RETURN
END IF
//与事务对象建立关联
dw_master.SetTransobject(SQLCA)
//提取数据

dw_master.reset()
dw_master.retrieve( )
xjl 2002-08-13
  • 打赏
  • 举报
回复
gz
boy_go 2002-08-13
  • 打赏
  • 举报
回复
我用上面的方法试过了,不过不成功
还有update的问题,其中数据表也是动态用sql语句生成的,但好象不能生成主键
byfq 2002-08-13
  • 打赏
  • 举报
回复
背景色可以直接指定
ls_sql = 'select ' + ls_selestr + " from " + ls_tabname
//构造datawindow基本语法
ls_style = "style(type=grid)"+ &
" Text(background.mode=0 font.face='宋体' font.height=-10 font.weight=400 font.family=0 font.pitch=2 font.charset=134 background.mode=2 background.color=33350600 border=6) " //+&
//" column(background.mode=0 background.color=15780518 )"
//" Column(background.color=5368709120~t~'if(currentrow() = getrow(),1,0)~' )"
// ~tif(currentrow() = getrow(),rgb(239,215,143),if(mod(getrow(),2)=1,rgb(239,239,239),rgb(223,231,207)))
//currentrow() = getrow(),rgb(239,215,143),if(mod(getrow(),2)=1,rgb(239,239,239),rgb(223,231,207))
//column(background.mode="0" background.color="15780518~tif(currentrow() = getrow(),rgb(239,215,143),if(mod(getrow(),2)=1,rgb(239,239,239),rgb(223,231,207)))" )'

debugbreak()
//
ls_dwsyntax = SyntaxFromSQL(sqlca, ls_sql , ls_style, ls_dw_err)
If ls_dw_err <> '' Then
MessageBox("提示", ls_dw_err)
Return
End If
dw_1.Create(ls_dwsyntax)
xiaha3 2002-08-13
  • 打赏
  • 举报
回复
动态生成的数据窗口所包含的表要有主键
boy_go 2002-08-13
  • 打赏
  • 举报
回复
背景色是这样改的:
string sql;
sql = "name_t.background.color =" + string(rgb(255,0,0));
dw_1.modify(sql);

update出错是:
datawindow does not have updata capability
(没有选多个表)
xirumin 2002-08-13
  • 打赏
  • 举报
回复
title行的背景色也可以改, 前提是你生成datawindow时要为其指定相应的名字
update出什么错, 是否是选了多个表而没指定allow update属性?

611

社区成员

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

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