pb中不同数据库表的导入代码自我鉴定怎么写写啊 不用数据窗口控件 谁帮帮我啊

PB中Datawindow的使用技巧
使DataWindow列只能追加不能修改
如何使DataWindow中的数据只能追加新记录而不能修改,利用 Column 的 Protect
属性可以很方便的做到这一点,方法如下:
将每一列的 Protect 属性设置为:
If( IsRowNew(), 0, 1) )
在 PowerScript 中可以动态修改 Protect 属性:
dw_1.Modify("column_name_here.Protect='1~tIf(IsRowNew(),0,1)'")
这样,DataWindow 中只有新追加的记录可修改,而其他记录是只读的。
如何在DataWindow中实现列的自动折行
我们在PowerBuilder应用程序的开发过程中, 使用DataWindow时, 经常会遇
到某列的数据太长, 不能同时全部显示的情况. 若采用自动水平滚动, 操作起
来又不够简便. 下面介绍一种方法, 实现列数据多行显示, 即实现列数据的自
动折行.具体步骤如下:
1) 在DataWindow Painter中打开此DataWindow.
2) 在需设定自动折行的列上双击鼠标, 弹开此列的属性窗口.
3) 选择Position标签, 选中Autosize Height 多选框.
4) 选择Edit标签, 不选中Auto Horz Scroll多选框.
5) 单击OK按钮, 保存所做的修改.
6) 点中Detail Band (即写有Detail的灰色长带), 单击鼠标右键, 选择
Properties... 菜单项.
7) 选中Autosize Height多选框.
8) 单击OK按钮, 保存所做的修改.
9) 保存此DataWindow.
连在一起的汉字(中间没有标点或空格分隔), 系统将认为是一个单词, 不
会自动进行折行. &
在数据出口中实现动画
要实现动画,必须要有定时器,在数据窗口中已经有了一个定时器,双击数据窗口将弹出的对话框,在Timer
Interval中定义大于零的值就有定时器(可以精确到毫秒),有了这个定时器就可以实现动画了。比如要改变某字段的背景颜色,可设
ackgound.color=RGB(Integer(Right(string(now(),'hhmmssf'),1))*256/10,Integer(Right(string(now(),'hhmmssf'),1))*256/10,0)
  当然,您不仅可以改变背景颜色,而且可以改变字体等等任何属性,使他可以动起来! &
使数据窗口中的被选中行具有更好的外观
大家都知道,在选择数据窗口中的某一行时,如果使用pb提供的选择函数SelectRow(),那么的外观真是不能恭维,单调而古板的蓝色背景,可能和您的漂亮而生动的应用程序格格不入。有没有办法改变呢?当然有啰,请听我慢慢道来。
改变某一行的背景比较简单,改变每一列的背景属性(backgroundcolor)即可,可要根据鼠标选择情况自动改变,并可以返回被选中的行可能还需要一定的技巧。下面分单行选择和多行选择分辨说明。
  单行选择比较简单,我们只要将所有字段的背景色的表达式改为:
if(GetRow()=CurrentRow(),RGB(255,126,0),RGB(0,0,0))
  其中第一个颜色为被选中的颜色,第二个颜色未被选中的颜色。然后用GetRow()代替GetSelectedRow()函数来得到被选中的行。&
  多行选择比较复杂,如果单纯依靠改变数据窗口的属性没法实现,我们必须使用数据窗口属性和代码结合起来才能实现
  首先,改变数据窗口的SQL语句,增加一个计算字段:0 as flag,Select 语句改为:
Select col1,col2 ,1 as flag from tablename where .....,
  当返回数据窗口painter时,您就会发现多了一个字段flag,我们就是利用这个字段保存行被选中的信息。
  其次,修改各个字段的背景颜色属性,设置为:if(flag=1,RGB(255,126,0),RGB(255,255,255))
  第三:在数据窗口控件中,增加对clicked 事件的处理,代码如下:
if row&1 then return // setredraw(false)
if this.o b j e c t.flag[row]=1 then //如果该行被选中,撤销选择,否则选中该行
 this.Object.flag[row]=0
 this.Object.flag[row]=1
setredraw(true)
您还可以定制本选中行的字体,文本属性等等。原理相同,不再赘述。
将日期型字段初始化为当天的日期
   使用 Column Specifications 对话框来设置数据的初始值是一个比较好又比较通用的方法。
