web-dev-qa-db-ja.com

JavaScriptを使用したAccessデータベースの読み取りと書き込み

最初に私は、データベースとのWebインタラクションで
セキュリティ上の理由とjavascriptという事実により、常にサーバー側の言語を使用する
現状のままでは、Windowsファイルシステムとの互換性はありません。

そうは言っても私は状況に直面していて、創造的に考えようとしているのです。
サーバーサイドスクリプトとSQLへのアクセスは許可されていません。

そして、時間の経過とともにデータを保存できるイントラネット用のクライアントベースのアプリケーションを作成する必要があります。

これまでに2つの解決策を見つけましたが、どれも私が正しく使用するのに十分なドキュメントがありません。

1つは、ここにあるACCESSdbと呼ばれるJavaScriptライブラリです。 ACCESSdb
残念ながら、それを使用してDBからデータを読み書きする方法を理解できませんでした...

もう1つは、次の3つのコードです。

レコードを追加する:

function AddRecord() {
var adoConn = new ActiveXObject("ADODB.Connection");
var adoRS = new ActiveXObject("ADODB.Recordset");

adoConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='/\dbName.mdb'");
adoRS.Open("Select * From tblName", adoConn, 1, 3);

adoRS.AddNew;
adoRS.Fields("FieldName").value = "Quentin";
adoRS.Update;

adoRS.Close();
adoConn.Close();
}  

レコードを削除する:

function DeleteRecord() {
var adoConn = new ActiveXObject("ADODB.Connection");
var adoRS = new ActiveXObject("ADODB.Recordset");

adoConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='\\dbName.mdb'");
adoRS.Open("Select * From tblName Where FieldName = 'Quentin'", adoConn, 1, 3);
adoRS.Delete;
adoRS.Delete;

adoRS.Close();
adoConn.Close();
}  

レコードの編集:

function EditRecord() {
var adoConn = new ActiveXObject("ADODB.Connection");
var adoRS = new ActiveXObject("ADODB.Recordset");

adoConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='\\dbName.mdb'");
adoRS.Open("Select * From tblName Where FieldName = 'Quentin'", adoConn, 1, 3);

adoRS.Edit;
adoRS.Fields("FieldName").value = "New Name";
adoRS.Update;

adoRS.Close();
adoConn.Close();
}  

それらのうち、add new recordだけが何らかの理由で私のために働いた...
また、最初の行のセルの値を読み取るには、次のように書くだけでよいことがわかりました。

alert(adoRS(cellNum));  

しかし、後の行のセルの値を取得するにはどうすればよいですか? (行3、セル5)としましょう。

ここまで読んでいただきありがとうございます!よろしくお願いします!

ジェイク

12
Jake

まず、「/ \」と「\」(接続文字列内)がSOのタイプミスにすぎないことを確認してください。

次に、削除コマンドのバージョンを次に示します。

function DeleteRecord() {
var adoConn = new ActiveXObject("ADODB.Connection");
var adoCmd = new ActiveXObject("ADODB.Command");

adoConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='\\dbName.mdb'");
adoCmd.ActiveConnection = adoConn;
adoCmd.CommandText = "Delete * From tblName Where FieldName = 'Quentin'";
adoCmd.Execute();

adoConn.Close();
}

そして、編集コマンド(ループなし->すべての[一致する]レコードを更新):

function EditRecord() {
var adoConn = new ActiveXObject("ADODB.Connection");
var adoCmd = new ActiveXObject("ADODB.Command");

adoConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='\\dbName.mdb'");
adoCmd.ActiveConnection = adoConn;
adoCmd.CommandText = "Update tblName Set FieldName = 'New Value' Where FieldName = 'Quentin'";
adoCmd.Execute();

adoConn.Close();
}  

私はこれをテストしていません(現在Accessを持っていません)ので、いくつかの構文バグがあるかもしれないことに注意してください...

それが機能し、役立つことを願っています。

4
Igor Turman