C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: DataGridView内の画像の可視・不可視の切り替え


(過去ログ 169 を表示中)

[トピック内 14 記事 (1 - 14 表示)]  << 0 >>

■97509 / inTopicNo.1)  DataGridView内の画像の可視・不可視の切り替え
  
□投稿者/ てっちゃん (24回)-(2021/05/31(Mon) 18:06:51)

分類:[ASP.NET (VB)] 

いつも参考にさせていただいております。
過去にVS2005で作成したWebシステムを手動でVS2019に移行しております。
途中まで進んではいるのですが、ある処理でエラーが発生してしまい、先に進めない状況に陥っております。

<実現したいこと(VS2005では問題なく稼働)>
GridViewの更新日の値が本日より30日以内であれば、"NEW"という画像を表示し、それ以前であればvisibleをFalseにして非表示にする。

<現在の設定>
■aspx

<asp:GridView ID="dgrdNew" runat="server" AutoGenerateColumns="False" PageSize="5">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Image ID="Image1" runat="server" ImageUrl="/images/p_new_anime.gif" visible="<%# GetVisible(Container.DataItem) %>"/>
</ItemTemplate>
</asp:TemplateField>
<asp:HyperLinkField DataNavigateUrlFields="ID" DataNavigateUrlFormatString="Detail.aspx?mid=&quot; &amp; drow(&quot;ID&quot;) &amp; &quot;&amp;mod=top" DataTextField="PERSONAL_NAME" HeaderText="名前" />
<asp:BoundField DataField="COMPANY_NAME" HeaderText="会社名" />
<asp:BoundField DataField="COMPANY_SECTION1" HeaderText="部門1" />
<asp:BoundField DataField="COMPANY_SECTION2" HeaderText="部門2" />
<asp:BoundField DataField="COMPANY_POSITION" HeaderText="役職" />
<asp:BoundField DataField="LAST_CONFIRM_DATE" DataFormatString="{0:yyyy/MM/dd}" HeaderText="更新日" />
</Columns>
<HeaderStyle BackColor="DarkBlue" ForeColor="White" />
</asp:GridView>

■aspx.vb

Function GetVisible(ByVal drv As DataRowView) As Boolean

Dim drow As DataRow = drv.Row

'今日より30日前
Dim wkDate As Date = DateAdd("d", -30, Now)
Dim wkLast As Date = drow("LAST_CONFIRM_DATE")

If wkLast < wkDate Then
Return False
Else
Return True
End If


End Function

この状態でデバッグすると

'/' アプリケーションでサーバー エラーが発生しました。
コンパイル エラー
説明: この要求を送信するために必要なリソースをコンパイル中に、エラーが発生しました。以下のエラーの詳細を確認して、ソース コードを修正してください。

コンパイル エラー メッセージ: BC30451: 'GetVisible' is not declared. It may be inaccessible due to its protection level.

ソース エラー:


行 255: <asp:TemplateField>
行 256: <ItemTemplate>
行 257: <asp:Image ID="Image1" runat="server" ImageUrl="/images/p_new_anime.gif" visible="<%# GetVisible(Container.DataItem) %>"/>
行 258: </ItemTemplate>
行 259: </asp:TemplateField>

<質問>
基本がしっかり備わっているわけではありません。
本やWEBを参考にしながら作っている(過去も)ので、経験者の方からしたら簡単なことでも何故このエラーが発生するのか、自分では宣言しているように
思ってもエラーになってしまうのか、VS2005とVS2019では大きく変わっているとは思いますが、アドバイスをいただけると幸いです。

よろしくお願いいたします。


引用返信 編集キー/
■97510 / inTopicNo.2)  Re[1]: DataGridView内の画像の可視・不可視の切り替え
□投稿者/ WebSurfer (2242回)-(2021/05/31(Mon) 18:18:27)
No97509 (てっちゃん さん) に返信

> DataGridView内の画像の可視・不可視の切り替え

GridView の間違いですね。訂正できるなら訂正してください。

VS2015 と VS2019 で何が違うのかを明確にしてください。ここの書いてあること
以外は知り得ない第三者のには分かりません。それが分かるのは質問者さんだけ
です。
引用返信 編集キー/
■97511 / inTopicNo.3)  Re[1]: DataGridView内の画像の可視・不可視の切り替え
□投稿者/ WebSurfer (2243回)-(2021/05/31(Mon) 18:33:53)
No97509 (てっちゃん さん) に返信

