- - PR -
VB vs VBA
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-02-11 01:44
社内でSQL2000とAccess VBAを使ってプログラムを作成しています。今月から新しいプログラマーが入社し、そのプロプラマーにVBの方がAccess VBAよりパワフルでいいのではと言われました。わたしもこのあたりはあまり詳しくないので、ご存知のかた教えていただけますか。
| ||||||||
|
投稿日時: 2004-02-11 03:25
VBでAccessそのもの
と同じものを作ることができるという例は分かりやすいと思います。 ほんの一例です。使う人次第でどうにでもできます。 というより、プログラミング言語とは何かを思い出していただくと 疑問が湧くことがないような気もします。プログラミング言語は いろいろとあって、低レベルのこともできてしまう言語もあれば、 マクロ言語のような限定的なことしかできないものもあります。 VBAはVisual Basic for Applicationsの略だってことはご存知ですよね? 特定のアプリケーション上でしか動作しないVBのサブセットです。 あと、プログラミング言語の中でもVBはかなり中途半端な位置にいるんです。 VBAはプログラミング言語という枠をかすっているだけかな _________________ 世界平和を願う! http://park8.wakwak.com/~chin/ [ メッセージ編集済み 編集者: CHN 編集日時 2004-02-11 03:34 ] | ||||||||
|
投稿日時: 2004-02-11 11:26
一般論でぶっちゃけて言えば、VBでできることが100であればVBAでできること
は25ぐらいに思ったほうが良いです。 でも、要件がこの25に収まっているのであればどちらを選んでも、できることは 同じになってしまいます。また、VBで帳票を出す場合、クリスタルレポート等の 別途コントロールが必要な事に対し、ACCESSにはレポートというものが付いている ので手軽に作成できることは間違い無いです。(レスポンスはVBのほうが速い) ただ、これはあくまでスタンドアロンの世界での話です。 SQLServerを使うということはおそらくC/Sになっているかと... この場合、SQLServerをどうアクセスするかが問題になります。単純にACCSESSで 作成される場合、SQLServerのテーブルをクライアントのMDBにLinkをはって、 そのLinkテーブルを使うと... これ、昔散々議論されましたが、メンテナンスとかで1台だけとかいう場合には 良いのですが、システム全体がこれやると(爆)です。 ACCESSはヘルプのどこかに書いてあったと思いますが、あくまでスタンドアロン の簡易データベース&データベースアプリツールなんですね。ですからVBA−MDB− ODBC−SQLServerという接続になると、VBAからSQLを発行してもACCESSは内部的に INDEX等を一旦ローカルに取り込んで、ローカルに対してSQLを発行します。(サー バーに発行するパススルークエリーというものもありますが)ですから、テーブル のレコード件数が多い場合とんでもなく時間がかかります。(目途は1万件くらい と言われてました。) もうひとつは、複雑なSQLでクエリーを使って(VBAからクエリーを作っても同じ) SQLを発行すると、クエリーごとやテーブルふごとにセッションが張られてしまっ たりします。(今はそうでなくなったのかもしれませんが) ですから、あるモジュール(関数内)で、TBLAとTBLBをJoinしてSELECTしレコード セットを作り、レコードセットの内容でTBLCを検索するなんて処理を書くと、 サーバー側で4つぐらいプロセスが立ち上がってしまったりします。(ミドルウェア にも左右されますが) 他にも違いや注意がありますが、大体こういうような制限というものがあるので、 一時は「プロはACCESSは使わない」とまで言われていたこともあります。まぁ、私は そこまでは言いませんが、何か環境が変わったとか別にコントロールが必要なこと が出てきたとかいう場合にはACCESSではどうしようもなくなるという事が考えられる なら、最初からACCESSは使わないほうがBetterかと。 ※私はACCESS嫌いと言ってるんじゃないですよ。スタンドアロンでのEUCツールとして は良く出来たものだと思ってますので。 | ||||||||
|
投稿日時: 2004-02-11 22:43
たしかにACCESSも便利ですけど
「壊れる」のがいやですね。 コントロール数の上限とか。。。 | ||||||||
|
投稿日時: 2004-02-12 10:16
るぱんです。
VBもVBAも使います。 個人的に思う事を述べます。 DBとアプリケーションを切り離して考えたいと思うかどうかの方が重要かと。 アーキテクチャー的な考えでちゃんと分離しておいた方が無難かな・・・と。 ADOが有りますから、分離して差し支えないと思います。 (データを一元化集約して他のシステムで転用する・・・事を想定。) したい事、これから起こり得る事を想定して、Accessでいける!と言う判断であれば、 Accessでいいかな? 逆にそれをしたら上司にも説明しやすいし、上司もGoサイン出しやすく、 責任問題から逃げる事が出来るのではないかな?と思いました。 そうすると金額的な問題だけが残るので、上司も顧客に説明して 顧客がいいよと言えば会社単位の責任問題には発展しにくいかと。 ★個人的なAccessの位置付け 個人用データベース。ネットワークでの連携は考えない方が良い。 Excelで収まり切らないデータの収納に便利。 汎用性が高い分、専門的に特化させる事に辛さを覚える。 うろ覚えですが、データの上限が2MBだったかと。(要確認) 何をやりたいかによりますよね。 データの集約をしたいのであればちゃんとしたDBの方がよいかと。
中途半端ですね。 プログラムを書く上では非常に書きやすい言語では有ると思います。 ただし、意識しないとグチャグチャになりやすいです。 この辺の意識が低い事がVBUserの評価を下げている事とは思うんですけどねぇ・・・。 練習用言語って考えたらいいのかな?(笑) Beginners’ All-purpose Symbolic Instruction Codeそのままですよね。 初心者用−記号による指示で多目的使える規約ってところかな?(笑) VBにも利点はありますからねぇ。 個人的には設計を意識しなくてもある程度できてしまう反面、 ぐちゃぐちゃなコード保守した後「こんなくそコードは書くまい・・・。」 って戒めになるんですけどね。(爆) 生産性のメリット?少ないか?(笑) | ||||||||
|
投稿日時: 2004-02-12 11:35
他の人とかぶりますが。 まずは、「何がしたいか」ではないでしょうか。確かにVBAはVBに比べて「パワフル」ではありません。が、“慣れて”いるなら使いやすいでしょう。やりたいことが全てVBAで収まるなら、“慣れているので保守がしやすい”VBAでいいと思います。特に、社内システムであるなら、そんなにお金もかけられないでしょうから、より“コストの安い”ほうで良いと思います。 しかし、「したいこと」が、実はAccessでは役不足なら、すぐにでもVBに乗り換えなければなりません。ここで乗り換える要因としては、 ・複数の人が同時にデータにアクセスする ・使う予定の端末にAccessをインストールしたくない(ライセンスが足りない) ・重要なデータなので壊れると困る など。 少なくとも「パワフルだから」という理由では、乗り換える必要はありません。 | ||||||||
|
投稿日時: 2004-02-12 13:21
るぱんです。
5W3Hとかって上流に行けば行く程、重要ですよね。 まず、
の様な目的があって、 その後で、
なんですよね。 でも、実際にはその日暮し的な「提案」によって 「その後で、」以下の3Hが先に来てるんですよね そりゃぁ現場は混乱しますよね。 | ||||||||
|
投稿日時: 2004-02-12 14:26
あくまで個人的な意見ですけど・・・
そりゃ両方できるほうがいい♪ です。 yoyakoさんのお話から察するに、 VBでもACCESSでも問題ない、どちらでも構わない、 というシステムが多いように感じました。 で、ACCESSについては皆様がおっしゃっているように 力不足な点が多々あります。 が、個人的にはDB系システム作る時にACCESSあると無いとでは 生産性のレベルで雲泥の差が出てきたりすることがあります。 「う〜ん、DB管理者にお伺いするの面倒だから、このテーブルは一旦MDBで」とか 「なんか怖いなぁ〜、ちょっとMDBにバックアップしとこ」とか 「う〜んPL/SQLからCSV出力面倒だなぁ〜、ACCESSからEXCELにコピペ」とか あまり、誉められないかもしれませんが・・・よくやってます。 ですので、新人の方には是非ACCESSも教えてやってください。 & VBも覚えてください。 新人の方と一緒にスキルアップして行くのも一興じゃないでしょうか? |
1