DOBON.NETプログラミング道掲示板

■ 「新規作成」から投稿できます。
■ マルチポストされた投稿を見つけたときは、その投稿に返信することによりご報告ください。その際は匿名で投稿し、マルチポストされている場所を併記してください。
■ スパム対策のため、メールアドレスの先頭に"_"という文字が付加されています。
RSS 2.0 RSS 2.0 | RSS 0.91 | 携帯電話用 | 自分専用のアイコンを使用するには | 掲示板への要望 | 管理人に連絡 | お気楽掲示板
■ 24時間以内に作成されたスレッドは New で表示されます。
■ 24時間以内に更新されたスレッドは UpDate で表示されます。

記事リスト ( )内の数字はレス数
Nomal参照dllへの文字列引数をutf8で渡したい。(13) | NomalFILE.COPYでIOExceptionエラーが出る(11) | Nomalリストを別フォームに渡す方法(9) | Nomal例外発生した場合に変数をcatchに渡したい(9) | NomalCode128でバーコードが読み取れない(8) | Nomalモードレスフォーム Warning IDE0067を回避したい(7) | NomalIE11では表示されるが、.netのWebBrowserでは、表示されないHPを表示する方法(7) | Nomal数字だけで構成されてるCSVフィールドが自動的に数値として解釈される(7) | NomalフォームコントロールへのDataBindingsでプロパティが相互反映されない(7) | Nomal起動ディスプレイの指定方法について(6) | NomalListBoxにデータが表示されない(6) | Nomal文字列を8bit に戻してから UTF-8 に変換する方法(6) | NomalSQLServerテーブル内容をDataGridViewに表示するコードについて(6) | Nomal文字列構造体のListのソート(6) | NomalWebBrowser Controlを使って、任意の値を取得(5) | Nomalこんな演算子初めて見ました。(5) | NomalRichTextBoxで入力文字の自動折り返しを止めたい(5) | NomalあるWindows10PCでビルドしたEXEがW8.1以下で実行エラー(5) | Nomalポルトガル語の登録(5) | Nomaloo4oのAddTableをADOに移行したい(5) | NomalDeclare宣言するdllと参照追加をするdllの区別(4) | NomalVS2017で作成されたDLLをVS2005で作成されたAPで使用する方法(4) | Nomalフォルダ内の全ての容量を取得したい(4) | Nomal共変性と反変性ってこういうこと?(4) | Nomalプロセスからウインドウを取得(4) | NomalNewの使い方間違ってますか?(4) | Nomalユーザーコントロール内のテキストボックスのmodifiedプロパティ(4) | NomalJOIN操作の構文エラー(4) | Nomal動的にプロパティや変数の値の取得(4) | NomalVB6 ほかのアプリケーションを起動し そのアプリケーションは終了させる方法(4) | Nomalスクロールバーが出た時に高さを変えたい(4) | NomalDatagridViewの行高さ変更について(4) | NomalLINQのメソッド構文の書き方(3) | Nomalvb.net+SQLiteで複数データベースファイルへのトランザクション方法(3) | Nomalジェネリック型インターフェースを使った変数を扱いたい(3) | NomalProcess.WaitForExitで正常に動作しない?(3) | NomalPictureBox.Locationのキャンセル(3) | NomalCatch時のex.StackTraceの情報(3) | NomalVisualStudioでマクロ(3) | NomalOracleDataAccess を参照したプログラムでデバッグモードが機能しなくなる(3) | NomalVisualStudioでExcelのVSTO開発(3) | NomalVB.NETでCSVを読み込む際にSQL文を使いたい(3) | NomalDrawImage でメモリ不足エラー(3) | NomalVb.netからAccessへの接続について(3) | Nomal令和の日付への対応(3) | NomalHTTP 417エラーを発生させるためのIIS設定はどうすればよいか(3) | NomalDrawString前のFillRectangle有無により文字の太さが違う理由について教えて下さい(3) | NomalPIctureBox同士を論理合成したい(3) | Nomalデータセット定義ファイルからDataTable(3) | Nomalネットの画像の複数枚を重ね合わせたい(3) | NomalDataGridViewで検索をかける方法(3) | NomalDataGridViewの選択時の色を透明にしたい(3) | NomalWebBrowserでWebページからのメッセージ(3) | NomalASP.NETから呼ばれているかどうか判定する方法(3) | NomalCA2213の警告が消えません(3) | NomalC# 現在のコンテキスト内にxxxという文字は存在しませんと出ます(3) | NomalTaskクラスを.NET Framework 2.0で実現させる方法(2) | NomalWebBrowser Control foreachで値が消える(2) | NomalEditボックスに簡体字をセットする方法(2) | NomalWebClientが上手く動かない(2) | Nomalフォーム外のカーソルの変更(2) | Nomalラムダ式の勉強中(2) | NomalRichTextBoxで入力文字の自動折り返しを止めたい(2) | NomalC#をVBに変換(2) | NomalWebClientで、短期間にDownloadStringAsyncを実行したい(2) | NomalマウスのないOSでマウスカーソルの表示(2) | NomalToolStripMenuItemにShortcutKeysを指定した際の、元のコントロールを取得する方法(2) | NomalMouseEventArgsのカレント座標(2) | Nomalリッチテキストボックスでの字間の調整(2) | NomalVC++ → VB.Netに変換時に文法エラー(2) | NomalSQL-Server Compact 4.0が表示されない(2) | Nomalバーコードの数字を非表示にしたい(2) | Nomal自作したアプリの発行元を明記したい(2) | NomalSystem.Threading.Thread.Sleep()と変数(2) | NomalDataGridView 行の背景色の設定(2) | NomalDatagridviewのクリア(2) | NomalnumericUpDwonコントロールのvalue(2) | NomalVisual Studio DataTableの値のアクセスの仕方(2) | NomalDataTableの構造が同じか調べるメソッド(2) | NomalRejectChangesについて(2) | NomalPC機種によってスタートアップ画面が中央から左上にずれる、Fontがおかしくなる。(2) | Nomalタスクスケジュール登録時の例外メッセージ(2) | Nomal管理者モードでクリック(2) | NomalVB2017でのインストーラ作成時のエラーについて(2) | NomalMicrosoft Azure OCRのサンプルコード実行時エラー(2) | Nomalデータバインド時のDataGridViewのカスタムソート(2) | NomalObject型からDecimalへの変換(2) | Nomal擬似言語をVBのプログラミングに変換(2) | Nomalユーザーコントロールのプロパティが保存されない(2) | NomalWindows10(1803)からGetHostEntryでipv4が取得出来ない場合がある(2) | Nomal自分自身を呼び出すのはOKですか(1) | NomalList型でエラーが起きてしまい・・・(1) | NomalLINQの拡張メソッドの定義(1) | NomalWebRequest でメモリが解放されない(1) | NomalFunction プロシージャからの文字選択(1) | NomalRDP接続でのネットワーク帯域制限(0) | Nomal必須コンポーネントの一覧に追加したい(0) | NomalApp.configのMy.Application.Log設定で使用できない属性が出る(0) | Nomalvb2010を使用したmicrosoft Wordの任意の行の削除(0) | NomalWinFormsでWindows10のカメラアプリと連携したい(0) |



