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')
//效果同前