本当にこれはケーキだと思います。 Tonyが言ったように、あなたは同じテーブル/バックエンドを使い続けることができ、それはおそらく私がお勧めするルートです。 MySQLデータベースにリンクするマシンにMySQLのODBCドライバをインストールする必要があります。その後、DSNを作成し、Access内からそのテーブルにアクセスします。 DSNのないテーブルを使用してソフトウェアをロードするたびに、テーブルを再リンクするコードを後で追加することができます。この方法では、DSNが構成されていないマシンでデータベースを実行できます。 MS Accessバックエンドではなく、MySQLまたはSQL Server Expressのどちらかを使用することをお勧めしますが、その理由を詳述する時間はかかりません。
私はあなたがPHPでできるよりも、従来のWindowsデスクトップアプリケーション(MS AccessまたはVB.Netで構築されています)からはるかに多くの機能を利用できると思います。そして、自分の意見では、少ないコードと短時間で投資できるようになるでしょう。私はVBに言及した。NETは、私はおそらくMS AccessをVB.Net上のいずれかの仕事をしますが、データベースのためにお勧めします。
Tonyが既に述べたように、AccessはVBA言語を使用します。 Basic構文を使用する他のプログラミング言語での経験がある場合を除き、少し時間がかかります。私は、VBA/ASPからPHP/Javascriptへの移行が遅くても、それほど難しくないとは思っていません。 PHPは中括弧で囲まれたCスタイルのコードを使用しています。 PHPから来る
は、ここであなたに新しいものかもしれないいくつかのものです:
強い変数のタイプ - アクセスでは、実際には、このような長い文字列、日付、整数、として指定されたデータ型を使用して変数を宣言することができます、シングル、ダブルなど私は可能な限りこれを使用することをお勧めします。 ObjectやVariantなどのより一般的な型を使用する必要があるときは、ほとんどありません。指定されたデータ型で宣言された変数は、間違ったデータ型を入力しようとするとエラーをスローします。これは、私の意見では、より良いコードを書くのに役立ちます。
Option Explicit - Option Explicitは、使用する前にDimステートメントで変数を宣言する必要があることを強制するために、各コードモジュールの先頭に置くことができる宣言です。私はこれを行うことを強くお勧めします。問題のトラブルシューティングに多くの時間を節約できます。
- それらを使用した後のオブジェクト変数のクリーンアップは、MS Accessを使用するベストプラクティスの1つです。これを使用して、DAOレコードセット変数、ADO接続変数、ADOレコードセット変数、フォーム変数などをクリーンアップします。オブジェクト(または特定の種類のオブジェクト)として宣言した変数は、Nothingに設定することでクリーンアップする必要があります変数を使用する必要がなくなったとき。
いいえインクルード - MS Accessにインクルードステートメントなどはありません。他のAccessデータベースからコードモジュールをインポートできます。 DLLに含まれる関数を呼び出すことができます。しかし、PHPのようにAccessにincludeはありません。
DoCmd - MS AccessのDoCmdオブジェクトを使用すると、フォームとレポートを開いて他の一般的なタスクを実行する必要があります。ただの警告:それはしばしば不合理です。長時間アクセスのユーザーはそれほど大したことは考えていませんが、これらのコマンドはほとんど結束性や一貫性がないことがわかりました。私に例を挙げてみましょう。フォームを閉じるには、次のコードを使用します。DoCmd.Close acForm、 "frmSomeFormName"フォームを開くには、次のコードを使用します。DoCmd.OpenForm "frmName"この例では、フォームはそれ自身のOpenForm関数を取得しますが、フォームを閉じるときには、Closeを使用して、フォームを閉じることを望むアクセスを示す定数が続きます。私には答えがありません。 DoCmdはこの種の矛盾でいっぱいです。 Blueclawは最も一般的なDoCmdをリストアップするのにはかなり良い仕事をしていますが、そこにある例はまったく恒星だとは思いません。
References - 参照を頻繁に使用する必要はありません。 DAOやADO(下を参照)、Microsoft Scripting Runtime(ファイルやフォルダへのアクセス、読み込み、書き込みなどによく使用される)のような機能を有効にするために、これらを使用する必要があります。それは基本的にあなたが一度やったことですし、あなたはそれを忘れてしまいます。
ActiveX Controls - おそらく、これらを使用せずにプロジェクトを構築することをお勧めします。ソフトウェアを実行する各コンピュータに同じコントロールをインストールする必要があります。私はそれについて多くは分かっていませんが、あなたのプロジェクトでActiveXコントロールを使用した場合に生じる可能性のある互換性の問題があることを理解しています。
DAO - Data Access Objects - DAOは、データコンテナとのインターフェイスに使用されるAccess固有のネイティブオブジェクトです。主にAccessデータベースのバックエンド/コンテナに保持されている日付にアクセスするために使用されますが、ODBCリンクテーブルを使用しているときには一部のタスクにも使用できます。 DAOは、一括して変更を加えるためにレコードセットをループする必要がある場合に非常に役立ちます。これを使ってフォームコントロールをループすることもできます。私が使用する場所は、行が削除された後に請求書の詳細の行番号を並べ替えることです。もう1つの典型的な使用方法は、更新クエリでは実行できないフィールドまたはフィールドで何かを変更する必要のある「ユーティリティ」関数で使用することです。
CurrentDb.Execute( "Update or Delete query here ...")CurrentDbオブジェクトのExecuteメソッドは、私の理解では暗黙のDAO呼び出しです。これにより、VBAコードからローカルテーブルとリンクテーブルに対してUpdateまたはDeleteクエリを実行できます。 DoCmd.RunSQLを使用してこれを実現することもできますが、CurrentDb.Executeは、 "dbFailOnError"を2番目の引数として追加すると何かが失敗した場合にエラーメッセージが改善されるため、推奨されます。
ADO - ActiveX Data Objects - ActiveXコントロールを使用しないことをお勧めしますが、これは必要なActiveXテクノロジの1つです。私の知る限り、ADOはAccessからストアドプロシージャを実行するために使用できる唯一のものです。 ADOはDAOに似ていて、実際にはそうではありませんが、DAOに取って代わられることになっていました。私は両方のアプリケーションを自分のアプリケーションで使う傾向があります。どの人があなたのために仕事をするのか、どの人がそれをより良くするのかを理解するまでにはしばらく時間がかかります。一般的には、ストアドプロシージャの実行や外部データソースへの接続(つまりリンクテーブルを使用しない)以外はすべてDAOを使用します。 DAOとADOは両方ともMS Accessと共にインストールされるMDAC(Microsoft Data Access Components)の一部です。
File System Object - このオブジェクトは、ファイルとフォルダにアクセスするためによく使用されます。ファイルのコピー、テキストファイルの作成、テキストファイルの読み込み、テキストファイルへの書き込みなど、Windows Script Hostの一部であるMicrosoft Scripting Runtimeの一部です(ただし、すべてのWindowsコンピュータに存在しますがそれは「壊れた」ことになります)。アクセスは、Dir()などのVBAの組み込み関数/メソッドを使用してファイルとフォルダにアクセスするいくつかの方法を提供しますが、これらの関数はすべてのベースをカバーしていません。
SQL - Server's Query Language - あなたは既にSQLに精通していますが、SQL言語のAccessの「スーパーセット」に慣れていなければなりません。それは大幅に異なるわけではありませんが、AccessではAccess関数(Len、Left、Rightなど)または独自のカスタム関数を使用できます。あなた自身の関数は、コードモジュールに存在し、publicとして宣言されている必要があります。独自の関数の例は、子親関係を持つテーブルのCount(*)に基づいてインデントを作成するために使用されることがあるRepeat(MS Accessには存在せず、MySQLに存在します)です。階層型カテゴリを保持するためにネストセットモデルを使用する場合を除き、このような関数を使用する必要はありませんが、これを例として挙げています。
変数リテラル文字列に入れることはできません - これはAccessとPHPの大きな違いです。 PHPでは次のように書くことができます: "SELECT * FROM tag WHERE tagtext = '$ mytag'" MS Accessでは、次のように書く必要があります: "SELECT * FROM tag WHERE tagtext = '" & strMyTag & " VBAでDAOまたはADOレコードセットを取得するためにクエリを書式設定しない限り、これを心配する必要はありません。私が指摘したことは、フォームやレポートのレコードソースや保存されたクエリには一般に影響しません。その中の変数)
クエリ - わかりにくくはないが、アクセスではクエリは基本的にMySQLビューです。私は実際には非常に頻繁にクエリを保存しません。私は一般にSQLの「コード」を派生させるためにのみ使用し、そのSQLを取り出し、フォームを保存されたクエリにバインドするのではなく、レコードソースとしてフォームに貼り付けます。あなたがそれをやりたいと思うのは問題ではありません。あなたがこれをすることを選択するいずれかの方法で長所と短所があります。さらに注意して、MySQLでビューを作成してAccessにリンクするのを恐れないでください。あなたがそれらにリンクするとき、Accessはテーブルとしてそれらを見る。更新可能か書き込み可能かは、ビューの構成によって異なります。特定の種類の問合せ/ビュー(共用体など)は読取り専用です。
最後に、私はOpenOffice.orgベースでMS Accessをお勧めします。私は数年前にBaseを試してみましたが、それは非常に多くの機能が欠けていることがわかりました。しかし、私はすでにMS Accessで経験していたので、私はOpenOffice Baseに公平な試用版を渡したかどうか分からない。私が見つけたのは、イベントでした。私はMS Accessのフォームを細かく調整して、ユーザーにフィードバックの多い非常に反応の良いUIを提供できることに慣れており、Baseでこれを行う方法を理解できませんでした。私が最後に試してから物事が変わったかもしれませんが、分かりません。 Here's an article comparing Base to MS access.
その他のSOアクセスの専門家は、私の答えに間違いを指摘してください。私はまだ自分自身をプログラミングのルーキーと考えています。
これは私が採用を終えた解決策です。私は他の従業員が私を信頼して、店内に専用のLAMPサーバーを設置するように納得しました:P今、私はそのサーバー上でより複雑なプロジェクトに取り組んでいます。 –