为了将日期型字段初始化为当天的日期,只要设置初始化值为today,而不是today()即可。同样设置初始值为NUll,可以使用null,而不是
在DataWindow中调整列顺序
在 Gird 风格的 DataWindow 中,列的排列顺序是按照你选择 Column
的顺序排列的,并且不能改变.要改变列的顺序则必须重新制作 DataWindow.
最近我发现一个办法可以改变列的顺序: 在 DataWindow 画板中打开要修改的 DataWindow,然后按 'Preview'
按钮切换到预览模式下,选择要移动的列标题并拖动到预定位置,然后返回 DataWindow 画板,存盘即可.
&Retrieve时不清除原有Datawindow数据
当你调用Retrieve函数,PowerBuilder自动清除原有DataWindow然后Retrieve数据。在Datawindow
RetrieveStart事件中,使用Return 2,这样PowerBuilder不会清除原有数据而是追加新数据。
美化DataWindow的显示效果
使DataWindow
的单双行显示颜色不同,不仅仅可以使你的应用程序更显专业性,并使数据的可读性增强。先调出你需要改动的DataWindow,在Detail
band按下右键选择Properties,选择Tab页中的Expressions,在color属性中输入下面内容:(注意是在Detail明细显示
段按右键,而不是在Column上) IF(MOD(GETROW(),2)=0,RGB(192, 192, 192), RGB(255,
255, 255)) 马上Preview一下,看一看效果如何。
使用Line建立漂亮的Grid DataWindow的技巧
然PowerBuilder有Grid风格的DataWindow,但不够灵活,如果想打印一张边框粗线条或双线,内框为细线条的表格直接使用Grid风
格的DataWindow就不能实现。因此许多人都用Tabular风格的DataWindow,然后自己用Line来实现Grid。
在调整线条位置是一个即伤脑筋又伤眼睛的事件,而一旦需要调整行高,所有工作都得重来,试一试用下面方法,会大大减轻你的工作量:
在vertical lines,改变它的属性,在Expressions Tab上,y1行上输入0,y2行上输入rowheight()
- 1 在horizontal lines, 设置 y1 和 y2 = rowheight() - 5
这样PowerBuilder会自动调整线的坐标,你只需要设置横线的长度和x1,x2的坐标即可。 马上Preview一下,看一看效果!
你再也不需要因为行的高度发生改变而重新调整线条位置。
& 一.如何创建一个报表,如下形式
Quantity Running Total
5,000 5,000
2,500 7,500
3,000 10,500
12,000 22,500
  对于Running Total列,我们可使用计算列:CumulativeSum(Quantity for
all),即可达到逐渐递增求和的功能。
   二.数据窗口的数据送缓冲区之前确认的四个步骤
判断数据类型是否正确。如不正确则触发ItemError事件。判断数据是否符合有效性规则。如不符合有效性规则,同样触发ItemError事件。
判断是否有数据被改动。判断数据是否通过ItemChanged事件,如果数据和ItemChanged相斥,将触发ItemError事件。
  三.如何在DataWindow中用数据类型为Datetime的列为条件进行查找
  1.当要查找的日期条件是一常数时使用如下表达式:
   ls_Find = "datetime_col
    = DateTime ('1/1/1999')"
  2.当要查找的日期条件是一个变量时使用如下的表达式:
   ls_Find = "datetime_col = DateTime ('" + ls_Date + "')"
  3.当要查找的日期条件是一个DateTime数据类型时使用如下表达式:
   ls_Find = "datetime_col = DateTime ('" + String (ldt_DateTime) +
  四.设置数据窗口Boolean型属性的三种方法
  PowerBuilder提供了三种方法设置数据窗口的布尔型属性,分别是True/False, 1/0,
'Yes'/'No'。例如:
dw_1.Object.address.Visible = 0 dw_1.Object.address.Visible = False
dw_1.Object.address.Visible = 'No'
  PowerBuilder在处理上以字符串的形式保存属性,而不考虑属性值是布尔型、长整型或是字符型。