■記事リスト / ▼下のスレッド
■34359 / 親記事)  Newの使い方間違ってますか?
□投稿者/ VBはじめました 一般人(13回)-(2019/11/05(Tue) 13:47:26)
  • アイコン環境/言語:[VisualStudio2017 VB.net] 
    分類:[.NET] 

    フォームのインスタンスを作る方法として次の4つの方法がある(それ以上あるかも?)とします。
    Dim Frm1 As Form
    Frm1 = New Form 'Sub Form.New()
    Dim Frm2 As Form = New Form 'Sub Form.New()
    Dim Frm3 = New Form 'Sub Form.New()
    Dim Frm4 As New Form 'Sub Form.New()

    一方、Integer型の配列のインスタンスを作る方法として、対比させると
    次のようになると思います。
    Dim Int41 As Integer()
    Int41 = New Integer() {1, 2, 3, 4, 5} 'Integer()
    Dim Int42() As Integer = New Integer() {1, 2, 3, 4, 5} 'Integer()
    Dim Int43 = New Integer() {1, 2, 3, 4, 5} 'Integer()
    Dim Int44 As New Integer() 'Sub Integer.New()

    フォームの場合、Newキーワードのところにカーソルを持っていくと
    各行のコメントが表示されます。
    Int44だけ、違った表示がされ、配列になりません。
    なぜですか?
    詳しい方いらっしゃいましたら教えて頂けませんでしょうか?
    宜しくお願いいたします。
違反を報告
引用返信

▽[全レス4件(ResNo.1-4 表示)]
■34360 / ResNo.1)  Re[1]: Newの使い方間違ってますか?
□投稿者/ 魔界の仮面弁士 大御所(1250回)-(2019/11/05(Tue) 14:16:30)
  • アイコンNo34359に返信(VBはじめましたさんの記事)
    > Dim Frm4 As New Form 'Sub Form.New()
    これは
     Dim Frm4 As New Form()
    の省略形です。

    メソッドやコンストラクタの呼び出し時には、
    引数を指定するための丸括弧が必要とされますが、
    引数が 0 個の場合に限り、丸括弧を省略できます。


    > Dim Int42() As Integer = New Integer() {1, 2, 3, 4, 5} 'Integer()
    こちらの括弧は引数指定のためのものではなく、配列宣言を意味します。

    > Dim Int41 As Integer()
    > Int41 = New Integer() {1, 2, 3, 4, 5} 'Integer()
    この丸括弧も、配列宣言のためのものですね。
    Int42 と同様、宣言部と配列初期化子を組み合わせて
     Dim Int41 As Integer() = New Integer() {1, 2, 3, 4, 5}
    とも書けます。


    > Dim Int43 = New Integer() {1, 2, 3, 4, 5} 'Integer()
    > Dim Int44 As New Integer() 'Sub Integer.New()
    前者の丸括弧は「配列」のためのものです。※配列初期化子
    後者の丸括弧は「引数」のためのものです。※構造体の既定のコンストラクタ

    先の Form 宣言と対応する形で並べれば、
     Dim Frm4 As New Form() 'Form クラスの引数0個のコンストラクタ呼出
     Dim Int44 As New Integer() 'Integer 構造体の既定のコンストラクタ呼出
    となります。どちらも引数指定です。


    引数 0 個の場合、丸括弧を省略できますので、
     'Dim Int44 As New Integer()
     Dim Int44 As New Integer
    とするのは OK ですが、配列宣言の括弧を省略すると意味が変わってくるため
    Int41〜Int43 については丸括弧が必須です。


    Dim Int44 As New Integer()
       ↓
    Dim Int44 As Integer = New Integer()
       ↓
    Dim Int44 As Integer = 0
違反を報告
引用返信
■34361 / ResNo.2)  Re[1]: Newの使い方間違ってますか?
□投稿者/ 魔界の仮面弁士 大御所(1251回)-(2019/11/05(Tue) 14:25:15)
  • アイコン2019/11/05(Tue) 14:33:59 編集(投稿者)

    No34359に返信(VBはじめましたさんの記事)
    > Int41 = New Integer() {1, 2, 3, 4, 5} 'Integer()
    > Dim Int42() As Integer = New Integer() {1, 2, 3, 4, 5} 'Integer()

    配列のインデックスを明示することもできますね。(各要素はゼロになる)
     Dim Int46(4) As Integer
     Dim Int47(0 To 4) As Integer
     Dim Int48(0 To -1) As Integer
     Dim Int49(-1) As Integer


    コンストラクタ引数の丸括弧やメソッド引数の丸括弧は省略できますが、
    代入式の右辺にある配列初期化子については、
    丸括弧や波括弧を省略することが出来ません。


    ' これらの括弧は省略できない
    Int46 = New Integer(4) {}
    Int46 = New Integer(4) {1, 2, 3, 4, 5}
    Int46 = New Integer(0 To 4) {}
    Int46 = New Integer(0 To 4) {1, 2, 3, 4, 5}
    Int49 = New Integer(0 To -1) {}
    Int49 = New Integer(-1) {}
    Int49 = New Integer() {}


    そして
     Dim Int43 = New Integer() {1, 2, 3, 4, 5}

     Dim Int43 As New Integer() {1, 2, 3, 4, 5}
    と記述できない理由は、『New Integer()』の時点で、
    配列ではなく「コンストラクタの指定」と見做されるためです。

    最近のバージョンでは、型推論が利用できるため、
     Dim Int43 = {1, 2, 3, 4, 5}
    と書いたとしても、Integer 型の一次元配列としてコンパイルされますね。



    また、
     Dim Int42() As Integer = New Integer()

     Dim Int42() As New Integer()
    と書けない理由は、New の丸括弧と配列の丸括弧が同居すると、
    意味が曖昧になるという理由によって禁止されているためです。
違反を報告
引用返信
■34362 / ResNo.3)  Re[2]: Newの使い方間違ってますか?
□投稿者/ VBはじめました 一般人(14回)-(2019/11/05(Tue) 16:07:22)
  • アイコン魔界の仮面弁士さん いつも有難う御座います。

    質問の答えとしては、
     Dim Int42() As New Integer()
    と書けない理由は、New の丸括弧と配列の丸括弧が同居すると、
    意味が曖昧になるという理由によって禁止されているためです。
    だけで、済むところを、凄い労力をかけて懇切丁寧に、記載して頂き、ありがとうございます。理解できていなかったものばかりでとても勉強になります。

    無駄にしないように、何度も、熟読して理解していきたいと思います。

    重ね重ね、有難う御座いました。


違反を報告
引用返信
■34363 / ResNo.4)  解決済み押し忘れ
□投稿者/ VBはじめました 一般人(15回)-(2019/11/05(Tue) 16:08:14)
  • アイコン有難うございました
解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-4]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34336 / 親記事)  ユーザーコントロール内のテキストボックスのmodifiedプロパティ
□投稿者/ はる 一般人(1回)-(2019/10/28(Mon) 15:16:18)
  • アイコン環境/言語:[VS2017] 
    分類:[.NET] 

    テキストボックス(txtDate)カレンダーコントロール(txtCal)のユーザーコントロールを作成しています。

    これをフォームに貼りつけコントロール名をtxtSaleDateとします。
    txtSaleDateのtxtDateのmodifiedプロパティを参照するといつもfalseになってしまいます。(txtSaleDate.txtDate.Modifedで参照しています。)

    ユーザーコントロールでは参照できないのでしょうか?
違反を報告
引用返信

▽[全レス4件(ResNo.1-4 表示)]
■34337 / ResNo.1)  Re[1]: ユーザーコントロール内のテキストボックスのmodifiedプロパティ
□投稿者/ 魔界の仮面弁士 大御所(1243回)-(2019/10/28(Mon) 15:49:07)
  • アイコンNo34336に返信(はるさんの記事)
    > テキストボックス(txtDate)カレンダーコントロール(txtCal)のユーザーコントロールを作成しています。

    カレンダーコントロールとは何でしょうか。
    txtDate は TextBox クラスで
    txtCal は DateTimePicker でしょうか?



    現状の実装が把握しきれていないのですが、
    TextBox(あるいはその基底たる TextBoxBase)クラスの
    Modified プロパティの事だとしたら、このプロパティは
    下記のように動作します。

    ・ユーザーがテキストを編集すると true になる
    ・コードから Text プロパティを編集すると false になる
    ・Modiled プロパティを意図的に true/false に書き換えることは可能


    > txtSaleDateのtxtDateのmodifiedプロパティを
    「txtSaleDateのtxtDate」とは、何を指しているのでしょうか?

    > txtSaleDate.txtDate.Modifedで参照しています。
    > ユーザーコントロールでは参照できないのでしょうか?
    txtSaleDate が UserControl だったりするのかな…。


    もしもユーザーコントロールが自身の子コントロールを public 等で
    公開しているのだとしたら、そのような実装は避けたほうが良いでしょう。
    (カプセル化の観点からみると、望ましくありません)
違反を報告
引用返信
■34338 / ResNo.2)  Re[2]: ユーザーコントロール内のテキストボックスのmodifiedプロパティ
□投稿者/ はる 一般人(4回)-(2019/10/28(Mon) 16:13:02)
  • アイコンNo34337に返信(魔界の仮面弁士さんの記事)

    すいません。書き直します。


    テキストボックス(コントロール名:txtDate)、DateTimePicer(コントロール名:txtCal)でユーザーコントロール(ユーザーコントロール名:CalCtrl)を作成します。

    これを何かのフォーム(form名:Form01)に上で作ったユーザーコントロールを貼りつけます。(コントロール名:txtSaleDate)

    form01でtxtSaleDateに日付を入力します。入力された日付が表示されていたものと同じであれば処理を実行したくないので

    違う日付を入力しても
    txtSaleDate.Validatingイベントで参照すると
    txtSaleDate.txtDate.modifiedはいつもfalseになっています。



    ユーザーコントロールでは参照できないのでしょうか?
違反を報告
引用返信
■34339 / ResNo.3)  Re[3]: ユーザーコントロール内のテキストボックスのmodifiedプロパティ
□投稿者/ shu 大御所(488回)-(2019/10/28(Mon) 16:59:02)
  • アイコンNo34338に返信(はるさんの記事)


    > テキストボックス(コントロール名:txtDate)、DateTimePicer(コントロール名:txtCal)でユーザーコントロール(ユーザーコントロール名:CalCtrl)を作成します。
    >
    > これを何かのフォーム(form名:Form01)に上で作ったユーザーコントロールを貼りつけます。(コントロール名:txtSaleDate)
    >
    > form01でtxtSaleDateに日付を入力します。入力された日付が表示されていたものと同じであれば処理を実行したくないので
    >
    > 違う日付を入力しても
    この入力でtxtDate.Textの内容の変更がユーザーによって行われているのでしょうか?それともtxtCalによるイベントなどで変更が行われているのでしょうか?後者であるとするとModifiedはTrueになりません。



違反を報告
引用返信
■34340 / ResNo.4)  Re[2]: ユーザーコントロール内のテキストボックスのmodifiedプロパティ
□投稿者/ はる 一般人(6回)-(2019/10/28(Mon) 17:20:48)
  • アイコンNo34337に返信(魔界の仮面弁士さんの記事)
    > ■No34336に返信(はるさんの記事)

    > ・コードから Text プロパティを編集すると false になる

    原因はこれでした。
    ありがとうございました。
解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-4]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34323 / 親記事)  JOIN操作の構文エラー
□投稿者/ 社畜からの開放 一般人(3回)-(2019/10/22(Tue) 19:57:18)
  • アイコン環境/言語:[Win10 64bit VB.NET] 
    分類:[.NET] 

    お世話になっております。
    (前回の質問と名前を合わせるために見ていたら開放を誤字していて恥ずかしいです。)

    VB.NETでSQL文を使用しようとしたところ
    「System.Data.OleDb.OleDbException: 'JOIN 操作の構文エラーです。'」というエラーが表示されます。

    SQLの構文が何か間違っているのだとは思いますが、原因がわかりません。

    試したこととしては
    Dim commText As String = "SELECT * FROM " & csvfile_Order
    ⇒正常にDataGridViewに表示されます。

    Dim commText As String = "SELECT * FROM [""" & csvfile_Order & """] LEFT OUTER JOIN [""" & csvfile_Shop & """] ON [""" & csvfile_Order & """].[ShopCode]=[""" & csvfile_Shop & """].[ShopCode]"
    ⇒System.Data.OleDb.OleDbException: ''["OrderMaster.csv"].[ShopCode]' のかっこの使い方が正しくありません。'

    Dim commText As String = "SELECT * FROM [" & csvfile_Order & "] LEFT OUTER JOIN [" & csvfile_Shop & "] ON [" & csvfile_Order & "].[ShopCode]=[" & csvfile_Shop & "].[ShopCode]"
    ⇒System.Data.OleDb.OleDbException: ''["OrderMaster.csv"].[ShopCode]' のかっこの使い方が正しくありません。'

    また、使用しているcsvですが試作のためのダミーデータです。
    JOINしようとしているデータ型が違う等の凡ミスもないと思っております。
    コードの下に、schema.iniも記載いたします。
    (日付もCharにしているのは実力不足ですので気にしないでください。)

    以下コードです。
    Form1.vb
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Const csvDir = "C:\Users\UserName\Desktop\"
    Const csvfile_Order = "OrderMaster.csv"
    Const csvfile_Shop = "ShopMaster.csv"
    'Const csvfile_Goods = "GoodsMaster.csv"

    Dim conString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & csvDir & ";Extended Properties =""text;HDR=Yes;FMT=Delemited"""
    Dim con As New System.Data.OleDb.OleDbConnection(conString)


    Dim commText As String = "SELECT * FROM " & csvfile_Order & " LEFT OUTER JOIN " & csvfile_Shop & " ON " & csvfile_Order & ".[ShopCode]=" & csvfile_Shop & ".[ShopCode]"
    Debug.Print(commText)
    Dim da As New System.Data.OleDb.OleDbDataAdapter(commText, con)

    Dim dt As New DataTable
    da.Fill(dt)
    DataGridView1.DataSource = dt

    MsgBox("完了")

    End Sub


    schema.ini

    [OrderMaster.csv]
    ColNameHeader=True
    Format=CSVDelimited
    Col1="OrderKey" Integer
    Col2="ShopCode" Char
    Col3="GoodsCode" Char
    Col4="PlanDate" Char
    Col5="StatusCode" Char
    Col6="RgstDate" Char
    Col7="UpdtDate" Char
    Col8="UpdtCode" Char

    [GoodsMaster.csv]
    ColNameHeader=True
    Format=CSVDelimited
    Col1="GoodsKey" Integer
    Col2="GoodsCode" Char
    Col3="GoodsName" Char

    [ShopMaster.csv]
    ColNameHeader=True
    Format=CSVDelimited
    Col1="ShopKey" Integer
    Col2="ShopCode" Char
    Col3="ShopName" Char

違反を報告
引用返信

▽[全レス4件(ResNo.1-4 表示)]
■34324 / ResNo.1)  Re[1]: JOIN操作の構文エラー
□投稿者/ Hongliang 大御所(566回)-(2019/10/22(Tue) 21:48:11)
  • アイコン
    2019/10/22(Tue) 21:49:09 編集(投稿者)
    
    テーブルにはエイリアスをつけて、以降はエイリアスの方を使うようにします。
    あと、&で文字を結合するより、String.Formatか、Visual Studio 2015以降であれば
    文字列補間を使うことをお勧めします。
    
    文字列補間を使った場合はこんな感じ。文字列開始が"ではなく$"になります。
    ついでに、Visual Studio 2015以降だと文字列中に改行も入れられます。
    
    Dim commText As String = $"SELECT *
    FROM  [{csvfile_Order}] AS order
    LEFT OUTER JOIN [{csvfile_Shop}] AS shop
      ON order.ShopCode = shop.ShopCode"

違反を報告
引用返信
■34325 / ResNo.2)  Re[2]: JOIN操作の構文エラー
□投稿者/ 社畜からの開放 一般人(4回)-(2019/10/23(Wed) 20:47:17)
  • アイコンHongliangさん、回答ありがとうございます。
    無事目指すものがうまく表示されました。

    エイリアス(AS使うやつ?)がフィールド名以外でも使えることを知りませんでした。

    文字列補間は便利そうですが、変数の型とか定数と変数とか意識しないと一気にぐちゃぐちゃ書いちゃう人なので参考とさせていただきます。

    後学のために教えていただきたいのですがなぜパス名指定ではうまくいかず、エイリアスによる指定ではうまくいったのでしょうか。

    1つのスレッドで複数の質問に該当する場合は申し訳ございません。
    一方で解決済みにしてよいものかも判断できないため数日様子を見させていただきます。
違反を報告
引用返信
■34326 / ResNo.3)  Re[3]: JOIN操作の構文エラー
□投稿者/ Hongliang 大御所(567回)-(2019/10/24(Thu) 10:49:06)
  • アイコン> 変数の型とか定数と変数とか意識しないと一気にぐちゃぐちゃ
    というのが文字列を&で結合するのとどう関係するのかよく分かりませんが、文字列を&で結合するのよりは文字列補間の方がぐちゃぐちゃにはならないと思います。

    > 後学のために教えていただきたいのですがなぜパス名指定ではうまくいかず、エイリアスによる指定ではうまくいったのでしょうか。
    正確なところは分かりませんが、少なくともOleDb/JETでcsvを扱う場合において、基本的にピリオドは [] や `` の有無に関わらず識別子として存在してはいけない文字のようですね。
    ただし、FROM句やJOIN句にはテーブル名が指定されることが明らかなので、ピリオドが含まれていても良く、[] や `` も必要ないようです。

    なおピリオドは # で代用することができるようです。これを使えば
    SELECT [hoge#csv].name FROM hoge#csv
    なんて記述もできます。
    まあエイリアスを使うのをお勧めしますが。
違反を報告
引用返信
■34327 / ResNo.4)  Re[4]: JOIN操作の構文エラー
□投稿者/ 社畜からの開放 一般人(5回)-(2019/10/24(Thu) 18:25:38)
  • アイコンHongliang様、回答ありがとうございます。

    csvを扱うのに.がエスケープさえ許されないのは少し不思議です。
    教わったエイリアスを使わせていただきます。

    文字列補間は新しい知識に困惑していますが頑張って練習してみます。
解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-4]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34283 / 親記事)  動的にプロパティや変数の値の取得
□投稿者/ ゆみと 一般人(1回)-(2019/07/28(Sun) 12:46:50)
  • アイコン環境/言語:[VS2010 C#] 
    分類:[.NET] 

    いつも参考にさせて頂いています。

    生成されたインスタンスに対して動的にプロパティや変数の値を取得を行いたいです。

    イメージ的には
    string getname = "Dai"."syou_A"."nameA";

    のような形で取得出来ないでしょうか。

    入れ子の入れ子?(言い方が正しいか分かりません)になった場合よく分からなくなってきました。

    public class Dai
    {
    public syou_A = new syouA();

    public syou_B {get; set;}

    public Dai()
    {
    this.syou_B = new syouB();
    }
    }

    public class syouA
    {
    public string nameA = nameA;
    public object ageA = ageA;
    }

    public class syouB
    {
    public string nameB { get; set;}
    public object ageB { get; set;}
    }

    public class Test
    {
    private dai = new Dai();

    public Test()
    {
    dai = new Dai();

    dai.syou_A.nameA = "なまえ";
    dai.syou_A.ageA = "99";

    dai.syou_B.nameB = "ナマエ";
    dai.syou_B.ageB = "0";
    }

    public void doutekiniSyutoku()
    {
    string getname = "Dai"."syou_A"."nameA";
    }
    }
違反を報告
引用返信

▽[全レス4件(ResNo.1-4 表示)]
■34284 / ResNo.1)  Re[1]: 動的にプロパティや変数の値の取得
□投稿者/ 魔界の仮面弁士 大御所(1234回)-(2019/07/28(Sun) 15:24:32)
  • アイコンNo34283に返信(ゆみとさんの記事)
    > 生成されたインスタンスに対して動的にプロパティや変数の値を取得を行いたいです。
    『何のために』そのようなことがしたいのでしょうか?

    理由如何によって、必要な対処方法も変わってくるかと
    思いますが、とりあえず幾つか例を挙げてみると…

    案1) 動的にアクセスできるよう、DynamicObject から継承するようにする
    案2) ExpandoObject クラスを使って dynamic でアクセスするようにする
    案3) Dictionary<string, Dictionary<string,dynamic>> を使う
    案4) XDocument で階層化データ構造を表すようにする
    案5) リレーション付き DataSet を使う(型付き DataSet でも可)
    案6) Microsoft.VisualBasic.Interaction.CallByName メソッドで呼び出す
    案7) リフレクションを通じて呼び出す
違反を報告
引用返信
■34285 / ResNo.2)  Re[2]: 動的にプロパティや変数の値の取得
□投稿者/ ゆみと 一般人(4回)-(2019/07/29(Mon) 11:30:25)
  • アイコン魔界の仮面弁士さん

    いつもありがとうございます。

    難しい事は考えず以下の方法で行います。

    /*syouAの場合*/
    FieldInfo field = t1.GetField("syou_A");

    var obj = field.GetValue(dai);

    Type t = obj.GetType();

    FieldInfo fieldy2 = t.GetProperty("nameA");

    string buff = fieldy2.GetValue(obj, null).ToString();

    /*syouBの場合*/
    PropertyInfo property = t1.GetProperty("syou_B");

    var obj = property.GetValue(dai, null);

    Type t = obj.GetType();

    PropertyInfo property2 = t.GetProperty("nameB");

    string buff = property2.GetValue(obj, null).ToString();

    以上

    No34284に返信(魔界の仮面弁士さんの記事)
    > ■No34283に返信(ゆみとさんの記事)
    >>生成されたインスタンスに対して動的にプロパティや変数の値を取得を行いたいです。
    > 『何のために』そのようなことがしたいのでしょうか?
    >
    > 理由如何によって、必要な対処方法も変わってくるかと
    > 思いますが、とりあえず幾つか例を挙げてみると…
    >
    > 案1) 動的にアクセスできるよう、DynamicObject から継承するようにする
    > 案2) ExpandoObject クラスを使って dynamic でアクセスするようにする
    > 案3) Dictionary<string, Dictionary<string,dynamic>> を使う
    > 案4) XDocument で階層化データ構造を表すようにする
    > 案5) リレーション付き DataSet を使う(型付き DataSet でも可)
    > 案6) Microsoft.VisualBasic.Interaction.CallByName メソッドで呼び出す
    > 案7) リフレクションを通じて呼び出す
違反を報告
引用返信
■34286 / ResNo.3)  Re[1]: 動的にプロパティや変数の値の取得
□投稿者/ 魔界の仮面弁士 大御所(1235回)-(2019/07/29(Mon) 11:57:24)
  • アイコン2019/07/29(Mon) 12:00:34 編集(投稿者)

    No34283に返信(ゆみとさんの記事)
    > 入れ子の入れ子?(言い方が正しいか分かりません)になった場合よく分からなくなってきました。

    質問文の C# 文法がおかしいので、何がやりたいのか曖昧で…。

    まずは【Dai クラス】の問題点から。

    > public class Dai
    > {
    >   public syou_A = new syouA();
    >   public syou_B {get; set;}
    >   public Dai()
    >   {
    >     this.syou_B = new syouB();
    >   }
    > }

    フィールド変数やプロパティの「型」を書き忘れているので、
    そもそも文法違反です。最低でもこうなるはずですよね。

    public class Dai {
      public syouA syou_A = new syouA();
      public syouB syou_B {get; set;}
      public Dai() { this.syou_B = new syouB(); }
    }



    さて次は【syouA クラス】の問題点。

    > public class syouA
    > {
    >  public string nameA = nameA;
    >  public object ageA = ageA;
    > }

    変数宣言と同時に、その変数を右辺に使うことは出来ません。
    未初期化変数へのアクセスということで、コンパイルエラーとなります。

    仮に同じ変数自身でなかったとしても、自身のインスタンスメンバーを
    フィールド初期化子に使うのは NG なので、たとえば
      public object ageA = "ageA";
      public string nameA = ageA;
    というのも NG ですね。


    最後は【Test クラス】の問題点については、
    Dai クラスのものと同じ理由なので割愛。

    > public class Test
    > {
    >   private dai = new Dai();


    質問の本題部となるのは、この部分ですね。

    > public void doutekiniSyutoku()
    > {
    >   string getname = "Dai"."syou_A"."nameA";
    > }



    No34284 に追記(魔界の仮面弁士)
    > 案1) 動的にアクセスできるよう、DynamicObject から継承するようにする
    > 案2) ExpandoObject クラスを使って dynamic でアクセスするようにする

    これらは「動的にメンバーを追加・取得することが目的」の場合に使うものです。

    案1 は継承が必要になりますが、動的なメンバー指定に応じて
    ファイルやデータベースに検索に行くような、MVC 的な利用が可能です。

    単純な読み書き向けだけなら、案2 でも十分です。以下サンプル。


    class Program
    {
      private static dynamic dai;
      static void Main()
      {
        // 動的なメンバー生成
        dai = new ExpandoObject();
        dai.syou_A = new ExpandoObject();
        dai.syou_B = new ExpandoObject();
        dai.syou_A.nameA = "なまえ";
        dai.syou_B.nameA = "ナマエ";
        dai.syou_A.ageA = "99";
        dai.syou_B.ageB = "0";

        // メンバー名出のアクセス
        Console.WriteLine(動的取得("syou_A", "nameA"));

        Console.ReadLine();
      }

      public static dynamic 動的取得(string member1, string member2)
      {
        dynamic syou = ((IDictionary<string, object>)dai)[member1];
        return ((IDictionary<string, object>)syou)[member2];
      }
    }


    > 案3) Dictionary<string, Dictionary<string,dynamic>> を使う
    > 案4) XDocument で階層化データ構造を表すようにする
    > 案5) リレーション付き DataSet を使う(型付き DataSet でも可)

    こっちは System.Dynamic に頼らない方法なので、C#2005 世代でも利用可能。



    > 案6) Microsoft.VisualBasic.Interaction.CallByName メソッドで呼び出す
    > 案7) リフレクションを通じて呼び出す

    元クラスの定義を変更したくないならこっち。
    No34285 は案7 に相当しますね。
