我想对不断更改列数的表使用 Select INTO 语句。
Select * FROM myTable 向我返回了所需的输出,但是我不知道如何在PowerBuilder中使用INTO使用相同的select语句,因为我不知道myTable中将有多少列,我什至不知道这些列的名称是什么。
名称和列数各不相同,所以我认为可以使用数组,但我不知道如何使用它。可能吗?还有其他方法可以解决这个问题吗?
PowerBuilder 12.5 / MSSQL Server 2008
答案 0 :(得分:1)
使用从myTable中选择* 作为您的SQL字符串和create a DataWindow dynamically。您可以使用Describe()函数获取列数(以及(可选)名称,数据库列源,数据类型)和带有列号的GetItem *()来检索数据。
请记住,与所有设计选择一样,为变更做准备听起来不错,但它需要权衡取舍。在这种情况下,请考虑性能(创建DW需要额外的数据库行程)和可维护性(解决涉及动态DW的问题比解决静态DW困难得多;您需要配备更多高级程序员)。您可能要考虑更改表的频率,以及使用户对应用程序如此感到满意的可能性,因为偶尔发布具有其他更改的内容将是一件坏事。 (并不是说我从来没有这样做过,但是在PB和数十位客户中已有25年以上的时间,我也许可以用一只手指望时间。对我来说,这是一个经过深思熟虑的最后选择)
答案 1 :(得分:1)
作为Terry答案的扩展,您可以使用点符号来确定检索后数据窗口对象数据的详细信息。因此,在动态创建数据窗口并检索数据之后,可以将数据值分配给结构。
从PowerBuilder帮助中:
此示例将dw_1中的所有数据分配给Any变量la_dwdata。分配给la_dwdata的值是一个数据结构数组,其成员与列数据类型匹配:
any la_dwdatala_
la_dwdata = dw_1.Object.Data
如果需要,可以使用Classname()方法确定每一列的数据类型。