为了进一步理解,可以导出一个数据窗口并查看它的原码,可以发现即使是列的颜色属性它也是使用带双引
号的数字来表达。
  五.如何在DataWindow中快速删除多行
  在开发过程中可能经常有要进行多行删除的操作,一般都使用循环语句进行操作:
FOR ll_RowOn = 1 TO dw_1.RowCount() dw_1.DeleteRow(ll_RowOn)
  一个快速的删除方法是把要删除的行从主缓冲区中移到删除缓冲区中。例如,删除缓冲区中所有的行:
dw_1.RowsMove(dw_1, 1, dw_1.RowCount, Primary!, dw_1, 1,
  不过不要忘了过滤的行在不同的缓冲区中。
  六.如何在DataWindow的SQL语法中不使用SELECT DISTINCT实现删除重复的行
  起先对你要显示唯一值的列进行排序:"city A",然后增加如下过滤字符串:" city &
& city [-1] or GetRow () = 1"
  七.如何在分组形式的DataWindow中分别显示各组的行号
  当我们为Datawindow的每一行显示行号时,可以简单的放一个表达式为GetRow()计算列。但是对于分组的Datawindow,要分别显示各组的行号,则应使用表达式为
GetRow() - First(GetRow() for Group 1) + 1的计算列。
  八.如何改变列的字体颜色,提醒用户此列已做修改
  在列的Color属性中,输入如下表达式
IF (column_name &
&column_name.Original, RGB(255, 0, 0), RGB(0, 0,
  在这个条件中,如果此列已改变,则显示红色字体,否则显示黑色字体。这个表达式主要用column_name
column_name.Original比较当前列的值和原始列的值是否相同来达到判断的目的。
  九.在数据窗口中移走行,但不是去做过滤或删除操作
  RowsDiscard()函数可做到这一点,它在数据窗口中执行移除工作,但被移走的行它不可被删除或做任何修改性的保存。
十.如何在多行显示的DataWindow 中的Footer
Band中显示当前数据的首行和最后行的行号
  我们先看两个计算列的表达式: IF (GetRow() = First(GetRow() FOR Page), 1, 0) //
1 为当前页的第一行
IF (GetRow() & & 1 AND GetRow() =
Last(GetRow() FOR Page), 1, 0) // 1 为当前页的最后一行
  由上面可知,在Footer Band中设置如下计算列表达式:
'Rows ' + String(First(GetRow() FOR Page)) + ' to ' +
String(Last(GetRow() FOR Page)) + ' are displayed'。
即可达到这项功能。 &
使可编辑的数据窗口只读
有时,你可能需要将一个用于编程的数据窗口用作显示目的,可以有以下几种方法来实现这一要求:
1。建立两个数据窗口,一个用于编辑,一个用于显示
2。将数据窗口中的全部对象的taborder设置为0.
3。也可以将数据窗口中的列的protect属性设为On或Off,但你不能使用protect属性进行编辑操作
4。数据窗口有一个将datawindow设为只读的属性(readonly),使用它最方便。
数据窗口检查重复行
dw_1.SetSort ("user_id A")
dw_1.Sort()
dw_1.SetFilter ("user_id = user_id[-1]")
dw_1.Filter()
if dw_1.RowCount() & 0 then
& Messagebox("注意", "用户编码重复.")
dw_1.SetFilter ("")
dw_1.Filter() &
如何在分组形式的DataWindow中分别显示各组的行号
---- 当我们为Datawindow的每一行显示行号时,可以简单的放一个表达式为GetRow()
---- 计算列。但是对于分组的Datawindow,要分别显示各组的行号,则应使用表达式为
GetRow() - First(GetRow() for Group 1) + 1的计算列。
如何能让数据窗口的某几列在其他列横拉时固定不动
////////////////////////////////////////////////////////////////
//& 功能说明:用于冻结左边的滚动栏
//& 变更记录: 变更或版本更新的时候
////////////////////////////////////////////////////////////////
if pane = 1 then
i = integer(this.o b j e c
t.datawindow.horizontalscrollposition2)
if i & 1 or isnull(i) then return
if scrollpos & 0 then
this.o b j e c t.datawindow.horizontalScrollPosition = 0
i = integer(this.Object.DataWindow.HorizontalScrollSplit)
if i & 1 or isnull(i) then return
if i & scrollpos then
this.o b j e c t.datawindow.horizontalScrollPosition2 = i
在数据窗口中如果要使其中一列的属性为只读,也就是不允许用户修改,那么只需简单地将这一列的Table
Order 设置成0就可。然而,在有些情况下
需要对这一列的某些行修改,而某些行不能修改,这就要用到这一列的protect属性了。打开列的属性中的Expressions,在protect中输入条件判别
式。例如:允许用户修改新增加的记录,而检索出来的记录则不允许修改。条件判别式可以写成如下:
if(isRowNew(),0,1)&
在 PowerScript 中可以动态修改 Protect 属性:
dw_1.Modify("column_name_here.Protect='1~tIf(IsRowNew(),0,1)'")
这样,DataWindow 中只有新追加的记录可修改,而其他记录是只读的。 &
//控制DATAWINDOW里每页显示的行数
1、在Datawindow中增加一个计算域,起名为:ceil_page,此计算域必须放在Detail段中,
Expression中输入 ceiling(getrow()/25) 25表示每页打印25行,也可以是一个参数。
2、分组,选择菜单Rows/Create Group,选择ceil_page
按ceil_page分组,并选中New Page On Group Break(意思是新组开始时换页)。
3、将此计算域设为隐藏(在属性页中的expression页中在visible属性中写0)。
4、补空行:
在窗口的open事件中写如下代码:
long li_count,li_i
li_count=dw_1.retrieve()
if mod(li_count,25)&&0 then
for li_i=1 to 25 - mod(li_count,25)
dw_1.insertrow(0)
//数据窗口的closeQuery事件:提示保存数据
dw_1.AcceptText()
IF dw_1.ModifiedCount() + dw_1.DeletedCount() & 0
CHOOSE CASE
MessageBox("操作提示","数据已经发生变化,是否保存?",Question!,YesNoCancel!,1)
cb_save.TriggerEvent(clicked!)
Return 0//不做任何操作直接关闭窗口
Return 1//不会运行Close Event,维持原来的情况
END CHOOSE
Getchild函数主要被用来得到一个数据窗口的子数据窗口
该函数在两种情况下可以使用,1、取出数据窗口对象的下拉式数据窗口;
&&&&&&&&&&&&&&&&&&&&&&&&&&&
2、取出复合风格(composite)数据窗口对象里所嵌入的子数据窗口对象。
语法:integer dwcontrol.GetChild (string name, REF
DataWindowChild
dwchildvariable )
这段程序取出一个composite数据窗口对象的两个子数据窗口,并对他们进行过滤,和排序的操作。
String ls_filter
DataWindowChild dwc_czrw,dwc_czx//定义子数据窗口变量
dw_dy.Settranso b j e c t(sqlca)
dw_dy.Retrieve()
dw_dy.GetChild("dw_2",dwc_czrw)
dw_dy.Getchild("dw_1",dwc_czx)
ls_filter = "czrw_bh =
'"+dw_3.GetItemString(dw_3.GetRow(),"czrw_bh")+"'"//过滤条件
dwc_czrw.SetFilter(ls_filter)
dwc_czrw.Filter()
ls_filter = "czx_rwbh =
'"+dw_3.GetItemString(dw_3.GetRow(),"czrw_bh")+"'"
dwc_czx.SetSort("czx_sx A")
dwc_czx.Sort()
dwc_czx.SetFilter(ls_filter)
dwc_czx.filter()
当然也可以通过数据共享(ShareData)等方式操作子数据窗口中的数据。
访问复合数据窗口对象.方法 :dw_dy.o b j e c t.dw_1.o b j e c t.对象
例子2&& 下拉数据窗口动态过滤
& 在数据窗口dw_1的ItemFocusChanged事件中写入如下脚本:
Integer rtncode
String ls_nowFld,ls_deptid,ls_sql
DataWindowChild fld_child
rtncode = dw_1.GetChild("Unit_id",fld_child)
//获得Unit_id字段名下拉数据窗口的句柄
If rtncode = -1 Then MessageBox("错误!", "不是下拉数据窗口!")
fld_child.SetTransObject(SQLCA) //设置事务对象
ls_sql = Lower(fld_child.GetSQLSelect())// 获得DDDW的SQL语句
// 去除Sql 语句中的Where条件子句, 如原Sql 语句中须有Where条件子句,此处则需进行较
//复杂的处理,应视具体情况而定。
if Pos(ls_sql, " where ")&0 then ls_sql =
Left(ls_sql,Pos(ls_sql, " where "))
//重新设置Sql 语句中的Where条件子句
ls_deptid=dw_1.Object.dept_id[GetRow()] //取得当前dept_id选定值
ls_sql = ls_sql + " Where dept_id = '" +Trim(ls_deptid)+"'"
//重新设置Sql 语句
fld_child.SetSQLSelect(ls_sql)
fld_child.Retrieve()//取得满足条件的数据 &
从数据窗口中获取数据
单条:假设我们要读取dept_id字段的第一笔数据,可以用下列方式表示∶li_id = dw_1.o b j e c
t.dept_id[1]
&假设我们要读取第一行中第二个字段的数据,可以用下列方式表示∶ls_name = dw_1.o b
j e c t.DATA[1,2]
&假设我们要读取dept_id字段的所有数据,可以用下列方式表示∶li_array = dw_1.o
b j e c t.dept_id.CURRENT
&假设我们要读取过滤缓冲区 (filter buffer)
内dept_id字段的第一笔数据,可以用下列方式表示∶li_id = dw_1.o b j e c
t.dept_id.Filter
&假设我们要读取从第二笔数据的第一个字段到第三笔数据的二个字段之间的数据,表示∶lstr_array
= dw_1.o b j e c t.DATA[2,1,3,2]
&假设我们要读取整个第二笔的数据,可以用下列方式表示∶lstr_dept = dw_1.o b j
e c t.DATA[2]
使用GetItemX ( )函数& x为string
& lstr_name = dw_1.getitemstring (li_count ,
"emp_name")& li_count为哪一条
& 多条:string ls_name[ ]
ls_name = dw_ 1.o b j e c t.emp_name.current
数据的读取&& 一般格式∶数据窗口控件.Retrieve (
)& 返回个数 ,-1为错误
增加数据&&&
数据窗口控件.InsertRow (行数)&&
参数为0加到最后
数据的删除&&&&&&&
数据窗口控件.Deleterow (行数)
数据的过滤l&& 数据窗口控件.SetFilter
(条件字符串).&&&
& 数据窗口控件.Filter ( ) 用法∶将主要缓冲区 (Primary Buffer)
内不符合过滤条件的数据移到过滤缓冲区 (Filter Buffer)
&&&&&&&&&&&&
例子:string ls_exp&& ls_exp =
"dept_id = 100"&& dw_1.SetFilter
(ls_exp)&&&&&
dw_1.Filter ( )
dw_1.SetSort
("dept_id")&&&&
dw_1.Sort ( )
将数据从所有的缓冲区 (Buffer)
dw_1.ReSet ( )
计算数据数目。例如∶dw_1.Rowcount ( )& 类似: .DeletedCount ( )
.ModifiedCount ( ) .FilteredCount ( )
数据窗口的滚动& 数据窗口控件.ScrollToRow (行数)
数据窗口属性改变:
&& 描述数据窗口对象本身颜色,可以表示如下∶long
ll_color&&&
ll_color = dw_emplist.Describe ("DataWindow.Color")
&&& 描述数据窗口对象内标题
dept_id_t 的颜色,可以表示如下∶long
ll_color&& ll_color =
dw_emplist.Describe ("dept_id_t.Color")
修改数据窗口对象本身颜色,可以表示如下:dw_emplist.Modify ("DataWindow.Color =
&&& 修改数据窗口对象内标题
dept_id 的颜色,可以表示如下∶dw_emplist.Modify ("dept_id_t.Color =
假设当我们希望在程序运行阶段才给予下行条件∶薪水超过 50000 时显示红色,低于 50000
时显示黑色。程序的写法如下∶
ls_modstring = "Salary.Color = '0~tIf (Salary &
dw_1.modify (ls_modstring) &
1、得到当前鼠标所指对象所在的带区
&string str_band
&str_band=GetBandAtPointer()
//得到当前鼠标所指对象所在的带区
&str_band=left(str_band,(pos(str_band,'~t') -
1))//得到"header"、"detail"等
if str_band&&'header' then return
//单击非头区,退出
2、& 得到鼠标指向的列对象名
&str_o b j e c t=GetObjectAtPointer()
//得到当前鼠标所指对象名
&str_o b j e c t=left(str_o b j e c t,(pos(str_o b
j e c t,'~t') - 1))
//得到列对象名(默认为列名_t为列标题)
&str_column=left(str_o b j e c t,(len(str_title) -
&//判断该名称是否为列名字
&if this.describe(str_column+".band")='!' then
return //非是列名,即列标题不是按正常规律起名的。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
3、得到当前行、列,总行、列& //this 针对数据窗口而言
li_col&&&&&
= this.GetColumn()
li_ColCount = long(describe(this,"datawindow.column.count"))
ll_row&&& =
this.GetRow()
&& ll_RowCount =
this.RowCount()
//设置当前行、列
scrolltorow(this,ll_Row)
setrow(this,ll_Row)
setcolumn(this,li_col)
this.SetFocus()
4、得到所有列标题
&ll_colnum = Long(dw_1.o b j e c
t.datawindow.column.count)
for i = 1 to ll_colnum
& //得到标题头的名字
& ls_colname = dw_1.describe('#' + string(i) +
".name") + "_t"
&&&&&&&&&&
ls_value = dw_1.describe(ls_colname + ".text")
5、如何用代码取得数据窗口汇总带计算列的值?  
&& String ls_value
&ls_value =
dw_1.Describe("Evaluate("'compute_1',1)")
&如果是数值型,要转换。
6、取得单击的列标题、列名、数据库字段名
string ls_dwo
long ll_pos
string ls_type
string ls_title
string ls_column
string ls_dbname
if Not KeyDown(KeyControl!) then& return
ls_dwo = dwo.Name
if trim(ls_dwo) = '' or isnull(ls_dwo) then return
ls_type = This.describe(ls_dwo + '.type')
if ls_type = 'column' then
&ls_title =& This.describe(ls_dwo
+ '_t.text')//标题
&ls_column = This.describe(ls_dwo +
'.Name')& //数据窗口列名
&ls_dbname = This.describe(ls_dwo + '.dbname')
//数据库中字段名
&messagebox('信息',&&&
'标 题 文 本&& :' + ls_title +
'~r~n数据窗口列名& :' + ls_column +
'~r~n数据库中字段名:' + ls_dbname )
7。窗口为w_gcde内,放入一个DW_1,如何得到dw_1内的某列值yuonghu_id列的内容
long lng_column_count
&& integer i
str_column[]&&&&&&&&
str_column_text[]  //text的名字
  //得到数据窗口的总列数
  lng_column_count =
long(dw_1.Describe("DataWindow.Column.Count"))
  //循环依次读取
  for i = 1 to lng_column_count
&&   str_column[i] =
dw_1.Describe("#"+string(i)+".name")
str_column_text[i] = dw_1.Describe(str_column[i] + "_t.text")
  next &
在DDDW中实现当前高亮行随鼠标移动
DataWindowChild ldwc_Child
String ls_Pointer
Long ll_Row
GetChild( "dept_id", ldwc_Child ) // Replace the
column name "dept_id" as you needed
IF hwndchild = Handle( ldwc_child ) THEN
notificationcode = 2311 then //DDDW的mousemove事件
//得到鼠标所在行
ls_Pointer = ldwc_Child.GetObjectAtPointer()
ll_Row=Long( Mid( ls_Pointer, Pos( ls_Pointer, "~t" ) + 1 ))
//移到鼠标所在行
IF ldwc_Child.GetRow() && ll_Row AND
ll_Row & 0 THEN
&&&&&&&&&&&
ldwc_Child.ScrollToRow( ll_Row )
&&& end if
实现打印完一个DataWindow后不换页
首先将datawindow的print输出到一个打印文件中,把其他的print也输入这个prn,然后,打印这个打印文件就行了。
datawindow_control1.o b j e c
t.datawindow.print.filename="c:/printfilepath/exam_1.prn"
datawindow_control2.o b j e c
t.datawindow.print.filename="c:/printfilepath/exam_1.prn"
dw_1.print()
dw_2.print()
run("print //d://printservename/sharename
"c:/printfilepath/exam_1.prn")
//d://printservename/sharename打印机名&
====================================================
&数据窗口中有一个内部函数LookupDisplay()可实现此功能,若列名为"currency",取第1行的值如下:
dw_1.Describe ( "Evaluate('LookupDisplay(currency)',1)" )
这种方法同样适用于编辑风格为下拉列表(DropDownListBox)、收音机按钮(RadioButtons)等的列。
---------------------------------------------------------------
同意楼上,还有一种方法,先得到子数据窗口,然后取出其他列的数值,不局限于显示值.
在itemchanged事件:
Long row_number
DataWindowChild dwa
String code, name
IF this.GetColumnName()="class"
THEN&//班级
this.GetChild("class",dwa)
&& IF dwa.GetSelectedRow(0)=0
dwa.SelectRow(1,true)
row_number=dwa.GetSelectedRow(0)
&& IF row_number&0
code = dwa.GetItemString(row_number,"code") //班级编码
name = dwa.GetItemString(row_number,"name") //班级名
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。第五章 数据窗口_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
第五章 数据窗口
上传于||文档简介
&&哈​工​大​ ​P​o​w​e​r​ ​B​u​i​l​d​e​r​程​序​设​计
阅读已结束,如果下载本文需要使用5下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩130页未读,继续阅读
你可能喜欢PB中如何把一个数据窗口里面的内容复制到另一个表是table里面的,字段不一样,但是相同字段的类型一样
[问题点数:40分,结帖人u]
PB中如何把一个数据窗口里面的内容复制到另一个表是table里面的,字段不一样,但是相同字段的类型一样
[问题点数:40分,结帖人u]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
本帖子已过去太久远了,不再提供回复功能。PB中外部数据源的使用技巧
数据窗口是PB(PowerBuilder)提供给开发人员快速建立应用程序强有力的工具,也是PB与其他面向对象的数据库应用前端开发工具的最主要区别。它以自动化的用户/数据库接口为开发人员最大限度地节省了时间和精力,利用它不仅能方便、简捷地操纵数据库中的数据,而且还可以从外部文件中提取数据,只需要在定义数据窗口对象时选择外部(External)数据源即可。1外部数据源外部数据源从外部文件中提取数据,它是数据窗口唯一不需要连接数据库的数据源,其数据或由应用程序生成、或由用户输入。定义外部数据源的数据窗口时,必须定义它的每一列及其数据类型。定义External数据源的步骤:①单击工具栏New图标按钮,选择DataWindow选项页,选择数据窗口风格(不支持CrossTab风格),单击“Ok”键进入选择数据源对话框。②选择“External”数据源,单击“Next”按钮,显示“Define Result Set”对话框。③指定数据窗口中所...&
(本文共1页)
权威出处:
引言PowerBuilder因其所具有的为应用开发人员提供方便环境和强大工具的特点成为广为应用的数据库开发工具之一。由于其特色的数据窗口技术对底层SQL语句进行了封装,一些特殊应用不容易由数据窗口来实现。充分掌握这些生成原理,就能对数据库数据实现更加灵活的操纵[1~3]。1数据窗口自动生成语句原理有两大问题在数据窗口生成SQL语句之前必须被解决:一是生成什么样的SQL语句;二是何时根据什么条件生成不同种类的SQL语句。1.1数据窗口生成何样SQL语句系统必须首先要知道被更新的表,更新表中哪些字段,什么字段是主键,主键被修改时采取的方式,数据库中数据与数据窗口的数据不一致时如何处理。这些信息可以在设计状态时设置。1.1.1Allow Updates:决定数据窗口是否允许修改数据库。1.1.2Table to Update:决定被更新的表。该属性决定生成的SQL语句中的表名。1.1.3Updateable Columns:决定可能被...&
(本文共1页)
权威出处:
一、引言AFTN报文及航空公司数据接口是机场信息系统航班数据的主要来源,是机场对内进行航班运营保障,对外为旅客提供航班服务的重要依据。一旦外部数据源中的数据出现错误,对内会导致航班保障信息系统数据异常、保障人员及相关资源无法及时到位、机场统计收费系统业务错误等问题;对外则会引发航显信息异常、电话问询错误、广播误导等旅客投诉问题,对机场的运营保障及旅客的出行造成不良的影响。机场信息部门对航空公司、空管系统等外部数据源所出现的错误无法控制,但作为国际一流机场的核心信息系统,对于外部数据源的错误信息应具有强大的、智能的容错能力和过滤功能,只有这样才能为旅客、航空公司及机场保障人员提供最为准确、人性化的服务,为上海机场国际一流航空枢纽的目标提供强大的系统保障。二、现状分析外部数据源出现错误的原因较为复杂,可能涉及到系统设计、业务理解、报文信息结构、人员操作等诸多方面因素。例如,AFTN报文只有航班号,而没有航班执行日期,AFTN报文有时...&
(本文共2页)
权威出处:
0引言MIS设计与开发的指导思想是:本着人性化的设计理念,最大限度地满足用户的功能需求,尽可能地从用户的角度为用户着想,提供方便简捷的操作手段。界面设计应以交互式为主并遵循美观清晰、通俗易懂的原则;功能设计上除满足用户的需求外,还应该设计附加功能以方便用户操作。本文介绍的将电子文档数据导入数据库的方法正是可以加入到各种数据库管理开发系统中的一种附加功能。借助数据库前端开发工具PowerBuilder环境下的数据窗口技术,一方面可以很方便地将输入数据存储到数据库中,另一方面可以很容易地将数据库中的数据以表格或图形的形式输出。数据窗口还可导入外部文件数据,如利用Datawindow的ImportFile函数可直接导入文本文件或dbase2&3库文件数据,给数据的录入带来了方便[1]。但是,问题在于,由于MicrosoftOffice的广泛应用,越来越多的数据以Excel或Word表格存放,而很少以dbase2&3或文本文件存放I,m...&
(本文共2页)
权威出处:
缩写的Intranet是内部使用的因特网(Internet)的分支,这里使用与因特网一样的技术、信息网络和通信标准,一样的软件和硬件。差别只在于,因特网是开放的,所有人不论其国别都可进入,而intranet的任何一个点只是供一些相对封闭的社团,例如想获得该地区信息的公共组织或市政机构使用。由于这种地区局限性,任何Intranet网都与因特网不同,不存在防...&
(本文共1页)
权威出处:
Excel2000是OfficeZIXX)办公系统中的重要组件之一,保存当前文档的文件夹,输人文件名(如“信息检索-不仅具有强大的数据运算和数据处理功能、丰富多彩的图 001”等)后单击[保存]按钮,保存当前工作$。表、图形处理功能和强大的网络功能,而且在信息检索方运行[数据】菜单项\[获取外部数据]级联菜单\面提供了强大功能,借助MicrosofQuery能够访问多种类型[新建数据库查询]命令项,启动[选择数据源]对话框。的外部数据源。充分将 Excel2000运用到外部数据源的信息选定该对话框中的【数据库】页,在数据源列表框中选定检索中,可以有效地丰富信息检索手段。Exce1LtAA,访问外 dBaedFOxPro DBF数据源对应的数据源选项:dBase Fles--部数据源的操作方法因数据源类型的不同而有差异,但操 W。rd”。、dBASE Fles“、F\,xrrt, Files—Wortl”、Microsof作方法和...&
(本文共2页)
权威出处:
Mashup能实现交互式Web应用,利用了从外部数据源来获取的内容和功能。包括:地图Mashup、视频和图像Mashup、搜索和购物Mashup及新闻MashuP等几种类型。它是非常新的应用程序种类,源于语义Web领域的数据建模技术和松祸合、面向服务、与平台无关的通信协议相结合,最终将提供一种可充分利用并整合大量Web信息的应用程序所必需的基础设施。 借助我们正在使用的计算机操作系统就能很好地理解Mashup。开源的操作系统有API的集合或者一个应用程序编程接口,帮助开发者去构建他们的应用程序。一个API可能是帮助电脑接入网络,又或者用来提供...&
(本文共1页)
权威出处:
扩展阅读:
CNKI手机学问
有学问,才够权威!
出版:《中国学术期刊(光盘版)》电子杂志社有限公司
地址:北京清华大学 84-48信箱 知识超市公司
互联网出版许可证 新出网证(京)字008号
京ICP证040431号
服务咨询:400-810--9993
订购咨询:400-819-9993
传真:010-

我要回帖

更多关于 自我鉴定怎么写 的文章

 

随机推荐