
こんばんわ。
今、ASPでAccessにデータを登録したり削除したり、Accessのデータを検索したりするページを作ってみています。
登録はうまくできるようになったのですが、文字列をキーにしてデータベースを検索し、その結果をASPで表示させる際、データを結合して表示させることってできますでしょうか?
具体的には、
アクセスのフィールド名は名前(姓)、名前(名)と別れているのですが、ASPで表示させるときは一覧表の中で、名前と姓をくっつけて、表示させたいと思っています。
<アクセス>
名前(姓) | 名前(名) | 生年月日
山田 | 太郎 | 1900/8/1
<ASPでの表示>
名前 | 生年月日
山田 太郎 | 1900/8/1
以上、宜しくご教授ください。。
No.2ベストアンサー
- 回答日時:
SQL文の文字列連結方法が「&」ではなく、「+」で行う必要があります。
SQL自体の文字列連結を「&」でやっているためにエラーになっていると思いますので、下記のようにやってみてください。
set db = CreateObject("ADODB.Connection")
set rec = CReateObject("ADODB.Recordset")
db="Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & _
Server.Mappath("meibo.mdb")
StrSQL = ""
StrSQL = StrSQL & "select "
StrSQL = StrSQL & " name_sei_kan + name_na_kan as name,"
StrSQL = StrSQL & " name_sei_hira + name_na_hira as hira, "
StrSQL = StrSQL & " post_number, "
StrSQL = StrSQL & " pref + city + mansion as jyusyo, "
StrSQL = StrSQL & " dochi, "
StrSQL = StrSQL & " kankei, "
StrSQL = StrSQL & " print "
StrSQL = StrSQL & " from meibo order by name_sei_kan" & ""
以上、ご参考になれば幸いです。
No.3
- 回答日時:
あなたがダメと言っているのは、文字列の連結以前のところですので、まずは文字列の連結はおいといて、名前だけを一覧表示するように作ってみてはどうですか?
No.1の回答者さんのコードで動かなかったから、下記の独自のコードを書いたのでしょうか?
Set rec1 = rec.open(StrSQL)
このコードは、まったく意味が通りません。
データベースからデータを取得するには、
まず、データベースをオープンする必要があります。
そのうえで、オープンしたデータベースに対して、SQL を発行し、レコードセットを取得する必要があります。
No.1の回答者さんのコードは、少なくともそういう作りになっています(私は実際試した訳ではありませんが)。
No.1
- 回答日時:
やり方しだいだと思いますよ
1) DBへ投げる SQLでフィールドの結合を行う
2) ASP側でフィールドの結合を行う
Table名 Sample
名前(姓) Name1
名前(名) Name2
生年月日 Birthday
といったテーブル構造でADOで接続なら
set cn = CreateObject("ADODB.Connection")
set rs = CReateObject("ADODB.Recordset")
cn.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=" & Server.MapPath("Sample04.mdb")
cn.Open
rs.open "SELECT Name1 & Name2 as Name, Birthday From Sample",cn,2,3,1
とすれば rs(0)『または rs("Name")』に姓、名の連結されたデータを取得できます
rs.open "SELECT Name1, Name2, Birthday From Sample",cn,2,3,1
とすると
rs(0)に姓、rs(1)に名が取得できるので
Respose.Writeなどで rs(0) & rs(1) などといった使い方ができるでしょう
データの表示方法などをどのようにするか提示した方がより適切なアドバイスが得られるでしょう
この回答への補足
ご回答ありがとうございます。
勉強中なのでいまいちわからなかったのですが、頂いた
アドバイスを参考に下記のように明記しましたがダメでした。
set db = CreateObject("ADODB.Connection")
set rec = CReateObject("ADODB.Recordset")
db="Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & _
Server.Mappath("meibo.mdb")
StrSQL = ""
StrSQL = StrSQL & "select "
StrSQL = StrSQL & " name_sei_kan & name_na_kan as name,"
StrSQL = StrSQL & " name_sei_hira & name_na_hira as hira, "
StrSQL = StrSQL & " post_number, "
StrSQL = StrSQL & " pref & city & mansion as jyusyo, "
StrSQL = StrSQL & " dochi, "
StrSQL = StrSQL & " kankei, "
StrSQL = StrSQL & " print "
StrSQL = StrSQL & " from meibo order by name_sei_kan" & ""
Set rec1 = rec.open(StrSQL)
( Set rec1 = rec.Execute(StrSQL)←これも試したがダメでした)
提示いただいたサンプルと比較すると『cn,2,3,1』に相当する部分の意味がちょっとわからなかったのですが、これが問題なのでしょうか?
それとも根本的にどこか違うのでしょうか?
非常に抽象的で大変恐縮ですが、アドバイスいただけると助かります。
すみませんが宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Formのデータが欠落することがある
-
「XML over HTTP」「非同期HTTP...
-
VB.NET DataReaderが開かれている
-
setAttribute getAttribute 配...
-
Java-jspの画面入力値保持について
-
JSPからJSPへ情報を渡せる?
-
ボタンが活性化の場合とは、ボ...
-
「<c:forEach タグが終了し...
-
三菱GOTの画面切り替えについて
-
C言語で今まで表示していた画面...
-
リクエストに応じたselectedの...
-
フォーム上で押されたボタンに...
-
jspからServletを呼び、元のjsp...
-
JSPでのリストボックス表示
-
漏電遮断器の黄色ボタンと白色...
-
webアプリを作ってます。エラー...
-
フォルダ改行
-
ラジオボタンの選択肢をサーブ...
-
エラーページ遷移後に入力値を残す
-
フォームで同じ複数のnameで違...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NET DataReaderが開かれている
-
Formのデータが欠落することがある
-
dbからデータをとりだす際、sql...
-
C言語からデータベースにアクセス
-
排他制御の方法
-
「XML over HTTP」「非同期HTTP...
-
ASPでデータベースを結合して表...
-
DBNULLについて
-
java と php でのやり取りについて
-
struts 2つの選択肢(selec...
-
データベースを扱うアプリにふ...
-
C#でSQL等伝道させてデータベー...
-
JavaScriptとACCESSデータベー...
-
JSP データベースへの数回の接続
-
DBから取得した値の変換方法
-
検索の絞り込み機能の実装方法...
-
jspからServletを呼び、元のjsp...
-
フォーム上で押されたボタンに...
-
リクエストに応じたselectedの...
-
Java-jspの画面入力値保持について
おすすめ情報