ネットの情報を参考に、accessのテーブルリンクをモジュールを使って
変更する方法を考えてみた
Sub HenkoLink(path, tbname)
Dim db As DAO.Database, tb As DAO.TableDef
Set db = CurrentDb
Set tb = db.TableDefs(tbname)
tb.Connect = ";DATABASE=" + path + ";TABLE=" + tbname + ";pwd=****"
tb.RefreshLink
End Sub
Sub LinkHenkoMacro()
pathd = InputBox("path=\\***\")
'テーブル数が多いときは配列で
Dim tbname(15), dm As String
tbname(1) = "テーブル1"
tbname(2) = "テーブル2"
tbname(3) = "テーブル3"
For i = 1 To 3
Call HenkoLink(pathd + "test1.mdb", tbname(i))
Next i
'配列使わず、ひとつずつやるなら
Call HenkoLink(pathd + "test2.mdb", "テーブル4")
End Sub
2014年10月17日金曜日
2014年10月6日月曜日
プログラミングHaskell P143 exprs関数について
P143 exprs関数の適用についても、少しくわしく考えてみた。
(途中の式表現は、正しい表現と言えないところもありかも...)
exprs ::[Int]->[Expr]
exprs [] = []
exprs [n]=[Val n]
exprs ns = [e | (ls,rs) <-split ns, l <- exprs ls, r <- exprs rs, e <- combine l r ]
combine :: Expr -> Expr -> [Expr]
combine l r = [App o l r | o<- ops]
ops :: [Op]
ops =[Add,Sub,Mul,Div]
exprs [1,2,3]=[e| (ls,rs) <-split [1,2,3], l <- exprs ls, r <- exprs rs, e <- combine l r ]
(ls,rs) <-split [1,2,3]は、次の2とおり
([1],[2,3]) ([1,2],[3])
ひとつめで l <- exprs ls, r <- exprs rs, e <- combine l r を考えて
exprs ls=exprs [1]=[Val 1]
exprs rs=exprs [2,3]= [e | (ls,rs) <-split [2,3], l <- exprs ls, r <- exprs rs, e <- combine l r ]
= [e |([2,],[3]), l <- exprs [2], r <- exprs [3], e <- combine l r ]
= [e |([2,],[3]), [Val 2], [Val 3], e <- combine [Val 2] [Val3] ]
=[App Add (Val2) (Val3),App Sub …..4種類の演算]
[Val 1]と[App Add (Val2) (Val3),App Sub …..4種類の演算]についても4種類の演算がある
ふたつめも同様に可能
こんな感じで、すべての演算を表せそうだ。
(途中の式表現は、正しい表現と言えないところもありかも...)
exprs ::[Int]->[Expr]
exprs [] = []
exprs [n]=[Val n]
exprs ns = [e | (ls,rs) <-split ns, l <- exprs ls, r <- exprs rs, e <- combine l r ]
combine :: Expr -> Expr -> [Expr]
combine l r = [App o l r | o<- ops]
ops :: [Op]
ops =[Add,Sub,Mul,Div]
exprs [1,2,3]=[e| (ls,rs) <-split [1,2,3], l <- exprs ls, r <- exprs rs, e <- combine l r ]
(ls,rs) <-split [1,2,3]は、次の2とおり
([1],[2,3]) ([1,2],[3])
ひとつめで l <- exprs ls, r <- exprs rs, e <- combine l r を考えて
exprs ls=exprs [1]=[Val 1]
exprs rs=exprs [2,3]= [e | (ls,rs) <-split [2,3], l <- exprs ls, r <- exprs rs, e <- combine l r ]
= [e |([2,],[3]), l <- exprs [2], r <- exprs [3], e <- combine l r ]
= [e |([2,],[3]), [Val 2], [Val 3], e <- combine [Val 2] [Val3] ]
=[App Add (Val2) (Val3),App Sub …..4種類の演算]
[Val 1]と[App Add (Val2) (Val3),App Sub …..4種類の演算]についても4種類の演算がある
ふたつめも同様に可能
こんな感じで、すべての演算を表せそうだ。
プログラミングHaskell P142 split関数
プログラミングHaskell 読んでみた。 P142でsplit関数の適用がよくわからなかったので
自分なりに、丁寧にたどってみた。
split :: [a]->[([a],[a])]
split[] =[]
split[_]=[]
split (x:xs) = ([x],xs) : [(x : ls , rs) | ( ls , rs ) <- split xs]
split [4]=[]
split [3,4]= ([3],[4]): [(3 : ls , rs) | ( ls , rs ) <- split [4]]
=([3],[4]): [(3: ls , rs) | ( ls , rs ) <- []] = ([3],[4])
split [2,3,4]=([2],[3,4]): [(2 : ls , rs) | ( ls , rs ) <- ([3],[4]) ]
==([2],[3,4]): [(2 :[3] ,[4]) ]= [([2],[3,4]),([2,3] ,[4]) ]
split [1,2,3,4]
=([1],[2,3,4]):[(1:ls,rs) | (ls,rs)<- [([2],[3,4]),([2,3] ,[4]) ] ]
=([1],[2,3,4]):[(1:[2],[3,4]),(1:[2,3],[4])]
=([1],[2,3,4]):[[1,2],[3,4]),([1,2,3],[4])]
という感じでいいのだろうか
自分なりに、丁寧にたどってみた。
split :: [a]->[([a],[a])]
split[] =[]
split[_]=[]
split (x:xs) = ([x],xs) : [(x : ls , rs) | ( ls , rs ) <- split xs]
split [4]=[]
split [3,4]= ([3],[4]): [(3 : ls , rs) | ( ls , rs ) <- split [4]]
=([3],[4]): [(3: ls , rs) | ( ls , rs ) <- []] = ([3],[4])
split [2,3,4]=([2],[3,4]): [(2 : ls , rs) | ( ls , rs ) <- ([3],[4]) ]
==([2],[3,4]): [(2 :[3] ,[4]) ]= [([2],[3,4]),([2,3] ,[4]) ]
split [1,2,3,4]
=([1],[2,3,4]):[(1:ls,rs) | (ls,rs)<- [([2],[3,4]),([2,3] ,[4]) ] ]
=([1],[2,3,4]):[(1:[2],[3,4]),(1:[2,3],[4])]
=([1],[2,3,4]):[[1,2],[3,4]),([1,2,3],[4])]
という感じでいいのだろうか
登録:
投稿 (Atom)