> コンパイル エラー メッセージ: BC30451: 'GetVisible' is not declared. It may be inaccessible due to its protection level.

"inaccessible due to its protection level" というところからの想像ですが、VS2005 では
aspx と aspx.vb を分けずにコードは aspx 内の script タグの中に書いていたものを、VS2019
では aspx と aspx.vb に分けて、VB.NET のコードは aspx.vb に書いていませんか?

そうだとすると、継承関係が aspx.vb ← aspx になるので、aspx.vb の GetVisible メソッドに
適切なアクセス修飾子を付与しないとダメなのでは?
引用返信 編集キー/
■97513 / inTopicNo.4)  Re[2]: DataGridView内の画像の可視・不可視の切り替え
□投稿者/ てっちゃん (26回)-(2021/06/01(Tue) 08:50:02)
No97511 (WebSurfer さん) に返信

WebSurfer様、アドバイスありがとうございます。

最初にタイトルですが、編集キーを設定しなかったため変更出来ませんでした。すみません。

> "inaccessible due to its protection level" というところからの想像ですが、VS2005 では
> aspx と aspx.vb を分けずにコードは aspx 内の script タグの中に書いていたものを、VS2019
> では aspx と aspx.vb に分けて、VB.NET のコードは aspx.vb に書いていませんか?

VS2005のプログラムは既に廃棄してしまい手元にありませんが、ソースフォルダ内には
・aspx
・aspx.vb
・aspx.resx
の3つの拡張子のファイルがあります。

今回、VS2019への手動移行はこのフォルダ内のaspxとaspx.vbをテキストエディタで開き、デザインは
VS2019でWebフォームの新規作成でツールボックスを使い作成し、イベントはVS2005のaspx.vb内の
該当部分をコピペする形で移行しています。

最初の記事で掲載させていただきましたVS2019のコード部分のVS2005版は下記の通りです。

■aspx

<asp:datagrid id="dgrdNew" runat="server" Width="942px" Font-Size="Smaller" AutoGenerateColumns="False" GridLines="Horizontal">
<HeaderStyle BackColor="#CCFFFF"></HeaderStyle>
<Columns>
<asp:TemplateColumn>
<HeaderStyle Width="10px"></HeaderStyle>
<ItemTemplate>
<asp:image Runat="server" imageurl='images/p_new_anime.gif' Visible='<%# GetVisible(Container.DataItem) %>' />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="名前">
<HeaderStyle Width="120px"></HeaderStyle>
<ItemStyle HorizontalAlign="Left">
</ItemStyle>
<ItemTemplate>
<asp:HyperLink ID="ID" Runat="server" navigateurl='<%# GetUrl(Container.DataItem) %>' text='<%# container.dataitem("PERSONAL_NAME") %>' />
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="COMPANY_NAME" HeaderText="会社名">
<HeaderStyle Width="200px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="COMPANY_SECTION1" HeaderText="部門1">
<HeaderStyle Width="150px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="COMPANY_SECTION2" HeaderText="部門2">
<HeaderStyle Width="150px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="COMPANY_POSITION" HeaderText="役職">
<HeaderStyle Width="50px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="LAST_CONFIRM_DATE" HeaderText="更新日" DataFormatString="{0:yy/MM/dd}">
<HeaderStyle Width="50px"></HeaderStyle>
</asp:BoundColumn>
</Columns>
</asp:datagrid>

■aspx.vb

Sub BindData()

Dim strSQL As String = "SELECT BUNRUICD,BUNRUINM FROM T_BUNRUI " & _
" ORDER BY BUNRUICD "
Dim con As New OleDbConnection(ConfigurationSettings.AppSettings("conStringBc"))

'OleCommandオブジェクトを宣言
Dim da As New OleDbDataAdapter(strSQL, con)

Dim ds As New DataSet
da.Fill(ds, "BUNRUI")

With ddlBunrui
.DataSource = ds.Tables("BUNRUI")
.DataValueField = "BUNRUICD"
.DataTextField = "BUNRUINM"
.DataBind()
.Items.Insert(0, New ListItem("--- カテゴリを選択 ---", ""))
End With

Dim strSQL2 As String = "SELECT TOP 5 ID,PERSONAL_NAME,COMPANY_NAME,COMPANY_SECTION1," & _
"COMPANY_SECTION2,COMPANY_POSITION,LAST_CONFIRM_DATE FROM T_MEISI " & _
" ORDER BY LAST_CONFIRM_DATE DESC , ID DESC "