違反を報告
引用返信
■34287 / ResNo.4)  Re[2]: 動的にプロパティや変数の値の取得
□投稿者/ ゆみと 一般人(5回)-(2019/07/30(Tue) 10:02:06)
  • アイコン2019/07/30(Tue) 20:45:44 編集(投稿者)
    2019/07/30(Tue) 20:45:22 編集(投稿者)

    魔界の仮面弁士さん

    いつもありがとうございます。

    ExpandoObjectを参考にさせて頂きます。
    ありがとうございます。

    質問時のサンプルプログラムは構文エラーが多く申し訳ありません。

    public class Dai
    {
    public syou_A = new syouA();

    public syou_B {get; set;}

    public Dai()
    {
    this.syou_B = new syouB();
    }
    }

    public class syouA
    {
    public string nameA = string.Empty;
    public object ageA = 0;
    }

    public class syouB
    {
    public string nameB { get; set;}
    public object ageB { get; set;}

    public syouB()
    {
    nameB = string.Empty;
    ageB = 0;
    }
    }

    public class Test
    {
    private dai = new Dai();

    public Test()
    {
    dai = new Dai();

    dai.syou_A.nameA = "なまえ";
    dai.syou_A.ageA = "99";

    dai.syou_B.nameB = "ナマエ";
    dai.syou_B.ageB = "0";
    }

    public void doutekiniSyutoku()
    {
    string getname = "Dai"."syou_A"."nameA";
    }
    }
解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-4]



■記事リスト / ▲上のスレッド
■34268 / 親記事)  VB6 ほかのアプリケーションを起動し そのアプリケーションは終了させる方法
□投稿者/ あぽあぽ 一般人(1回)-(2019/06/26(Wed) 21:08:38)
  • アイコン環境/言語:[VB6] 
    分類:[VB6以前] 

    VB6 で 
    他EXE(アプリBとします)を起動したのち そのプログラムは終了させる方法はありますか?
    SHELL関数やobjWshShell.Runオブジェクトでは
    最初のアプリ(アプリAとします)を 終了させると 他EXE(アプリB)も 一緒に終了してしまいます。

    仕様としましては アプリAのバージョンアップを考えており
    アプリAで サーバよりダウンロードしたものを アプリBで 書き換えるといったものです。

    よろしく ご教授ください。
違反を報告
引用返信

▽[全レス4件(ResNo.1-4 表示)]
■34269 / ResNo.1)  Re[1]: VB6 ほかのアプリケーションを起動し そのアプリケーションは終了させる方法
□投稿者/ みい 一般人(6回)-(2019/06/27(Thu) 10:06:08)
  • アイコン2019/06/27(Thu) 10:15:40 編集(投稿者)

    No34268に返信(あぽあぽさんの記事)
    > VB6 で 
    > 他EXE(アプリBとします)を起動したのち そのプログラムは終了させる方法はありますか?
    Win32APIのShellExecuteではいかがでしょうか。

    第一引数の親ウインドウはNULL指定するとアプリAを終了してもアプリBは終了しません。
違反を報告
引用返信
■34270 / ResNo.2)  Re[1]: VB6 ほかのアプリケーションを起動し そのアプリケーションは終了させる方法
□投稿者/ 魔界の仮面弁士 大御所(1230回)-(2019/06/27(Thu) 15:20:25)
  • アイコンNo34268に返信(あぽあぽさんの記事)
    > SHELL関数やobjWshShell.Runオブジェクトでは
    > 最初のアプリ(アプリAとします)を 終了させると 他EXE(アプリB)も 一緒に終了してしまいます。

    下記のコードで試してみましたが、起動元のアプリケーションが終了しても、
    メモ帳や電卓が連動して終了することはありませんでした。

    Option Explicit
    Private Sub Main()
      Shell "notepad.exe"
      CreateObject("WScript.Shell").Run "calc.exe"
    End Sub
違反を報告
引用返信
■34271 / ResNo.3)  Re[2]: VB6 ほかのアプリケーションを起動し そのアプリケーションは終了させる方法
□投稿者/ あぽあぽ 一般人(2回)-(2019/06/27(Thu) 20:24:06)
http://VB6
  • アイコン
    > Win32APIのShellExecuteではいかがでしょうか。
    >
    > 第一引数の親ウインドウはNULL指定するとアプリAを終了してもアプリBは終了しません。
    どうもありがとうございました。

    教えていただいた通りで OKでした。
解決み!
違反を報告
引用返信
■34272 / ResNo.4)  Re[2]: VB6 ほかのアプリケーションを起動し そのアプリケーションは終了させる方法
□投稿者/ あぽあぽ 一般人(3回)-(2019/06/27(Thu) 20:29:41)
http://VB6
  • アイコン
    > 下記のコードで試してみましたが、起動元のアプリケーションが終了しても、
    > メモ帳や電卓が連動して終了することはありませんでした。
    >
    > Option Explicit
    > Private Sub Main()
    >   Shell "notepad.exe"
    >   CreateObject("WScript.Shell").Run "calc.exe"
    > End Sub

    どうもありがとうございます。

    結果として 上記のみい様の 方法でOKでしたのですが
    魔界の仮面弁士様 ご指摘の通りやってみて うまくいきました。

    たぶん アプリBは IDE実行では正常でしたが EXEで実行でエラーが出ていたのじゃないだろうかと 今、考えました。
    アプリAも アプリBも この質問以降に 多少の手直しをした結果 正常に動くようになってしまったのかと、もっとはやく気付かなかったことに 反省しております。

    どうもありがとうございました
解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-4]






Mode/  Pass/


- Child Tree -