投稿日時:

ベン図はご存じですか?
もし解らなければ、テーブルとリレーションシップの理解に役立ちますので、少し勉強してみてください。
今回のお話は、論理和 (OR)、論理積 (AND)、排他的論理和 (XOR)だけを理解していれば大丈夫です。

同じ構造のテーブル「TableA」と「TableB」があります。
TableAのフィールド「Code」には「A、B、C、D、E、F」があり、
TableBのフィールド「Code」には「A、B、C、G、H、I」があるとします。

このとき、TableAとTableBの論理和は「A、B、C、D、E、F、G、H、I」です。
SQLではUNIONを使用すれば簡単に求められます。

SELECT Code FROM TableA UNION SELECT Code FROM TableB

また、TableAとTableBの論理積は「A、B、C」です。
SQLではINNER JOINを使用すれば簡単に求められます。

SELECT TableA.Code FROM TableA INNER JOIN TableB ON TableA.Code = TableB.Code

さらに、TableAとTableBの排他的論理和は「D、E、F、G、H、I」です。
SQLではFULL OUTER JOINを使用すれば簡単に求められるのですが、Access(Jet Database)やMySQLではFULL OUTER JOINは使用できないので、ちょっと複雑になりますが下記のように記述します。

SELECT TableA.Code FROM TableA LEFT JOIN TableB ON TableA.Code = TableB.Code WHERE TableB.Code IS NULL
UNION
SELECT TableB.Code FROM TableA RIGHT JOIN TableB ON TableA.Code = TableB.Code WHERE TableA.Code IS NULL

という事でサンプルを用意したのでどうぞ。

同じ構造のテーブルが2個以上あるという段階でテーブル設計がおかしいのですが、既存のレコードとインポートしたレコードを比較する際に使用すると便利ですので、覚えておくと良いと思います。