'OleCommandオブジェクトを宣言
Dim da2 As New OleDbDataAdapter(strSQL2, con)

Dim ds2 As New DataSet
da2.Fill(ds2, "NEWDB")

With dgrdNew
.DataSource = ds2.Tables("NEWDB")
.DataBind()
End With

End Sub

〜〜〜途中省略〜〜〜検索ボタン等の処理

Function GetVisible(ByVal drv As DataRowView) As Boolean

Dim drow As DataRow = drv.Row

'今日より30日前
Dim wkDate As Date = DateAdd("d", -30, Now)
Dim wkLast As Date = drow("LAST_CONFIRM_DATE")

If wkLast < wkDate Then
Return False
Else
Return True
End If


End Function

(※補足)
当初デザインではVS2005の<asp:datagrid id="dgrdNew"移行(前掲)を貼り付けましたが、コンパイルで

'/' アプリケーションでサーバー エラーが発生しました。
パーサー エラー
説明: この要求の処理に必要なリソースの解析中にエラーが発生しました。以下の解析エラーの詳細を確認し、ソース ファイルに変更を加えてください。

パーサー エラー メッセージ: 基本クラスに 'dgrdNew' という名前のフィールドが含まれていますが、その型 (System.Web.UI.WebControls.GridView) はコントロール (System.Web.UI.WebControls.DataGrid) の型と互換性がありません。

ソース エラー:


行 251: <p>
行 252: ■新着名刺</p>
行 253: <asp:datagrid id="dgrdNew" runat="server" Width="942px" Font-Size="Smaller" AutoGenerateColumns="False" GridLines="Horizontal">
行 254: <HeaderStyle BackColor="#CCFFFF"></HeaderStyle>
行 255: <Columns>


のエラーが発生したため、VS2019ではツールに備わっているGridViewを使った方がこの先を考えた場合にも良いのではと思い
VS2019ではgridviewを使いテンプレート編集でイベントを設定しました。

よろしくお願いいたします。

引用返信 編集キー/
■97514 / inTopicNo.5)  Re[3]: DataGridView内の画像の可視・不可視の切り替え
□投稿者/ 魔界の仮面弁士 (3110回)-(2021/06/01(Tue) 10:03:13)
2021/06/01(Tue) 10:06:34 編集(投稿者)

No97513 (てっちゃん さん) に返信
> VS2005のプログラムは既に廃棄してしまい手元にありませんが、

VS2005 ということは、.NET Framework 2.0 製ですね。

VS2019 への移行後も .NET Framework 2.0 のままですか?
それとも、.NET Framework 3.5 Service Pack 1 でしょうか。
あるいは、.NET Framework 4.8 ですか?
(VS2019 なら、新規に作成すれば .NET 4 世代になるはず)



> 今回、VS2019への手動移行はこのフォルダ内のaspxとaspx.vbをテキストエディタで開き、
一部は、VS を使わずに修正したのですね。


> 含まれていますが、その型
> (System.Web.UI.WebControls.GridView) はコントロール
> (System.Web.UI.WebControls.DataGrid) の型と互換性がありません。

<asp:GridView> と
<asp:DataGrid> は別物です。

御存知かと思いますが、DataGrid は旧いコントロールなので、
現状はあまり使われていません。

DataGrid は .NET 1.0/1.1 世代のサーバーコントロールで、
GridView は .NET 2.0 以降で追加されたものです。

見た目は似ているところもありますが、使い方が違いますので、
単純に既存のコントールを差し替えるだけでは完了しません。コードも見直しましょう。
https://www.atmarkit.co.jp/fdotnet/dotnettips/780aspgridviewshow1/aspgridviewshow1.html


> VS2019ではツールに備わっているGridViewを使った方がこの先を考えた場合にも良いのではと思い
> VS2019ではgridviewを使いテンプレート編集でイベントを設定しました。

[ツールボックス] に表示されないのは、VS2005 の頃から同じだったはずですよ?

[ツールボックス] を右クリックして[アイテムの選択...]を選べば、
2005 や 2019 でも、DataGrid を使うことができます。

一遍に修正すると問題点が分かりにくくなるので、まずは
DataGrid のまま VS2019 へのコンバートを行ってから、その後で
GridView への切り替えを行うという手順にした方が良いかと思います。
引用返信 編集キー/
■97515 / inTopicNo.6)  Re[3]: DataGridView内の画像の可視・不可視の切り替え
□投稿者/ WebSurfer (2244回)-(2021/06/01(Tue) 10:16:05)
No97513 (てっちゃん さん) に返信

VS2005 と VS2019 で何が違うのかを明確にしてください。ここに書いてあること以外は
知り得ない第三者には分かりません。それが分かるのは質問者さんだけです。


VS2005 は Web サイトプロジェクトで ASP.NET 2.0、VS2019 は Web アプリケーション
プロジェクトで ASP.NET 4.8 というような大きな違いがあるのでは?

VS2005 はもう忘却の彼方なのですが、ネットの記事によると Web サイトプロジェクト
がデフォルトのようです。

Visual Studio 2005でWebアプリケーション・プロジェクトを使うには?[VS 2005のみ]
https://www.atmarkit.co.jp/fdotnet/dotnettips/586webappproject/webappproject.html

一方、VS2019 ではデフォルトでは Web アプリケーションプロジェクトしか作成できな
いはずですので。(Web サイトプロジェクト作成のテンプレートは隠れていて、デフォ
ルトでは非表示)
引用返信 編集キー/
■97516 / inTopicNo.7)  Re[3]: DataGridView内の画像の可視・不可視の切り替え
□投稿者/ WebSurfer (2245回)-(2021/06/01(Tue) 10:24:49)
No97513 (てっちゃん さん) に返信

最初の質問の話、

> この状態でデバッグすると
>
> '/' アプリケーションでサーバー エラーが発生しました。
> コンパイル エラー
> 説明: この要求を送信するために必要なリソースをコンパイル中に、エラーが発生しました。以下のエラーの詳細を確認して、ソース コードを修正してください。
>
> コンパイル エラー メッセージ: BC30451: 'GetVisible' is not declared. It may be inaccessible due to its protection level.
>
> ソース エラー:
>
>
> 行 255: <asp:TemplateField>
> 行 256: <ItemTemplate>
> 行 257: <asp:Image ID="Image1" runat="server" ImageUrl="/images/p_new_anime.gif" visible="<%# GetVisible(Container.DataItem) %>"/>
> 行 258: </ItemTemplate>
> 行 259: </asp:TemplateField>

と直近の No97513 の話、

> 当初デザインではVS2005の<asp:datagrid id="dgrdNew"移行(前掲)を貼り付けましたが、コンパイルで
>
> '/' アプリケーションでサーバー エラーが発生しました。
> パーサー エラー
> 説明: この要求の処理に必要なリソースの解析中にエラーが発生しました。以下の解析エラーの詳細を確認し、ソース ファイルに変更を加えてください。
>
> パーサー エラー メッセージ: 基本クラスに 'dgrdNew' という名前のフィールドが含まれていますが、その型 (System.Web.UI.WebControls.GridView) はコントロール (System.Web.UI.WebControls.DataGrid) の型と互換性がありません。
>
> ソース エラー:
>
>
> 行 251: <p>
> 行 252: ■新着名刺</p>
> 行 253: <asp:datagrid id="dgrdNew" runat="server" Width="942px" Font-Size="Smaller" AutoGenerateColumns="False" GridLines="Horizontal">
> 行 254: <HeaderStyle BackColor="#CCFFFF"></HeaderStyle>
> 行 255: <Columns>
>
>
> のエラーが発生したため、VS2019ではツールに備わっているGridViewを使った方がこの先を考えた場合にも良いのではと思い
> VS2019ではgridviewを使いテンプレート編集でイベントを設定しました。
>
> よろしくお願いいたします。

・・・は違ってますよね? 何がどうなっているのですか? 一体全体何が問題なのですか?
引用返信 編集キー/
■97517 / inTopicNo.8)  Re[3]: DataGridView内の画像の可視・不可視の切り替え
□投稿者/ WebSurfer (2246回)-(2021/06/01(Tue) 10:33:45)
No97513 (てっちゃん さん) に返信

Web サイトプロジェクトと Web アプリケーションプロジェクトの違いが判らなければ
以下の記事を読んでください。

Web アプリケーション プロジェクトと Web サイト プロジェクト
https://docs.microsoft.com/ja-jp/previous-versions/dd547590(v=vs.100)

もし、VS2005 の Web サイトプロジェクトを VS2019 で Web アプリケーションプロジ
ェクトに変更するつもりなら以下の記事を見てください。そんな簡単な話ではないので
よく考えてどうするか判断することをお勧めします。

Walkthrough: Converting a Web Site Project to a Web Application Project in Visual Studio
https://docs.microsoft.com/en-us/previous-versions/aspnet/aa983476(v=vs.100)
引用返信 編集キー/
■97518 / inTopicNo.9)  Re[4]: DataGridView内の画像の可視・不可視の切り替え
□投稿者/ てっちゃん (28回)-(2021/06/01(Tue) 17:43:07)
No97514 (魔界の仮面弁士 さん) に返信

魔界の仮面弁士様

> あるいは、.NET Framework 4.8 ですか?
> (VS2019 なら、新規に作成すれば .NET 4 世代になるはず)

新規作成で4.7.2です。

>>今回、VS2019への手動移行はこのフォルダ内のaspxとaspx.vbをテキストエディタで開き、
> 一部は、VS を使わずに修正したのですね。

そうです。ご指摘の通りです。

> 一遍に修正すると問題点が分かりにくくなるので、まずは
> DataGrid のまま VS2019 へのコンバートを行ってから、その後で
> GridView への切り替えを行うという手順にした方が良いかと思います。

>[ツールボックス] を右クリックして[アイテムの選択...]を選べば、
のアドバイスに従いDataGridを配置し、VS2005のaspxと同様にフォームを作成しました。
フォームの内容では特にエラーなどありませんでした。

■aspx(DataGrid部分)
<asp:datagrid id="Datagrid1" runat="server" Width="942px" Font-Size="Smaller" AutoGenerateColumns="False" GridLines="Horizontal">
<HeaderStyle BackColor="#CCFFFF"></HeaderStyle>
<Columns>
<asp:TemplateColumn>
<HeaderStyle Width="10px"></HeaderStyle>
<ItemTemplate>
<asp:image Runat="server" imageurl='images/p_new_anime.gif' Visible='<%# GetVisible(Container.DataItem) %>' />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="名前">
<HeaderStyle Width="120px"></HeaderStyle>
<ItemStyle HorizontalAlign="Left">
</ItemStyle>
<ItemTemplate>
<asp:HyperLink ID="ID" Runat="server" navigateurl='<%# GetUrl(Container.DataItem) %>' text='<%# container.dataitem("PERSONAL_NAME") %>' />
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="COMPANY_NAME" HeaderText="会社名">
<HeaderStyle Width="200px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="COMPANY_SECTION1" HeaderText="部門1">
<HeaderStyle Width="150px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="COMPANY_SECTION2" HeaderText="部門2">
<HeaderStyle Width="150px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="COMPANY_POSITION" HeaderText="役職">
<HeaderStyle Width="50px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="LAST_CONFIRM_DATE" HeaderText="更新日" DataFormatString="{0:yy/MM/dd}">
<HeaderStyle Width="50px"></HeaderStyle>
</asp:BoundColumn>
</Columns>
</asp:datagrid>

■aspx.vb

Sub BindData()
Using con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\D\meisi2021\BC.mdb")
Dim strSQL As String = "SELECT BUNRUICD,BUNRUINM FROM T_BUNRUI ORDER BY BUNRUICD"
Dim da As New OleDbDataAdapter(strSQL, con)
Dim ds As New DataSet
da.Fill(ds, "BUNRUI")

With ddlBunrui
.DataSource = ds.Tables("BUNRUI")
.DataValueField = "BUNRUICD"
.DataTextField = "BUNRUINM"
.DataBind()
.Items.Insert(0, New ListItem("--- カテゴリを選択 ---", ""))
End With

Dim strSQL2 As String = "SELECT TOP 5 ID,PERSONAL_NAME,COMPANY_NAME,COMPANY_SECTION1," &
"COMPANY_SECTION2,COMPANY_POSITION,LAST_CONFIRM_DATE FROM T_MEISI " &
" ORDER BY LAST_CONFIRM_DATE DESC , ID DESC "

'OleCommandオブジェクトを宣言
Dim da2 As New OleDbDataAdapter(strSQL2, con)

Dim ds2 As New DataSet
da2.Fill(ds2, "NEWDB")

With dgrdNew
.DataSource = ds2.Tables("NEWDB")
.DataBind()
End With

End Using

End Sub
〜〜〜途中省略〜〜〜検索ボタン等の処理

Function GetUrl(ByVal drv As DataRowView) As String

Dim drow As DataRow = drv.Row
Return "Detail.aspx?mid=" & drow("ID") & "&mod=top"

End Function
Function GetVisible(ByVal drv As DataRowView) As Boolean

Dim drow As DataRow = drv.Row

'今日より30日前
Dim wkDate As Date = DateAdd("d", -30, Now)
Dim wkLast As Date = drow("LAST_CONFIRM_DATE")

If wkLast < wkDate Then
Return False
Else
Return True
End If

End Function


コンパイルすると

'/' アプリケーションでサーバー エラーが発生しました。
コンパイル エラー
説明: この要求を送信するために必要なリソースをコンパイル中に、エラーが発生しました。以下のエラーの詳細を確認して、ソース コードを修正してください。

コンパイル エラー メッセージ: BC30451: 'GetVisible' is not declared. It may be inaccessible due to its protection level.

ソース エラー:


行 258: <HeaderStyle Width="10px"></HeaderStyle>
行 259: <ItemTemplate>
行 260: <asp:image Runat="server" imageurl='images/p_new_anime.gif' Visible='<%# GetVisible(Container.DataItem) %>' />
行 261: </ItemTemplate>
行 262: </asp:TemplateColumn>

が表示されてしまいます。

Functionで関数を定義する場合、参照設定など必要なのでしょうか?


引用返信 編集キー/
■97519 / inTopicNo.10)  Re[5]: DataGridView内の画像の可視・不可視の切り替え
□投稿者/ 魔界の仮面弁士 (3111回)-(2021/06/02(Wed) 10:10:40)
No97518 (てっちゃん さん) に返信
> 新規作成で4.7.2です。
今から新規なら 4.8 の方が良い気がしますが、それはさておき。


.NET Framework 4.6.2 で System.Web.Globalization 名前空間が追加されたため、
System.Globalization 名前空間に所属する型(例えば CultureInfo や DateTimeStyle)を
VB から扱う場合、中途半端に Globalization.CultureInfo などと記述していると、
名前空間の解決が曖昧になってしまい、環境更新後にコンパイルエラーもしくは
実行環境のみでのエラーになることがあります。
(最近の環境では直っているかも知れませんが…念のため)


> アドバイスに従いDataGridを配置し、VS2005のaspxと同様にフォームを作成しました。
> フォームの内容では特にエラーなどありませんでした。

VS2005 当時のソースを保守できる程度の知見はあるのですよね。
(VS2005 当時も、新規作成してデバッグおよび本番への配置が自力で行えていたのか)


そもそも、最初の質問のコンパイル エラー BC30451 が
>> 'GetVisible' is not declared. It may be inaccessible due to its protection level.
という英語原文なのも気になってはいます。手元の環境だと、ローカライズされた
'GetVisible' は宣言されていません。アクセスできない保護レベルになっています。
になっているのですけれどね。SDK バージョンの違いなのかな。


> Functionで関数を定義する場合、参照設定など必要なのでしょうか?
手元の環境では再現していないのですよね…。
一応、手順を載せておきます。

(1) VS2019 で、新しいプロジェクトの作成。
 言語:Visual Basic
 プラットフォーム:Windows
 プロジェクトの種類:Web
 で絞り込んで、「ASP.NET Web アプリケーション (.NET Framework)」を選択。

(2) プロジェクト名とソリューション名「WebWankuma97509」にして、
 フレームワークを「.NET Framework 4.7.2」に変更してから[作成]ボタン。

(3) ASP.NET 4 テンプレートで、「Web Forms」を選択し、下記の構成で[作成]ボタン。
 認証:なし
 フォルダーおよびコア参照: [on]Web フォーム, [off] MVC, [off] Web API
 詳細設定:[off]HTTPS 用の構成, [off]Docker のサポート, [off] 単体テストのためのプロジェクト

(4) 自動生成された Default.aspx を開いて、
 <asp:Content ID="BodyContent"></asp:Content>
 の中身を、 No97518
> ■aspx(DataGrid部分)
 に丸ごと差し替え。

(5) ソリューション エクスプローラーの[すべてのファイルを表示]アイコンを押して
 Default.aspx.vb を選択して、コードウィンドウを表示し、
 Public Class _Default
  Inherits Page
  
 End Class
 の中に、 No97518 の GetUrl と GetVisible を複写。
 この時点で、コンパイル エラー BC30451 が表示されることがあるが気にしない。


