アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんばんわ。

今、ASPでAccessにデータを登録したり削除したり、Accessのデータを検索したりするページを作ってみています。
登録はうまくできるようになったのですが、文字列をキーにしてデータベースを検索し、その結果をASPで表示させる際、データを結合して表示させることってできますでしょうか?

具体的には、
アクセスのフィールド名は名前(姓)、名前(名)と別れているのですが、ASPで表示させるときは一覧表の中で、名前と姓をくっつけて、表示させたいと思っています。

<アクセス>
名前(姓) | 名前(名) | 生年月日
山田   |  太郎  | 1900/8/1

<ASPでの表示>
名前     | 生年月日
山田 太郎 | 1900/8/1

以上、宜しくご教授ください。。

A 回答 (3件)

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" & ""

以上、ご参考になれば幸いです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/09/02 13:21

あなたがダメと言っているのは、文字列の連結以前のところですので、まずは文字列の連結はおいといて、名前だけを一覧表示するように作ってみてはどうですか?



No.1の回答者さんのコードで動かなかったから、下記の独自のコードを書いたのでしょうか? 
Set rec1 = rec.open(StrSQL)
このコードは、まったく意味が通りません。

データベースからデータを取得するには、
まず、データベースをオープンする必要があります。
そのうえで、オープンしたデータベースに対して、SQL を発行し、レコードセットを取得する必要があります。
No.1の回答者さんのコードは、少なくともそういう作りになっています(私は実際試した訳ではありませんが)。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/09/02 13:24

やり方しだいだと思いますよ


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』に相当する部分の意味がちょっとわからなかったのですが、これが問題なのでしょうか?
それとも根本的にどこか違うのでしょうか?

非常に抽象的で大変恐縮ですが、アドバイスいただけると助かります。
すみませんが宜しくお願い致します。

補足日時:2008/08/12 00:05
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!