• ベストアンサー

ASPでデータベースを結合して表示させる方法について

こんばんわ。 今、ASPでAccessにデータを登録したり削除したり、Accessのデータを検索したりするページを作ってみています。 登録はうまくできるようになったのですが、文字列をキーにしてデータベースを検索し、その結果をASPで表示させる際、データを結合して表示させることってできますでしょうか? 具体的には、 アクセスのフィールド名は名前(姓)、名前(名)と別れているのですが、ASPで表示させるときは一覧表の中で、名前と姓をくっつけて、表示させたいと思っています。 <アクセス> 名前(姓) | 名前(名) | 生年月日 山田   |  太郎  | 1900/8/1 <ASPでの表示> 名前     | 生年月日 山田 太郎 | 1900/8/1 以上、宜しくご教授ください。。

質問者が選んだベストアンサー

  • ベストアンサー
noname#158371
noname#158371
回答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" & "" 以上、ご参考になれば幸いです。

s_ryou
質問者

お礼

ありがとうございます。勉強になりました。

その他の回答 (2)

noname#259269
noname#259269
回答No.3

あなたがダメと言っているのは、文字列の連結以前のところですので、まずは文字列の連結はおいといて、名前だけを一覧表示するように作ってみてはどうですか? No.1の回答者さんのコードで動かなかったから、下記の独自のコードを書いたのでしょうか?  Set rec1 = rec.open(StrSQL) このコードは、まったく意味が通りません。 データベースからデータを取得するには、 まず、データベースをオープンする必要があります。 そのうえで、オープンしたデータベースに対して、SQL を発行し、レコードセットを取得する必要があります。 No.1の回答者さんのコードは、少なくともそういう作りになっています(私は実際試した訳ではありませんが)。

s_ryou
質問者

お礼

ご回答ありがとうございました。 ちょっと構文について勉強不足でした。 もう少し勉強いたします

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答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) などといった使い方ができるでしょう データの表示方法などをどのようにするか提示した方がより適切なアドバイスが得られるでしょう

s_ryou
質問者

補足

