楽しい英会話の世界 by Kagoshima artists.

鹿児島在住の元英語教師が、親子の会話やお仕事で使う英語、方言や日本語学研究をご紹介。よみがなには、カタカナを使用します。

たったの1行で出来ました‼凄いスピードに驚き(ORACLE→Excel)

2017-07-24 06:17:15 | テスト
あまりのスピードに驚きました!


Sheet1.Range("A1").CopyFromRecordset rs

この、たったの1行で
ORACLE(オラクル)から
Excel(エクセル)に
データを表示出来ました!


今まで、配列にセットしたり、レコードセットでグルグル
カーソルを回しながら、
エクセルの書く場所をカウントして
一行一行書くために
長いプログラムを書いていたみなさん
もう、そんな長いプログラムは
要らないのです。
たったの1行で出来ちゃいました!

しかも、凄いスピードです!
今まで高いお金と時間を掛けて、複雑な長いプログラムを書いて、解析して、保守までしていたユーザのみなさん。
安心してください。
改善の余地はまだまだあります。
さらに、コストパフォーマンスを掛けることなく、戦略的かつ効率よくシステムを改善する道が開けただけなのです。
エクセルのプログラムに詳しく複雑で長いプログラムを書いていたみなさんは、もうあっという間にプログラムが書けてしまいます。
忙しくてユーザのみなさんと話し合う時間がなかった今まではもう過去。これから先は、本当にユーザに寄りそう
データ中心のプログラムを書くことに専念出来るようになります。
複雑で長いプログラムを猛烈打鍵して残業して書き上げ、さらに、そんな残業して作った長いプログラムをまたしても沢山残業して、苦労してテストしていた過酷な製造行程。しかも苦労して作ったのに、速いのは最初だけ。
あんなに苦労して作ったのに、遅い、データが間違っているとクレームを言われてしまう。この計算はどうやって作った?と聞かれる度に残業して複雑なプログラムを解析。
今までの、あの苦労はなんだったのか、、、


いえ、今まではそうするしか、仕方がなかったんです。
そうです、きっと。
いえ、きっとじゃなくて、そう。

解析と名を付け、長い複雑なプログラムが何をしているのかを調べ、調査しなければ、長いプログラムを書いた本人もユーザに説明出来なくなるほど、スパゲッティになっていく、プログラムを書く製造行程。
そのために、残業をしたり、休日返上までし、作った本人も簡単に説明出来なくなり、設計書すら書く時間を削るという、悪循環。


ホストで出来なくてエクセルを使ってみたり、
それでもエクセルではビックデータは扱えないと
いう壁にあたり、
プログラムは複雑さを極めていき
心配だからとデータのコピーを大量に作り。
それすらも、もう限界に来ています。

製造行程は残業地獄、過酷で、若い人にしか頼めない。
もう、そんな残業地獄は古いんですね。

これから先は考え抜いたデータアナリストが
私達プログラムを書く人に直接にデータ中心の設計を指導する時代になっていくんですね、、、。
データベースプロフェッシャル、
データアナリストがより活躍するのでしょう。
私達、プログラマー(コーダー)はそうした技術を新たに勉強しなければ生き残れないのでしょう。



今までの、苦労はなんだったのか~😭


プログラムの書き方?
 詳しくは、各自、ご自分でお調べください。
 新しい挑戦は勇気と努力
 しっかり研究したら、変えるリスクより
 変えないリスクが優るのかも知れません
 


ORACLEからExcelに出力するサンプル
プログラムコード

Public Sub TEST()
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset

'🔯DB接続のインスタンス生成
Set cnn = New ADODB.Connection

'🔯DB接続
cnn.Open  " Provider=OraOLEDB.Oracle.1;Password= Password;Persist Security Info=True;User ID=UserID;Data Source= net_service_name"

'🔯レコードセットのインスタンス生成
Set rs = New ADODB.Recordset

🔯レコードセットのOPEN
rs.Open "SELECT * FROM TEST_MST", cnn, adOpenKeyset, adLockReadOnly

'🔯エクセルに接続
Sheet1.Range("A1").CopyFromRecordset rs

'🔯DB切断
cnn.Close
Set cnn = Nothing


End Sub



注目

参考:マイクロソフト社公式サイト
 https://support.microsoft.com/ja-jp/kb/414048
 [XL2000]DAO3.6でCopyFromRecordsetを使用するとデータが欠ける
概要
 この資料は、Data Access Object 3.6 (以下 DAO 3.6) を使用し CopyFromRecordset メソッドで Microsoft Access 2000 のデータをワークシートに正しく貼り付けられない 現象について説明したものです。

この問題は Excel 2002 で修正いたしました。
 Access 97 から Excel 97 へ DAO 3.5 を使用した場合は問題ありません。


 
⚫tnsnames.ora 書き方の基本 (TCP)
net_service_name=
 ( DESCRIPTION=
    ( ADDRESS=(protocol_address_port))
    ( CONNECT_DATA= (SERVICE_NAME=net_service_name))
 )



⚫sqlplusでのDB接続
 sqlplus User ID/Password@net_service_name


⚫ネットサービス名
(net_service_name)は、データベースを特定するための名前です。

⚫ ローカル・ネーミング・パラメータ・ファイル (tnsnames.ora ファイル)



コンピュータ、プログラム
システム開発と英語

私は、プログラムを作ったり、プログラムを作るためのしくみを設計したりする、システムエンジニアを職業にしています。
この職業では英語で書かれた海外の文書を目にしたり、コンピュータのエラーメッセージが英語だったり、プログラムコード自体が英語に近い特長を持っていたりして、英語がわからなくても出来る職業ではあるけれど、英語がわかる方がプログラムコードの理解がよりスムーズになることもあります。
また、近年では若い技術者が足りないこと、熟年のエンジニアが常用的に安定して参画出来るプロジェクトが減りエンジニアを辞めてしまう人もいて、業界全体にエンジニアが確保出来ない事情があり、海外のエンジニアに仕事を依頼するプロジェクトが増えています。
日本人は英語が日常に必要がなくて、英語力が育ちにくい環境も持っています。
海外のエンジニアのみなさんが幸せに日本で生活し、素晴らしい環境で幸せに仕事ができて、日本人と同様にやりがいを感じてよりよい仕事をして下さることは、海外のエンジニアにとっても日本人にとっても、幸せなことです。

しかし、現実には日本人同士で日本語で話す上でもトラブルはあり、コミュニケーションは難しいのです。
英語が堪能でネイティブであるに越したことはありませんが、ネイティブではなくても方言を話す日本人同士のように、互いにわかりあう努力をしてよりよいコミュニケーションをして、最高の結果か現れるようにしたいと思います。


参考:マイクロソフト社公式(アメリカ)
2013年の質問です。

問:複数のクエリの実行結果を
1つのエクセルシートに
まとめて出力することは出来ますか?
(複雑なプログラムサンプル付き)
解答: CopyFromRecordsetを使えば1行でこんなに簡単に実現出来ます。
(簡単に書いた短いプログラムサンプル付き)
詳しくはこちら↓
Question:
 Multiple SQL query ouput in one Worksheet


  エクセルのプログラム

エクセルのプログラムは
VBA( ぶぃびぃえぃ)と呼びます。

⚫Visual Basic for Applications
Microsoft Visual Basic
(びじゅある ベーシック フォー アプリケーションズ) またはVBA(ぶぃびーえー)と呼ぶ。

⚫Visual Basic(びじゅある ベーシック)またはVB(ぶぃびー)と呼ぶ。
 
⚫VBAの歴史
1970年代〜1980年代 BASIC をリリース
1990年代     Visual Basic をリリース
1994年、Excel 5.0とともにVBAをリリース

⚫VBAの特長
〈変数の宣言〉
Dim 変数名 As データ型

Dimの語源は、Dimension(ディメンジョン)です。
→配列の次元、サイズ、寸法、容積
VBAプログラムでは、変数を用いて、データの記憶場所を明示的に確保します。
Option Explicitを書かない場合、変数の宣言をしなくてもエラーになりません(変数の暗黙的な宣言)が、同じ名前の変数が使えてしまうため、プログラムの品質が悪くなります。

〈処理手続き〉
Option Explicit
Private Sub プロシージャ名()
 ~
End Sub
Public Sub プロシージャ名()
 ~
End Sub
subroutine(サブルーチン)
手続きの始まりのことをサブルーチンと呼びます。
  参考:weblio
    http://ejje.weblio.jp/content/subroutine 


 by kotoritobu
ジャンル:
ウェブログ
コメント   この記事についてブログを書く
この記事をはてなブックマークに追加
« 鹿児島なら、2000万円台で新... | トップ | コミット済のデータだけを表... »
最近の画像もっと見る

コメントを投稿

テスト」カテゴリの最新記事

トラックバック

この記事のトラックバック  Ping-URL
  • 30日以上前の記事に対するトラックバックは受け取らないよう設定されております。
  • 送信元の記事内容が半角英数のみのトラックバックは受け取らないよう設定されております。
  • このブログへのリンクがない記事からのトラックバックは受け取らないよう設定されております。
  • ※ブログ管理者のみ、編集画面で設定の変更が可能です。