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

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

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

Re[5]: フィールド名の取得について


(過去ログ 75 を表示中)

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

■43687 / inTopicNo.1)  フィールド名の取得について
  
□投稿者/ がながな (25回)-(2009/11/16(Mon) 15:49:32)

分類:[.NET 全般] 

いつも大変お世話になっております。

STRSQL = "select " _
& "得意先コード,[Farm-OutRev] as [FarmOutRev],製作号機左,親部品番号2,RAWMATNO2," _
& "PDMLREV2,加工完了日,PL区分PDML,表処完了日,型式コード,個数機左,個数機右," _
& "製作号機右,PLREV,PDMLREV1,PL区分APL1,EOREV,DRWREV,KITNO2,掴み代,板圧," _
& "ラバーグループBMS,巾,ラバーグループKE,長,個数取,単位,材料名称,形状区分," _
& "個数取左右,材料規格,型材番号,業務,材料個数,品保,資材コード,DRAWADCN,登録日," _
& "PLADCL,加工プロ,工作図REV,表処プロ,技術,得意先略称" _
& " from " _
& "[TA1001_ASOrderメイン]" _
& " where " _
& "ID=" & 100


ASODataAdapter = New SqlDataAdapter(MySQL, cnASO)
ASODataSet = New DataSet
ASODataAdapter.Fill(ASODataSet, "TA1001_ASOrderメイン")
ASOTable = ASODataSet.Tables("TA1001_ASOrderメイン")


とし、通常なら
MyTable.Rows(0).BeginEdit()
MyTable.Rows(0)("得意先コード") = me.得意先コード.Text
MyTable.Rows(0)("FarmOutRev") = me.FarmOutRev.Text
MyTable.Rows(0)("製作号機左") = me.製作号機左.Text
MyTable.Rows(0)("親部品番号2") = me.親部品番号2.Text
-----STRSQLフィールドの全てを対応して記入------
MyTable.Rows(0).EndEdit()

とするのですが、For文を使用して行数を少なくしたいと思います。

DataReaderならFieldcountプロパティがあったので、可能だったのですがこの場合どのようにすればいいのでしょうか?
。尚、STRSQLのフィールド名をフォームのテキストボックスの名前は同じ名前にしてあります。
御教授の程よろしく御願いいたします。



引用返信 編集キー/
■43690 / inTopicNo.2)  Re[1]: フィールド名の取得について
□投稿者/ がながな (26回)-(2009/11/16(Mon) 16:02:03)
申し訳ございません
誤字が見つかりましたので、下記に修正させていただきます

STRSQL = "select " _
& "得意先コード,[Farm-OutRev] as [FarmOutRev],製作号機左,親部品番号2,RAWMATNO2," _
& "PDMLREV2,加工完了日,PL区分PDML,表処完了日,型式コード,個数機左,個数機右," _
& "製作号機右,PLREV,PDMLREV1,PL区分APL1,EOREV,DRWREV,KITNO2,掴み代,板圧," _
& "ラバーグループBMS,巾,ラバーグループKE,長,個数取,単位,材料名称,形状区分," _
& "個数取左右,材料規格,型材番号,業務,材料個数,品保,資材コード,DRAWADCN,登録日," _
& "PLADCL,加工プロ,工作図REV,表処プロ,技術,得意先略称" _
& " from " _
& "[TA1001_ASOrderメイン]" _
& " where " _
& "ID=" & 100


ASODataAdapter = New SqlDataAdapter(STRSQL, cnASO)
ASODataSet = New DataSet
ASODataAdapter.Fill(ASODataSet, "TA1001_ASOrderメイン")
ASOTable = ASODataSet.Tables("TA1001_ASOrderメイン")


とし、通常なら
MyTable.Rows(0).BeginEdit()
MyTable.Rows(0)("得意先コード") = me.得意先コード.Text
MyTable.Rows(0)("FarmOutRev") = me.FarmOutRev.Text
MyTable.Rows(0)("製作号機左") = me.製作号機左.Text
MyTable.Rows(0)("親部品番号2") = me.親部品番号2.Text
-----STRSQLフィールドの全てを対応して記入------
MyTable.Rows(0).EndEdit()

とするのですが、For文を使用して行数を少なくしたいと思います。

DataReaderならFieldcountプロパティがあったので、可能だったのですがこの場合どのようにすればいいのでしょうか?
。尚、STRSQLのフィールド名をフォームのテキストボックスの名前は同じ名前にしてあります。
御教授の程よろしく御願いいたします。

引用返信 編集キー/
■43692 / inTopicNo.3)  Re[2]: フィールド名の取得について
□投稿者/ 純@WAS (19回)-(2009/11/16(Mon) 16:13:20)
2009/11/16(Mon) 16:14:12 編集(投稿者)
2009/11/16(Mon) 16:14:09 編集(投稿者)
2009/11/16(Mon) 16:13:32 編集(投稿者)