ご回答ありがとうございます。 勉強中なのでいまいちわからなかったのですが、頂いた アドバイスを参考に下記のように明記しましたがダメでした。 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

  • 2つのデータを結合して検索

    MySqlを使用しています。 ------------------ | 苗字 | 名前 | ------------------ | 山田 | 太郎 | | 山田 | 次郎 | | 山田 | 三郎 | ------------------ 上記のようなデータベースを作った場合に 氏名で検索したいのですがどうしたらよいでしょうか? LIKEを使った場合、山だけ、郎だけでは引っかかるのですが 山田太郎を検索されると引っかかりません。 データの結合したものを検索対象にすることはできるでしょうか? よろしくお願いします。

  • Accessのフィールド結合について

    Accessのフィールド結合について Access2002を使用していますが、 「姓」と「名」というフィールドがあります。 クエリにて、「姓」と「名」を結合することは出来ますか? 「姓」と「名」の間にスペースも1つ入れたいです。 例えば下記のような場合 「姓」:田中 「名」:一郎 ↓↓↓↓↓↓↓ 仮に「名前」という演算フィールドを作ったとして、 「名前」:田中 一郎 といったようにするにはどうすればよろしいでしょうか?

  • ASPからのデータベース更新

    こんにちは。 現在ASPでDB登録、削除、更新を実施するごくごく基本的なPageを つくっているのですが、どうしてもDBの更新ができなくて困ってます。。 各パラメータはフォームから入力される(更新される)値です。 If ACTION3 = "edit1" Then db.Execute "UPDATE kekkon SET [名前_姓] = '" & name_sei_kan3 & "',[名前_名] = '" & name_na_kan3 & "',[名前_姓_かな] = '" & name_sei_hira3 & "',[名前_名_かな] = '" & name_na_hira3 & "',[生年月日] = '" & seinen3 & "',[Email] = '" & email3 & "' WHERE [ID] = '" & IDID3 & "'" End If このUPDATEの文で下記のようなエラーがでます。 エラー タイプ Microsoft OLE DB Provider for ODBC Drivers (0x80040E07) [Microsoft][ODBC Microsoft Access Driver] 抽出条件でデータ型が一致しません。 DBはアクセス2002でデータの型は以下のとおりです。 ID:オートナンバー型 名前_姓:テキスト型 名前_名:テキスト型 名前_姓_かな:テキスト型 名前_名_かな:テキスト型 生年月日:日付/時刻型 Email:テキスト型 なぜうまく動かないのか3日間調べましたが、ダメでした。。 素人質問で申し訳ないですが、ヒントを頂ければと思いますので 宜しくお願い致します。

  • フィールドを結合して検索

    お世話になります。 データベースには、「name1」「name2」と 2つのフィールドに姓名が分かれて入っています。 検索で、「山田太郎」と入力されたとき、 「name1」「name2」を結合した列で抽出したいのですが どのようにSQLを書けばいいのでしょうか? よろしくお願いします。

  • ファイルメーカーPro 二つのデータベース間のジャンプ

    台帳というデータベースに1000人の基本情報。 Aというデータベースにそのうちの100名の生活情報(カードのように表示)、同様にBというデータベースに100名の職業情報が登録されています。 A,Bの基本情報は台帳からのリレーショナル(ルックアップ)で表示されています。 Aで山田太郎さんが表示されているときに、Bの山田太郎さんのデータに、ボタンひとつでジャンプしたいのです。 今は、Bを開いて、いちいち山田で検索していますが、スクリプトでそれが出来ないでしょうか。

  • スペースの入った文字列の呼び方

    データベースから全てのデータをSQLで取り出し、 それを一度、HASHにいれてから配列で取り出そうと思っているのですが、 データベースに"姓'半角スペース'名"(例、山田 太郎)のようにはいっている 名前データを配列を使って呼び出すと、姓(例、山田)までしか表示されません。 説明が分かりにくいかもしれませんが困っています。 よろしくお願いします。

  • Accessの一意性制約について教えてください

    Microsoft Access2010を使い始めた者です。 名前の格納を、姓フィールドと名フィールドに分けてしていますが、 ”山田”と”太郎”の両方が一致するレコードがあった場合は 登録しないように一意性制約をかけたいと思っています。 アクセスではどのように設定したらよいでしょうか? Googleで検索をかけましたらわかりませんでした。 よろしくお願いします。

  • IIS+ASPでデータベースの表示方法

    IIS+ASP+ACCESSでデータベースの内容を一覧で表示しようと思っています。 表示方法として一度データベースの一覧を配列に格納してから表示する方法か、データベースを読み込みながら表示するかどちらの方がIIS,データベースエンジンの負荷を押さえることが出来るのでしょうか? アクセスが集中したときのことを考えるとどちらにしようか迷っています。 どうぞご教授ください。

  • OUTLOOK EXPRESSで、送信してきた相手を漢字(名前)で表示したい・・。

    こんにちは。OUTLOOKを使用しているのですが、「アドレス帳」にて姓、名、敬称、表示名、ニックネーム、電子メールアドレスを入力するようになっていますが、山田太郎さんだとして、 姓=山田太郎、 名=入力せず、 敬称=様、 表示名=山田太郎、電 子メールアドレス=yamada@goo~(仮です) と、いうように入力しています。 んで、メールを頂いた際に、皆同じように登録しているはずなのに、受信箱を空けると「山田太郎」と表示されていたり、hanako@yahoo~とアドレスで表示されたりしてしまいます。同じ人が名前で表示されたり、アドレスで表示されたりするのではなく「名前」の人は名前、「アドレス」の人はアドレスと、いう具合で・・。必ず「名前」で表示されるようにしたいのですがどのように設定したらイイでしょうか?また、「姓」「名」を分ける理由もしくは利点ってあるのでしょうか? どなたかご存じの方お教え下さい。よろしくお願い致します。

  • Access レポートでフィールドを結合した時につ

    OS:Windows7 Version:Access2013 いつも、お教えいただき、誠にありがたいと思っています。 下記の件につき、お教えいただきたいと思いますのでよろしくお願いします。 レポートで[姓],[名],[お年] のフィールドを結合して 「南国/太郎(65)」と表示させる場合 「コントロールソース」=[姓]&"/ "&[名]&"("&[お年]&")" と入力すると思いますが [お年]の入力が無い場合 「南国/太郎 ()」と表示されて不恰好になってしまいます。 そこで、[お年]の入力が無い場合は ( )  は表示しないようにするにはどのように すれば良いでしょうか? 何卒、よろしくお願いいたします。

専門家に質問してみよう