问:一个二维表中同一字段的数据类型可以有多种对不对?
- 答:一个二维表中同一字段的数据类型可以有多种是不对的。
数据表中同一个字段内的数据类型是相同的。数据表在定义的时候对字段的数据类型就做了定义,并明确了类型,因此,原则上说你的标题所描述的是正确的,但是有时候会存在数据兼容的情况。
数据表中字段的数据类型有:TINYINT、SMALLINT、MEDIUMINT、INT、INTEGE、DATETIME、DATE、TIMESTAMP、TIME、YEAR、CHAR、VARCHAR、TEXT、TINYBLOB、BLOB等等。
问:数据库判断题:一个关系中不同列的数据类型不能相同?
- 答:错,不同列的数据类型可以相同。如同行,不同列,它的数据类型就肯定相同,因为数据类型是按行(字段)分的。
- 答:是的
不同列,不同行的数据类型都可以相同的 只是关键字不能相同
问:openswing中的gridcontrol空间能不能实现同一列不同的数据类型。?
value列有些值是string类型,有些是时间类型的。
- 答:问题比较笼统!如果是在数据窗口上的话,首先要在程序入口处写好连接配置后
在窗口的open事件中写入dw_1.settrans(sqlca)
dw_1.Retrieve()
在DataWindow中插入一行,可以使用InsertRow()函数。
语法格式:
dw_control.InsertRow(rownumber)
dw_control是数据窗口控件名,rownumber是要插入行的的行号。如果这个参数为0,代表在当前DataWindow的最后一行插入一空行。
InsertRow()函数返回一个长整型值,以此来代表插入的行号。如果插入失败,则返回-1。
二、删除行
要删除DataWindow内的一行数据,则要使用DeleteRow()函数。
语法格式:
dw_control.DeleteRow(rownumber)
其中rownumber是要删除的行号。如果该值为0,表示删除当前行。如果删除成功,返回1,失败则返回-1。
三、设置当前行
如果要设置DataWindow中的某行为当前行,可以使用SetRow()函数。
语法格式:
dw_control.SetRow(rownumber)
其中rownumber是要设置为当前行的行号。如果函数返回1表示成功,返回-1代表失败。
四、获取当前行
如果想要获取DataWindow中的某行为当前行,可以使用GetRow()函数。
语法格式:
dw_control.GetRow()
该函数没有参数,它返回一个长整型,代表当前行号。如果返回-1代表失败。如果返回0代表没有选中任何行。
五、选择行
如果想要在DataWindow中加亮显示某一行或取消加亮显示某一行,可以使用SelectRow()函数。
语法格式:
dw_control.SelectRow(rownumber,select)
其中,rownumber表示要加亮或者取消加这显示的行号,0表示所有行。select是一个布尔类型的值,TRUE表示加亮,FALSE表示取消加亮显示。该函数返回1时表示成功,返回-1时表示失败。
如果想要直接设置某一行为加亮,需要首先取消其它行的加亮显示状态,采用如下的两行代码:
dw_1.SelectRow(0,FALSE)
dw_1.SelectRow(rownumber,TRUE)
六、获取选择行
如果想要获取当前DataWindow中加亮显示的行,可以使用GetSelectRow()函数。
语法格式:
dw_control.GetSelectRow(rownumber)
其中,rownumber为开始查找的行的行号,0表示从头开始查找。该函数返回一个长整数,表示从rownumber开始查找第一个加亮显示的行的行号。如果失败返回0。
七、滚动行
如果在DataWindow的末尾插入一行数据,而当前行是在DataWindow的中央,那么这种插入可能不会被用户觉察。为了改变这种情况,可以滚动行到DataWindow的末尾,这样用户就能发现新的改变。要滚动行,可以使用ScrollToRow()函数。
语法格式:
dw_control.ScrollToRow(rownumber)
该函数返回1时表示成功,返回-1时表示失败。
与ScrollToRow()函数据功能相关的还有如下几个函数:
ScrollPriorRow():向上滚动一行
ScrollNextRow():向下滚动一行
列操作
列操作类的函数主要是选择指定的列和获取列的信息。
一、获取列
如果要获取当前的列号,可以使用GetColumn()函数,如果要获取当前的列名,可以使用GetColumnName()函数。
语法格式:
dw_control.GetColumn()
dw_control.GetColumnName()
这两个函数都没有参数,GetColumn()函数返回一个长整型值,代表当前的列号,GetColumnName()函数返回当前列的列名。如果返回0,表示当前没有任何列被选择返回-1表示失败。
二、设置列
要设置某一列为DataWindow中的当前列,可以使用SetColumn()函数。
语法格式:
dw_control.SetColumn(column)
其中column既可以是列号,也可以是列名。当该函数返回1时表示成功,返回-1时表示失败。
数据操作
数据操作类的函数主要是对DataWindow中的数据进行获取、设置。
一、获取数据
如果要从DataWindow的指定行和列中获取数据,就要使用GetItem系列的函数。这个系列的函数共有五个,分别是对字符串、数字、日期、日期时间和小数。
语法格式:
dw_control.GetItemString(rownumber,column)
dw_control.GetItemNumber(rownumber,column)
dw_control.GetItemDate(rownumber,column)
dw_control.GetItemDateTime(rownumber,column)
dw_control.GetItemDecimal(rownumber,column)
其中,rownumber参数表示行号,column可以是列号或列名。
二、设置数据
与获取数据所用的函数不同,设置DataWindow内指定行列处的数据只要使用一个SetItem()函数就可以了。
语法格式:
dw_control.SetItem(rownumber, column, value)
其中rownumber表示行号,column可以是列号,也可以是列名,value表示要设置的值。但是该必须与DataWindow中指定的行列处的数据类型一致,不然PowerBuilder会报错。
SetItem()函数返回1时表示成功,返回-1时表示失败。
三、数据排序
如果希望对DataWindow内的数据进行重新排序,而又不想重新从数据库中检索数据,可以使用SetSort()和Sort()函数。这两个函数一起完成对DataWindow进行排序的功能。其中SetSort()函数用于设置如何排序,Sort()函数用于对DataWindow实际进行排序。
语法格式:
dw_control.SetSort(expression)
dw_control.Sort()
其中expression是一个字符串,表示排序的表达式,它的具体值是一个列名后面加一个空格,然后是"A",表示升序,或"D",表示降序。如果有多个列要同时进行排序,它们之间用逗号隔开。
例:dw_1.SetSort("name A,xh D")
这两个函数都是返回1表示成功,返回-1表示失败。
四、数据过滤
如果希望对DataWindow内的数据进行过滤而不重新从数据库中检索数据,可以使用SetFilter()和Filter()函数。它们一起完成对数据的过滤功能。其中SetFilter()函数用来设置过滤条件,Filter()函数用于对DataWindow进行过滤。
语法格式:
dw_control.SetFiter(expression)
dw_control.Fiter()
其中expression是一个字符串,表示过滤的条件,它实际是一个逻辑表达式。
例:
dw_1.SetFilter("id>\'003\' AND name like\'王%\'")
dw_1.Filter()
这两个函数都是返回1表示成功,返回-1表示失败。
五、数据检查
PowerBuilder提供了两个函数用于数据的检查,它们是DeleteCount()和ModifiedCount(),其作用分别是检查DataWindow中的数据自上一次更新到现在,被删除的行数和被修改的行数。它们一般在窗口的CloseQuery事件中使用,用来检查该窗口的DataWindow中的数据是否有尚未保存的修改。
语法格式:
dw_control.DeleteCount()
dw.control.ModifiedCount()
它们分别返回从上一次更新到现在,DataWindow中被删除和被修改的行数。如果没有行被删除或被修改,那么它们返回0。如果出现错误则返回-1。
一般情况下,如果窗口中含有可供修改的数据窗口对象,那么在窗口的CloseQuery事件中通常使用如下代码检查数据窗口对象中是否有尚未保存的数据:
Int li_return
IF dw_1.ModifiedCount() > 0 OR dw_1.DeletedCount() >0 THEN
li_return = MessageBox("提示","数据尚未保存,是否保存?",Question!,YesNoCancel!,3)
CHOOSE CASE li_return
CASE 1
TriggerEvent(\'ue_save\')
RETURN 0
CASE 2
RETURN 0
CASE 3
RETURN 1
END CHOOSE
END IF
问:execl中一列中的数据为不同的类型,需全部转换为文本类型,该如何转换?
- 答:1.新建一个excel表,全选,右键,设置单元格格式,常规,格式设置成文本
2.在数据所在表格全选,复制,然后切换到新建表格,点右键,选择性粘贴,数值。就ok了~~