<pre><pre>■No43690 (がながな さん) に返信
> 申し訳ございません
> 誤字が見つかりましたので、下記に修正させていただきます
> 
> STRSQL = "select " _
> & "得意先コード,[Farm-OutRev] as [FarmOutRev],製作号機左,親部品番号2,RAWMATNO2," _
> & "PDMLREV2,加工完了日,PL区分PDML,表処完了日,型式コード,個数機左,個数機右," _
> & "製作号機右,PLREV,PDMLREV1,PL区分APL1,EOREV,DRWREV,KITNO2,掴み代,板圧," _
> & "ラバーグループBMS,巾,ラバーグループKE,長,個数取,単位,材料名称,形状区分," _
> & "個数取左右,材料規格,型材番号,業務,材料個数,品保,資材コード,DRAWADCN,登録日," _
> & "PLADCL,加工プロ,工作図REV,表処プロ,技術,得意先略称" _
> & " from " _
> & "[TA1001_ASOrderメイン]" _
> & " where " _
> & "ID=" & 100
> 
> 
> ASODataAdapter = New SqlDataAdapter(STRSQL, cnASO)
> ASODataSet = New DataSet
> ASODataAdapter.Fill(ASODataSet, "TA1001_ASOrderメイン")
> ASOTable = ASODataSet.Tables("TA1001_ASOrderメイン")
> 
> 
> とし、通常なら
> MyTable.Rows(0).BeginEdit()
> MyTable.Rows(0)("得意先コード") = me.得意先コード.Text
> MyTable.Rows(0)("FarmOutRev") = me.FarmOutRev.Text
> MyTable.Rows(0)("製作号機左") = me.製作号機左.Text
> MyTable.Rows(0)("親部品番号2") = me.親部品番号2.Text
> -----STRSQLフィールドの全てを対応して記入------
> MyTable.Rows(0).EndEdit()
> 
> とするのですが、For文を使用して行数を少なくしたいと思います。
> 
> DataReaderならFieldcountプロパティがあったので、可能だったのですがこの場合どのようにすればいいのでしょうか?
> 。尚、STRSQLのフィールド名をフォームのテキストボックスの名前は同じ名前にしてあります。
> 御教授の程よろしく御願いいたします。
> 

どっちが効率的かわかりませんが…

MyTable.Rows(0).BeginEdit()
foreach(TextBox textBox in フォーム名.Controlls)
{
   if(MyTable.Rows(0)(textBox.Name) != null)
   {
      MyTable.Rows(0)(textBox.Name) = textBox.Text
   }
}

こんな感じでしょうか?
すいません、言語が解らなかったです。

あと、コレはフォームに属する「全テキストボックス」を持ってくるので、
意図しないテキストボックスが配置されていたときの挙動について保証はできません。
</pre></pre>

引用返信 編集キー/
■43693 / inTopicNo.4)  Re[2]: フィールド名の取得について
□投稿者/ みきぬ (657回)-(2009/11/16(Mon) 16:15:53)
・業務で使っているコードそのまんまっぽいけど、貼り付けちゃって平気なの?

・状況にもよるけど、データバインドで一発。For 文すらいらない。
引用返信 編集キー/
■43694 / inTopicNo.5)  Re[3]: フィールド名の取得について
□投稿者/ がながな (27回)-(2009/11/16(Mon) 16:18:03)
早速の御返事ありがとうございました。
すいません、開発環境はVB2008になります。
フォーム上のアイテムをベースにすると、必要のないものまでピックアップされてしまうので(例えばテキストボックスでもDatasetに書き込みしたくないオブジェクトがあります。)、DataSetベースには難しいでしょうか?
よろしく御願いいたします。
引用返信 編集キー/
■43695 / inTopicNo.6)  Re[4]: フィールド名の取得について
□投稿者/ 純@WAS (20回)-(2009/11/16(Mon) 16:52:42)
No43694 (がながな さん) に返信
> 早速の御返事ありがとうございました。
> すいません、開発環境はVB2008になります。
> フォーム上のアイテムをベースにすると、必要のないものまでピックアップされてしまうので(例えばテキストボックスでもDatasetに書き込みしたくないオブジェクトがあります。)、DataSetベースには難しいでしょうか?
> よろしく御願いいたします。

やっぱり^^;

もう一つの方法ですが…

'カラム数分ループを回す
For i As Integer = 0 To MyTable.Columns.Count
   'DataTableのカラム名称と一致するテキストボックスを取得する
   Dim txt As TextBox = Me.Controls(MyTable.Columns(i).ColumnName)
   '一致したテキストボックスの値を反映する
   MyTable.Rows(0)(i) = txt.Text
Next

というのもできた(と思います)

引用返信 編集キー/
■43709 / inTopicNo.7)  Re[5]: フィールド名の取得について
□投稿者/ がながな (28回)-(2009/11/17(Tue) 08:57:07)
ありがとうございました。
Me.Controls(MyTable.Columns(i).ColumnName)
の部分がわかりませんでした。
非常に助かりました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -