pb 怎么导入数据?

pb 怎么导入数据?,第1张

不太明白你说的真实意思。
你说的是一个数据窗口中是反应的多张表的关联关系的数据而不能保存到数据库中还是你想把一个数据窗口的数据分别保存到不同的数据库表中呢?
如果是第一种情况:那只需要在数据窗口的update属性中选择你要保存的表、字段就可以了。
如果是第二种情况:PB是不能直接做到的。你可以在窗口中多+几个隐藏的数据窗口控件。分别对应不同的表。然后在保存的时候,将原始表中的数据分开到相应的各个隐藏的数据窗口中,然后对这些隐藏窗口进行保存就可以了。你还可以直接用sql语句来实现。但是用数据窗口来做的话简单直接。毕竟PB最大的优势就是数据窗口,你不用不是浪费了!

要求就是需要使EXCEL的标题和数据窗口的标题对应,EXCEL从第二行开始导入。如果是某些内容,那么要换一种别的方式。
string str_savename,named
int excelok,li_net
oleobject excelserver
excelserver=create oleobject
excelok=excelserverconnecttonewobject("excelapplication")
//检查返回值,以确保已成功地连接到了Excel
if excelok <> 0 then
messagebox("信息提示","连接EXCEL失败,请检查计算机中是否安装了EXCEL!")
return
end if
li_net = GetFileOpenName("选择文件", str_savename,named,"xls","Excel文件(xls),xls")
if li_net > 0 then
if str_savename = "" then return
excelserverworkbooksopen(str_savename)
excelserveractivesheetcellscopy
dw_1importclipboard(2) //导入数据 dw_1是数据窗口名字,改成你的名字
clipboard("")
excelserverquit()
excelserverdisconnectobject()
destroy excelserver
end if

一个比较笨的方法,你可以使用游标,根据条件从B表提取数据,然后给DW_1逐行的增加数据,这样DW_1的数据就不是通过RETRIEVE得到的,而是INSERT得到的。
还可以定义一个DATASTORE,这个DATASTORE的数据源就是B表,然后使用DATASTORE给DW_1传值。
不知道A表和B表有没有关联,如果有关联,同样也可以修改DW_1的数据窗口的查询语法,把B表的字段关联出来的。
不知道你具体的情况是怎么样,但是,你这个需求,肯定是有办法实现的。

pb每连接一个数据库用一个事务对象

平常我们所用的sqlca就是默认的事务对象

你可以定义多个事务对象transaction

例如transactionmytran

你再设置一下连接参数,就像设置sqlca的连接参数一样,最后连接,当然,是用connectusingmytran;

如果不加后面的usingmytran,系统默认用sqlca连接

这样就连接上另外一个数据库了,你还可以再定义几个,这样当你 *** 作不同的数据库(sql代码)时,你就在后面加上一个(using事务对象名)

而数据窗口就在()这步设置

你可以试试

连接数据库,建立动态的数据窗口对象,应用到数据窗口控件中,或应用到DATASTORE中
之后
dw_1dataobject="你建立的数据窗口对象"
dw_1settransobject(SQLCA)
dw_1retrieve(参数,)

数据窗口中使用计算列很容易计算出C4的值。
不过我觉得没什么必要,如果只是更新的话,那么直接使用update的SQL语句就可以实现了。
如果是显示,使用计算列也可以实现,不用计算列,在数据窗口语法中通过计算得到一个新列也可以。不过这个列不能保存。
可以先通过UPDATE语句更新数据库中现有的数据,然后数据窗口四个字段都选出来。
然后数据窗的itemchanged事件中,如果修改c1,c2或者c3当中一个,就触发计算c4,这样就搞定了。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13402638.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-29
下一篇 2023-07-29

发表评论

登录后才能评论

评论列表(0条)

保存