質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.79%

コンボボックスの初期値の設定

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 4,779

score 15

現在Web画面を作成しており、Accessのデータテーブルの一覧を表示しています。登録ボタンを押すと、登録画面へ移り、コンボボックスが3つありそれぞれ選択し、登録します。登録された情報は一覧画面に追加されます。もう1つ、更新ボタンがあり、それは登録された情報を変更するためのものです。
ここからが分からないところなんですが、画面は入力画面と同じですが、元々登録されていた情報をコンボボックスの初期値にしたいのですがら現在は空白のままです。

DbCur.Fields(1).Value


で、更新したい行の各コンボボックスに表示したい値は取れるのですが、それをどうやって使えばいいのかが分かりません。引数で追加してみたり、コンボボックスの関数内で色々試してみましたがうまくいきませんでした。
アドバイス、ご指導のほどよろしくお願い致します。

分かりづらくてすいません。
コンボボックスというよりプルダウンメニューの方が正しいのですかね?

<select name="XXX">
<option value=“59”>1984/昭和59年
<option value=“60”>1985/昭和60年
<option value=“61” selected>1986/昭和61年
</select>


これだと1986/昭和61年がプルダウンメニューの初期値になります。
中身がベタ打ちではなく、Accessのデータマスタの情報だった場合、どう記述すればよいのか…が分からないです。

現在使っているコンボボックスを構成する関数

Sub Combo(strItem,strTable,strSDate,intChange,ByRef obj)
   Dim strBuf,strBufA
   Dim objSet
   Dim strSQL

   strItem = Trim(strItem)
   strTable = Trim(strTable)
   strSDate = Trim(strSDate)
   intChange = Trim(intChange)

if intChange Then
obj.Response.Write("<SELECT NAME=""" &strItem& """SIZE=1 onChange="selChange(this.option[this.selectedIndex].value);"">")
Else
obj.Response.Write("<SELECT NAME=""" &strItem& """ SIZE=1>")

sreSQL="Select A,B"
strSQL=strSQL & "From データマスタ"
strSQL=strSQL & "order By 表示順

obj.Response.Write("<OPTION VALUE="""" ")
if pstrItem15="" Then
obj.Response.Write("SELECTED")
End if
obj.Response.Write("></OPTION>)

if pstrItem15=strBufA Then
obj.Response.Write("<OPTION VALUE= "&strBufA & "SELECTED>"& strBuf & "</OPTION>")
Else
obj.Response.Write("<OPTION VALUE="&strBufA & ">" & strBuf & "</OPTION>")
End if
objSet.MoveNext()
objSet.Close() : obj.Set=Nothing
obj.Response.Write("</SELECT>")
End Sub


この関数を以下で呼び出しています。

Call Combo("Item15","データマスタ","2003/11/11",True,obj)


初期値を設定しているのはSELECTEDというのは調べて分かったのですが、DbCur.Fields(1).Valueをどう設定すればよいのかがわかりません。

宜しくお願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • yukihisa

    2018/08/29 09:56

    業務で触ってるならまず仕様の確認はできるはずでは?というより、環境、言語等の確認は一番最初にしなくてはいけないことです。わからないまま適当にコードいじったらぶっ壊れますよ?

    キャンセル

  • x_x

    2018/08/29 10:12

    拡張子は.aspxですか? .aspではなく?

    キャンセル

  • zakky79

    2018/08/29 10:27

    aspxです。

    キャンセル

回答 1

0

aspxです。

間違いないですか?

ASP.NET Web Forms アプリであれば、質問にアップされたようなコードを書くことはあり得ないと言っても過言ではないと思いますけど。

保守ということですので、私の想像を超える特別な事情があるのかも知れませんが・・・

質問者さんが保守しているのが ASP.NET Web Forms アプリであることが間違いなければ、DropDownList コントロールを使うのがお勧めです。

DropDownList クラス
https://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.dropdownlist(v=vs.110).aspx

上の記事の 2 つめのサンプルコードに DropDownList をデータバインドする方法が書いてありますので、それを参考にしてみてください。

データソースは Access だそうですが、サンプルコードの CreateDataSource を Access から DataTable / DataView を作るように書き換えれば望むことができると思います。

.NET Framework 2.0 以降であれば AccessDataSource が使えますので、全てウィザードベースで自力では一行もコードを書かなくても実装できます。

その具体例は以下の通りです。たったこれだけのコードですみます。

<%@ Page Language="C#" AutoEventWireup="true" 
CodeFile="207-AccesSample.aspx.cs" Inherits="_207_AccesSample" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:AccessDataSource ID="AccessDataSource1" runat="server" 
            DataFile="~/App_Data/Northwind 2007.accdb" 
            SelectCommand="SELECT [CategoryID], [CategoryName] FROM [Categories 2003]">
        </asp:AccessDataSource>
        <asp:DropDownList ID="DropDownList1" runat="server" 
            DataSourceID="AccessDataSource1" DataTextField="CategoryName" 
            DataValueField="CategoryID">
        </asp:DropDownList>
    </form>
</body>
</html>

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.79%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る