投稿

ラベル(データベース)が付いた投稿を表示しています

Translate

Excel-VBAのADOでデータベーステーブルの内容をForを使わずに一括する転記する方法

イメージ
Recordsetの内容をFor分で回さずにシートへ反映する 例:ACCESSファイルのテーブル情報を取得して一括でEXCELへ反映させる 使用するACCESSファイルには下記のような商品マスターテーブルがある これをExcelのVBAからADOでデータ取得し、下記のように用せずに一括で反映させる。 使用するADOのバージョンは迷いがちだが、今ではすっかりOFFICE365のExcelを使用している企業が殆なので、古いバージョンの事は余程配慮が必要でなければ、【Microsoft ActiveX Data Object 6.1 Library】を選択すれば良いだろう。 稀に、32ビット版をまだ使用している場合は【Microsoft ActiveX Data Object 2.8 Library】を使用する事になる。 SQLでデータを取得し、Excelのワークシートへ一括反映させるコードのサンプルは下記となる。 Dim sql_con As New ADODB.Connection Dim sql_rs As New ADODB.Recordset sql_con.Open "Provider=Microsoft.ACE.OLEDB.16.0;Data Source=P:\OneDrive\Download\test\test.accdb" Set sql_rs = sql_con.Execute("SELECT * FROM 商品マスター") Range("A1").CopyFromRecordset Data:=sql_rs sql_rs.Close sql_con.Close Set sql_rs = Nothing Set sql_con = Nothing Rangeが持つCopyFromRecordsetメソッドで、指定したセルから、一括で表形式でデータベースから取得した内容を反映させる事が出来る。 EXCELのVBAでデータベースを取得してか

OracleになったMySQLのライセンスやデータベースが相変わらず不安定すぎて・・・議論がしんどい件

イメージ
OracleになったMySQLのライセンスが相変わらず不安定すぎて・・・議論がしんどい件 毎回議論になる。 まず、 MySQLを知らない初心者 が、 どれも同じ だろって言って、いきなり MySQLをセットアップして 、 トランザクション が効かない方のデータベースタイプで、 MyIZAM にしてくるパターン。 確かにこれはこれで、用途によっては、早くて良いパターンなんだけれども・・・ まず、MySQLを選ぶとしんどいのは議論を呼ぶ事。 innnoDBも早いとか・・・ 後、License(ライセンス)もオラクル(Oracle)になってから、恐いし・・・ JAVAのように、オープンのような、、、JAVAを選んだら実は、後から訴えられるとか・・・(MicrosoftマイクロソフトもJ#で裁判してやられてたと思うけれど) なんか、それでも、訴訟リスクは置いておいて、取り敢えず、やってくれってなって・・・  後からMicrosoft(マイクロソフト)のようにパートナーを通して、ライセンスのインベントリ(Inventory)を発生させられたり・・・ もう・・・ 歴史の長いPostgreSQLが一番安くて、変な選択肢少なくて良くないですか?って感じになる。 だけれども、自分は絶対SQLServerの方が、少数精鋭で高速で開発しやすいから、企業であれば、必ずこっちの選択をオススメするけれど・・・ とにかく、ライセンスとパフォーマンスの問題については、入り口では議論が少ないプラットフォームを選ぶべきだと思う。 入口でこんなに議論していたら、始めてからも、、、やっぱり早くなかったね・・・ やっぱり、データベース壊れたねって・・・・いつものパターンなので。 因みにMYIZAMは、頻繁にデータベースが壊れるから、選ばないほうが良いよ。 開発者なら経験済みだけれども、開発段階で結構何回も壊れる。 プログラミングを経験していないなんちゃってSE(Like to Engineer)は、何か意味不明な理由で、リスク抱えたまま続行させてくるけれど・・・ あのマイナンバーのシステムや、み○ほ銀行のシステムのように・・・Σ(´∀`;)