(担当:奥田 英太郎

投稿日時:

AccessとVBAに関し「クエリをExcelにエクスポートする際に、そのExcelファイルにパスワードは設定可能ですか?」という質問がありました。

クエリをExcelにエクスポートするだけなら、DoCmdのOutputToメソッドで簡単に可能です。
しかし、このメソッドにはパスワードを設定する機能はありません。

従って、WorkbookクラスのSaveAsメソッドでパスワードかけて保存し直すのがよいと思います。

なお、Access内のVBAとExcel内のVBAでは生成済みオブジェクトが異なります。
Access内でExcel関連のクラスを使用したい場合は、参照設定「Microsoft Excel XX.0 Object Library」が必要です。
XXにはバージョンが入ります。2003=11.0、2007=12.0、2010=14.0です。(13.0はMac版)

サンプルソースコードは以下の通りです。

‘ファイルのパス
Dim filePath As String
filePath = CurrentProject.Path & “¥export.xls”

‘Query01をExcelファイルにエクスポート
DoCmd.OutputTo acOutputQuery, “Query01″, acFormatXLS, filePath

‘ExcelのApplicationクラス
Dim excelApplication As Excel.Application
Set excelApplication = New Excel.Application

‘エクスポートしたファイルを開く
Dim book As Workbook
Set book = excelApplication.Workbooks.Open(FileName:=filePath)

‘確認メッセージを非表示にする
excelApplication.DisplayAlerts = False

‘パスワードを付けて保存し直す
Dim password As String
password = “pass”
book.SaveAs FileName:=filePath, FileFormat:=xlWorkbookNormal, Password:=password
book.Close

注意すべきところは「上書きしますか?」等の確認メッセージの非表示設定です。

Excel内のVBAでは

Application.DisplayAlerts = False

上記のような記述で設定できますが、この「Application」はExcel.Applicationクラスの生成済みオブジェクトです。
Access内のVBAでは「Application」はAccess.Applicationクラスの生成済みオブジェクトなので、型が異なります。
よって生成オブジェクトではなく、自分でインスタンスを生成しています。

(担当:奥田 英太郎

投稿日時:

「Webアプリケーションの開発技術を学びたいのですが、何を学習、何から学習すればいいのでしょうか?」という質問は、当校の講座へのご参加を予定している方からも含め、いただく頻度が高い質問の一つです。

ショッピングサイトやコミュニティサイト等、Webアプリケーションはさまざまな技術の集合体で作られています。従って、開発するにあたってもさまざまな技術を学ぶ必要があります。

当校の講座と照らし合わせると、下記の順序で学習する事をお薦めいたします。

1、HTML/CSS入門
まずはWebの基礎を学習しましょう。HTML、CSSはWebページを作成するための技術です。

2、HTML/CSS活用
入門編の続きです。入力フォームの作り方や、デザイン構成について学習します。

3、PHP入門
サーバサイドのプログラミングで、多くのレンタルサーバで使用されているPHPを学習します。Webアプリケーションの中核を担うものになります。

4、Javascript入門
クライアントサイドのプログラミングで、ユーザインターフェースを担うものになります。

5、Ajax/jQuery入門
jQueryは標準のJavascriptには無い機能を追加したり、使いづらい部分を改定したりする外部ライブラリです。
jQueryを使用する事で、簡単に視覚的なユーザインターフェースやAjaxを実装する事ができます。
AjaxはJavaScriptとPHP等のサーバーサイドとの連携技術になります。

当校のお客様でも時々いらっしゃいますが、Web開発についての多少のご経験をお持ちなのか、HTML/CSS入門講座や活用講座を受講しないで、いきなりPHP入門やJavascript入門から参加される方が見受けられます。
この際、講義参加に必要な前提知識(=HTMLやCSSの知識)が一部不足しており、講義内容の理解が難しくなってしまうケースも発生しています。

DreamWeaver等のWebオーサリングツールを使用しているため、ソースコードレベルでHTMLやCSSが記述できない方や、他のプログラミング言語経験者でPHPやJavaScriptの基本文法は分かるけれど、やはりHTMLやCSSが記述できないという方は、少し注意が必要です。
HTMLやCSSの基礎をしっかり理解し、基本的なソースコードをご自身で記述できることが、Webアプリケーション開発の上では「必須」となります。

改めて、ご自身のスキルをご確認下さい。
開発スキル習得は、まさに「急がば回れ」です。基礎を飛ばして必要そうな知識だけをつまみ食いで学ぼうと思っても、結局は時間と費用が余計にかかってしまうことに繋がります。
基礎から地道に学習すること。これが結局は「使える」技術習得に繋がります。

(担当:奥田 英太郎

投稿日時:

色々あるプログラミング言語の中でもJavaScriptの基本文法は特殊な部類に入ります。
当校の講義では、他言語経験者も含め初心者が理解しにくいものとして「コールバック」「無名関数」が挙げられます。

実は、それほど難しいものではないのですが、見慣れるまでは不思議に感じるのかもしれませんね。

下記のソースコードを見てみましょう。
jQueryを使用したイベント設定の事例になるが、ID「button」をクリックしたら、関数「eventFunction」が発動して、alertが出力されるソースコードになっています。

$(“#button”).click(eventFunction);
function eventFunction(){ alert(“イベント発動”); }

コールバックとは、関数名を引数等に設定する事を指します。JavaScriptではイベントの設定で多用されます。
上記の事例もそうだが、「○○が××されたら指定した関数を発動しなさい」と設定することになります。

無名関数はその延長に過ぎません。

$(“#button”).click(eventFunction);
function eventFunction(){ alert(“イベント発動”); }

このソースコードを無名関数で記述する場合は、clickメソッドの引数に関数名を指定するのではなく、直接functionを記述すれば良いです。

$(“#button”).click(function(){ alert(“イベント発動”); });

この際のfunctionには関数名を記述する必要はありません。そのために「無名関数」と呼ばれるのですね。

function内の処理が複雑になると、{}やらインデントやらでソースコードが見づらいと感じる事もあると思いますが、落ち着いてソースコードを解読してみましょう。それほど難しくはないと思います。

使い分けとしては、イベントと関数が1:1なら無名関数、多:1ならコールバックを使用する傾向にあります。

JavaScriptやjQueryの書籍、Webサイト等ではサンプルのソースコードに無名関数を使用する事が多いです。
従って、これが分からないとサンプルを読む事もできないのできちんと修めておくことをお薦めします。

(担当:奥田 英太郎

投稿日時:

さっそくだが下記のソースコードを見てみましょう。
VBA(VB6.0)のソースコードである。

Dim var As Long
var = 10
MsgBox “変数の値はvar”

これだと実行結果は「変数の値はvar」と出力されます。
「変数の値は10」と出力するためには、下記のように記述します。

MsgBox “変数の値は” & var

どのプログラミング言語でもそうですが、変数と文字列の結合に悪戦苦闘する初心者の方は多くいらっしゃいます。
SQLが絡むと特に、難しく感じてしまうようです。

Dim key As Long
key = 10
Dim sql As String
sql = “SELECT * FROM table WHERE field = key”

これだとSQLは「SELECT * FROM table WHERE field = key」になってしまいます。
「SELECT * FROM table WHERE field = 10」とするには下記のように記述します。

sql = “SELECT * FROM table WHERE field = ” & key

落ち着いてソースコードを整理してみましょう。
どこまでが引用符で括られている文字列で、どこまでが変数なのかを認識する事が重要です。

では少し複雑なSQLの事例をひとつ。
「SELECT * FROM table WHERE field = ‘abc’」とするには下記のように記述します。

Dim key As String
key = “abc”
Dim sql As String
sql = “SELECT * FROM table WHERE field = ‘” & key & “‘”

いかがでしょうか?
理解しづらいのなら、実際にソースコードを記述して、MsgBoxなりDebug.Printなりで変数sqlを出力して確認してみてくださいね。

どのプログラミング言語でどのRDBMSを操作するにも、このようなSQLを組み合わせる技術は必須となります。
将来的にはSQLインジェクション対策を考慮したり、プレースホルダ(パラメータ)を使用したりする事になりますが、まずはこの程度の基礎からできるようになることを目指しましょう。

(担当:奥田 英太郎)