作者yauhh (哟)
看板Visual_Basic
标题Re: [VB6 ] 写入资料库问题 以及datagrid使用问题
时间Mon Nov 5 00:41:05 2012
※ 引述《goodtau (goodtau)》之铭言:
: 大家好
: 有两个问题想要请问大家
: 一.
: 假设只有一笔资料要写入资料库
: 我会 就在连线字串那打sql的语法 insert into
: 但现在有多笔资料,要写入资料库 要怎麽写呢?
: 以及假设这个资料库栏位是 1.2.3.~~10好了 共有10栏
: 但我这多笔资料 分别可能是 每个栏位都有 ; 或者只有1~6栏
: 再或者中间会空个几栏(好比这笔资料 1~4栏有 5.8栏各是 null ,其他栏有资料这样)
: 要怎麽做呢?
我大概这样做:
sub InsertList(cmds as Collection)
'''SQL模版
const SQLTemplate as string = _
"insert into <TName> (<FList>) values (<VList>)"
'''栏位模版
const FListTemplate as string = _
",<F1>,<F2>,<F3>,<F4>,<F5>,<F6>,<F7>,<F8>,<F9>,<F10>"
'''值模版,值要稍微斟酌资料形态,若字串则加上单引号,若数字则不加单引号
const VListTemplate as string = _
",'<V1>','<V2>','<V3>','<V4>','<V5>','<V6>','<V7>','<V8>'," _
"'<V9>','<V10>'"
dim dict as FileSystemObject.Dictionary
dim SQL as string
dim i as long
dim j as long
for i = 1 to cmds.count
'''取SQL模版
SQL = SQLTemplate
FList = FListTemplate
VList = VListTemplate
'''取命令参数,在此则要注意,若型态统一为字串,或统一为数字,
'''则可以写回圈处理栏位列及值列,否则要用select case叙述来处理.
set dict = cmds.item(i)
for j = 1 to 10
if dict.HasKey("F" & j) then
FList = replace(FList, "<F" & j & ">", "F" & j)
VList = replace(VList, "<V" & j & ">", dict.Item("F" & j))
else
'''在此将SQL处理为视忽略栏为自动补值的模式.
'''假如忽略栏需要自行补值,则以下须做适当调整.
FList = replace(FList, ",<F" & j & ">", "")
VList = replace(VList, ",<V" & j & ">", "")
end if
next j
FList = mid(FList, 2)
VList = mid(VList, 2)
'''执行SQL
if FList <> "" then
dim conn as Database.Connection
dim result as long
SQL = replace(SQL, "<FList>", FList)
SQL = replace(SQL, "<VList>", VList)
conn.execute SQL, result
doevents
end if
next i
end sub
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 36.226.94.105
※ 编辑: yauhh 来自: 36.226.94.105 (11/05 00:44)
※ 编辑: yauhh 来自: 36.226.94.105 (11/05 00:46)