(6) ソリューション エクスプローラーで、
 プロジェクトあるいはソリューションを右クリックしてリビルドを選択。
 (あるいは、メニューの[ビルド]-[ソリューションのリビルド]でも可)
 この時点では、 Default.aspx.vb のコンパイルエラーは発生しなくなっている。

※データソースを未設定なので、実行してもレコードは表示されないものの
 少なくとも (5) のコンパイルエラーは解消している。


> Using con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\D\meisi2021\BC.mdb")
Jet 4.0 Provider をお使いのようですが、VS2019 への一次以降が完了した後は、
32bit/64bit 両方存在する ACE Provider に載せ替えた方が良いでしょう。

Jet 4.0 には 32bit 版しかありませんが、ACE には 32bit/64bit 両方あります。
バージョンも Service Pack 8 を最後に更新が途絶えているため、
セキュリティ上の問題もあります。

対 mdb ファイルの場合、データベース バージョンとの対応は
 Jet 3.5x … 1.0 / 1.1 / 2.0 / 3.0 / 3.5x
 Jet 4.0 … 1.0 / 1.1 / 2.0 / 3.0 / 3.5x / 4.0
 ACE 12 …… 1.0 / 1.1 / 2.0 / 3.0 / 3.5x / 4.0
 ACE 14 …… 3.0 / 3.5x / 4.0
 ACE 15/16… 4.0
となっております。対 .accdb なら ACE が必須です。
引用返信 編集キー/
■97522 / inTopicNo.11)  Re[6]: DataGridView内の画像の可視・不可視の切り替え
□投稿者/ てっちゃん (29回)-(2021/06/02(Wed) 11:42:19)
2021/06/02(Wed) 11:43:59 編集(投稿者)
2021/06/02(Wed) 11:43:55 編集(投稿者)

No97519 (魔界の仮面弁士 さん) に返信

魔界の仮面弁士様

アドバイスありがとうございました。
アドバイスに従い、WebWankuma97509を作成したところ魔界の仮面弁士様のおっしゃる通りエラーの
発生なく、ビルド出来ました。

続いてデータをバインドしたところ問題なくデータが表示され、本日より30日以内のデータのNEW画像が
表示されました。

となると問題はこの関数の指定ではなく、別の箇所にあるということですね?

ACE Providerについても変更していきたいと思います。


引用返信 編集キー/
■97523 / inTopicNo.12)  Re[7]: DataGridView内の画像の可視・不可視の切り替え
□投稿者/ 魔界の仮面弁士 (3112回)-(2021/06/02(Wed) 12:24:45)
No97522 (てっちゃん さん) に返信
> となると問題はこの関数の指定ではなく、別の箇所にあるということですね?

だと思います。
しかしそれが何であるかは、現時点では情報が足りないため判断できないです。


> ACE Providerについても変更していきたいと思います。

今回は手が回らないかもしれませんが、サーバー構成によっては、
別のデータベースへの移行も検討しておいた方が良いでしょう。

mdb ファイルは Web アプリ向きに設計されたものではなく、
複数ユーザーからの同時アクセス性能も低いためです。
Jet から ACE にしても、その点は変わりません。
引用返信 編集キー/
■97526 / inTopicNo.13)  Re[8]: DataGridView内の画像の可視・不可視の切り替え
□投稿者/ てっちゃん (30回)-(2021/06/02(Wed) 12:56:45)
No97523 (魔界の仮面弁士 さん) に返信

魔界の仮面弁士様

本当にありがとうございました。

今回の質問は解決済みとさせていただきます。
今後ともよろしくお願いいたします。


解決済み
引用返信 編集キー/
■97543 / inTopicNo.14)  Re[9]: DataGridView内の画像の可視・不可視の切り替え
□投稿者/ WebSurfer (2248回)-(2021/06/03(Thu) 15:03:36)
No97526 (てっちゃん さん) に返信

結局前のスレッドと同様に、作り直したらエラーは出なくなったので、何が原因だったかは
分からないけど、それ以上調べる気もしないし、それで良しとして終わりにしたということ
のようですね。

それでここで質問する意味があったんですかね。まぁ、質問者さんにとってはそれでよかっ
たかもしれませんけど、閲覧者にとっては消化不良、後で検索などでここを訪れた人などに
役に立つ情報の蓄積にはなってないと思うのですが。



引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -