sqlselectset
① pb 数据窗口中的 setsqlselect() 函数
setsqlselect() 函数:
获取数据窗口的select语法。
定义一个字符变量:
string ls_sql
ls_sql = dw_1.getsqlselect()
用来拼接查询条件,这样可以不使用参数的形式动态拼接查询条件来查询。
要配合setsqlselect()函数一起使用。
先get出来,然后对ls_sql进行加工修改后,再dw_1.setsqlselect()重新给回去,那么这个dw_1的后台语法就改变了,直接dw_1.retrieve(),就能按照新语法取值了。
这个修改的时候,只能修改where条件order by等。列的名字和个数,顺序,都不能做任何改动。
② 如何用sql语句将一个文件夹下的所有txt文件导入到数据库中急!在线等
使用场景:
比如将
C:\Test\
目录下的所有
txt文件内容
导入到
Table_1
中
--定义临时表,用于存放获取的文件名称
CREATE
TABLE
#files
(name
varchar(200)
NULL,
sql
varchar(7000)
NULL)
--获取文件名称,存放在#files
INSERT
#files(name)
exec
master..xp_cmdshell
'dir
c:\test
/b'
--删除不要的文件名称
DELETE
#files
WHERE
coalesce(name,
'')
NOT
LIKE
'Code%'
--插入需要
导入文件内容的
命令SQL,需要修改
Table_1(改为导入的Table)和文件路径
UPDATE
#files
SET
sql
=
'BULK
INSERT
Table_1
FROM
'''
+
'C:\Test\'+name
+
'''
WITH
('
+
'DATAFILETYPE
=
''char'',
FIELDTERMINATOR
=
''\t'',
'
+
'ROWTERMINATOR
=
''\n'')'
--开始执行导入
DECLARE
@sql
varchar(8000)
DECLARE
cur
CURSOR
STATIC
LOCAL
FOR
SELECT
sql
FROM
#files
OPEN
cur
WHILE
1
=
1
BEGIN
FETCH
cur
INTO
@sql
IF
@@fetch_status
<>
0
BREAK
EXEC(@sql)
END
DEALLOCATE
cur
主要分为读取文件夹下所有文件和导入文件内容两部分
--读取文件夹下所有文件
declare
@files
table
(ID
int
IDENTITY,
FileName
varchar(100))
insert
into
@files
execute
xp_cmdshell
'dir
c:\test
/b'
select
'c:\'+
[FileName]
AS
FILEPATH
INTO
#temp
from
@files
SELECT
*
FROM
#temp
--导入文件内容
BULK
INSERT
dbo.Table_1
FROM
#temp
WITH
(
ROWTERMINATOR
='\n'
)
还需要开启
/*****
Step
1
开启
xp_cmdshell
Use
Master
GO
EXEC
master.dbo.sp_configure
'show
advanced
options',
1
RECONFIGURE
WITH
OVERRIDE
GO
EXEC
master.dbo.sp_configure
'xp_cmdshell',
1
RECONFIGURE
WITH
OVERRIDE
GO
*******/
参考:
http://social.msdn.microsoft.com/Forums/sqlserver/en-US/47c8edc1-8cad-4a24-a09a-3fc0c943325c/bulk-insert-multiple-files-tsql
③ pb中怎么对sql进行增删改差,还有怎么调用时间控件,谢谢网友们了
可以用到数据窗口,这也是Pb精华所在,不用编写sql代码,就可以调用函数对数据库中的表进行增删改查。1.增加:用InserRow(n)----n为行号,当为0时,在末尾一行插入一个空行;2.删除:deleteRow(n)----n为行号。3.改:最直接的方法直接在数据窗口上编辑数据,然后利用update()函数更新表数据。如果更新成功就提交数据,相反如果失败就回滚,不提交数据。具体代码:if
update()
>
0
then
commit;//提交数据
else
rollback;//回滚数据,不提交
end
if
4查询:简单
几个条件查询
可以用到setfilter()
函数进行过滤。譬如dw_1.setfilter("id
=
1")
dw_1.filter()//查询id
=1所有数据
复杂的可以利用修改拼接条件数据窗口data
source
sql语句来实现.具体的:先得到数据窗口data
source
sql语句.
string
ls_sql
ls_sql
=
dw_1.getsqlselect()
//然后加入查询sex
=‘男’,class
=
'2',score
>
'90'的所有数据.
这样拼接条件
string
ls_final
ls_final
=
ls_sql
+"where
sex
=
'男'
and
class
=
'2'
and
score
>
'90'
";//注意最后要有分号!
dw_1.setsqlselect(ls_final)
dw_1.retrieve()//检索数据,得到要求查询结果.
时间控件
您说的是timer()函数
还是修改日期的控件em?前者
timer(1)代表每一秒中出发timer()事件中的代码.后者是利用掩码控件.调整mask格式即可
譬如yyyy-mm-dd
显示出来的日期是2011-05-30
一般都是在窗口的open事件中
写上
em_rq.text
=
string(today,'yyyy-mm-dd')
//效果同前