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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■5337  DATAVIEWのROWFILTERでの検索
□投稿者/ C#初心者 -(2007/07/10(Tue) 21:07:05)

    分類:[ASP.NET (C#)] 

    2007/07/11(Wed) 16:15:14 編集(投稿者)
    2007/07/11(Wed) 12:37:29 編集(投稿者)
    2007/07/11(Wed) 03:47:38 編集(投稿者)

    <pre><pre>ご質問お願い致します。
    C#を使用しております。
    t_transmitはSQLのカラムで、bit型です。0又は1が入ります。
    下記コードから(case t_transmit when 0 then '送信未処理' else '送信済み' end)as t_transmitではなくt_transmitならば0または1で検索すれば表示
    されますが、下記コードのように送信未処理、送信済みに変換すると検索結果が表示されませんでした。
    いろいろ試したのですがどのようにしたら送信未処理、送信済みで検索できるようになるのかご教授お願いできますでしょうか。
    お願い致します。
    Key[0]は検索文字列です。

    string sql = "select (case t_transmit when 0 then '送信未処理' else '送信済み' end)as t_transmit from tb_customer order by iden desc";

    SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["sqlConnectionString"]);
    SqlDataAdapter da = new SqlDataAdapter(sql,cn);
    DataSet ds = new DataSet();
    da.Fill(ds,"test");
    datagrid.DataSource = ds.Tables["test"];


    string filter = "";
    filter += "(t_transmit LIKE '%"+Key[0]+"%' )";

    dv = new DataView(ds.Tables["test"]);
    dv.RowFilter =filter;
    datagrid.DataSource=dv;//データグリッド
    datagrid.DataBind();//データグリッドへバインド</pre></pre>
親記事 /過去ログ15より / 関連記事表示
削除チェック/

■10662  Rnd関数について
□投稿者/ VBファン -(2007/11/23(Fri) 11:14:29)

    分類:[.NET 全般] 

    乱数を発生させるRnd関数ですが、このライブラリはどのようにできているのですか?
    わかる方がおりましたら、VBかC#のコードでおしえてください。
親記事 /過去ログ24より / 関連記事表示
削除チェック/

■15757  Re[19]: 設定ごとにビルド内容を分けたい VS2005
□投稿者/ 渋木宏明(ひどり) -(2008/03/20(Thu) 12:34:29)
>
    > とはいうものの、WEBアプリならいざ知らず、実行環境が不特定多数の場合は事実上不可能ではないですか?
    > エクセルのバージョン判定のカプセル化を検討したりしたのですが
    > 調べるほどにPIAを厳密に調べて参照設定を使用するよりも、
    > 参照設定をあきらめてCREATE OBJECTによる遅延バインディングしかないように思えてきました。

    Office のどんな機能を使うかにもよりますが、1つのアプリケーションで Office の複数のバージョンに対応しなければならない場合、遅延バインディングを使うのも1つの手ではあります。

    ただし、遅延バインディングを使ったとしても、Office 95 やそれ以前まで遡って動作保証するのは相当骨が折れるはずです。

    > ホームページ調べている限りでは、参照設定をしない方法もよく見られますが、
    > あまり推奨されない方法なのでしょうか。

    およそ、コンパイル時のエラー検出が期待できないですからね。

記事No.15583 のレス /過去ログ32より / 関連記事表示
削除チェック/

■78081  Re[3]: 親テーブルの検索条件で子テーブルを絞り込む
□投稿者/ WebSurfer -(2015/12/11(Fri) 22:31:39)
    No78080 (?? さん) に返信

    「??」さん = 「緑」さんですか? それとも別人?
    同じ人であるなら名前には気をつけていただきたいのですが。
記事No.78078 のレス /過去ログ132より / 関連記事表示
削除チェック/

■84069  Re[1]: 有効桁数3桁まででJIS丸めがしたい
□投稿者/ 魔界の仮面弁士 -(2017/05/12(Fri) 16:29:42)
    No84065 (AI さん) に返信
    > JIS丸め
    JIS Z 8401 規則 A のことですかね。


    > 例2. 1.234 → 1.234
    3 桁にするなら、これは 1.23 になるべきなのでは?



    > Dim Value as decimal

    Decimal 型は、内部的に桁数情報を持っていますが、
    それは考慮しないものと考えてよいですか?


    '下記の 3 値は、いずれも 2.73 という値になる
    '
    Dim a As Decimal = CDec("1.230") + CDec("1.5")
    Dim b As Decimal = CDec("1.23") + CDec("1.5")
    Dim c As Decimal = CDec("1.23") + CDec("1.5000")

    'いずれも同一の値として扱われるが、内部表現は異なっており、
    '.ToString や .GetBits メソッドを呼び出した場合の結果が異なる
    '
    Console.WriteLine(a) '2.730  … 内部形式は 2730 * 10 ^ -3
    Console.WriteLine(b) '2.73   … 内部形式は 273 * 10 ^ -2
    Console.WriteLine(c) '2.7300 … 内部形式は 27300 * 10 ^ -4



    > どのように求めれば良いのか分かりません。

    手抜き実装:

    Function 丸め(ByVal 値 As Decimal, ByVal 丸め桁数 As Byte) As Decimal
    Return CDec(値.ToString("E" & (丸め桁数 - 1).ToString()))
    End Function


    > VB.net2005で開発をしております
    蛇足ではありますが、2005 以降では .NET の名を冠さずに、
    単に "Visual Basic 2005" のように呼ばれるようになっています。
    (2003 までは "Visual Basic .NET 2003" などと呼ばれていましたが)

    勿論、VB2005 も VB.NET であることには変わりないのですけれどね。
記事No.84065 のレス /過去ログ143より / 関連記事表示
削除チェック/

■84080  Re[8]: 有効桁数3桁まででJIS丸めがしたい
□投稿者/ 魔界の仮面弁士 -(2017/05/13(Sat) 11:14:24)
    No84079 (hihijiji さん) に返信
    > 1.11495 の入力があった場合
    > ↓   少数5位が四捨五入されて
    > 1.1150e-00
    > ↓   少数3位が偶数丸めされて
    > 1.12
    > の出力が返ってきます。

    少数→小数


    私の No84069 や、AI さんの No84077 のコードでは対処されており、
    問題なく 1.11 が返されるようになっています。


    Dim a As Decimal = 1.11495D

    Dim b As Decimal = CDec(a.ToString("E2"))
    Dim c As Decimal = CDec(a.ToString("0.00e00"))


    > ただし、確率的にはこんなケースは少なく
    確率的とは?


    > 有効数字3桁なら少数2位は誤差を含むため実用上は問題ないはずです。
    Double や Single は二進小数ですが、Decimal は十進小数なので、
    格納誤差は生じないはずですが、そういうことではなく?
記事No.84065 のレス /過去ログ143より / 関連記事表示
削除チェック/

■84084  Re[10]: 有効桁数3桁まででJIS丸めがしたい
□投稿者/ 魔界の仮面弁士 -(2017/05/13(Sat) 22:04:02)
    No84081 (hihijiji さん) に返信
    > 1.125を小数3位で偶数丸め(JIS丸め)すると1.12になりますが、四捨五入すると1.13になります。
    > そこで2回に分けて変換を行って題意に沿った(偶数丸めを行った)回答しました。

    2 回に分けると都合が悪いということは、ご自身も示されていますよね。
    このことは、JIS Z 8401:1999 「数値の丸め方」にも明記されています。

    》 規則 A,B を 2 回以上使って丸めることは,誤差の原因となる。
    》 したがって,丸めは,常に 1 段階で 行わなければならない。
    》 例 12.251 は,12.3 と丸めるべきであって,まず 12.25 とし,次いで 12.2 としてはならない。

    規則 A はいわゆる偶数丸め、規則 B は四捨五入のことです。
    VB でいえば

      規則 A … System.Math.Round(Decimal値, 小数部桁数, System.MidpointRounding.ToEven)
      規則 B … System.Math.Round(Decimal値, 小数部桁数, System.MidpointRounding.AwayFromZero)

    にあたりますので、JIS丸めで例示されている 12.251 →12.3 は規則B(四捨五入)のことですね。


    ひとまず、規則 A / 規則 B の双方に対応した、
    『有効桁数』での丸め処理を作ってみました。

    No84065 で示された要件は満たしていると思います。
    (例2 については、 No84069 で指摘したように記載ミスであると想定)


    ''' <param name="digits">有効桁数(1〜29)</param>
    Function JisRound(value As Decimal, Optional digits As Byte = 3, Optional mode As MidpointRounding = MidpointRounding.ToEven) As Decimal
      digits = Math.Max(1, Math.Min(29, digits))
      Dim fmt As String = StrDup(digits - 1, "#"c) & "0." & StrDup(29, "0"c) & "E0"
      Dim s() As String = value.ToString(fmt).Split("E"c)
      Dim a As Decimal = Math.Round(CDec(s(0)), 0, mode)
      Dim b As Integer = CInt(CDec(s(1)))
      Return CDec(String.Format("{0:0}E{1:D}", a, b))
    End Function



    指定された有効桁数が、有効数字の桁数よりも大きい場合には、
      JisRound(2.5D, 2) → 2.5
      JisRound(2.5D, 3) → 2.50
      JisRound(2.5D, 4) → 2.500
    のように、小数部の末尾にゼロが付与された値で返却されます。
記事No.84065 のレス /過去ログ143より / 関連記事表示
削除チェック/

■84093  Re[11]: 有効桁数3桁まででJIS丸めがしたい
□投稿者/ AI -(2017/05/15(Mon) 18:03:08)
    No84084 (魔界の仮面弁士 さん) に返信

    魔界の仮面弁士さん、ご回答ありがとうございます!

    > 》 規則 A,B を 2 回以上使って丸めることは,誤差の原因となる。
    > 》 したがって,丸めは,常に 1 段階で 行わなければならない。
    > 》 例 12.251 は,12.3 と丸めるべきであって,まず 12.25 とし,次いで 12.2 としてはならない。
    >
    > 規則 A はいわゆる偶数丸め、規則 B は四捨五入のことです。
    > VB でいえば
    >
    >   規則 A … System.Math.Round(Decimal値, 小数部桁数, System.MidpointRounding.ToEven)
    >   規則 B … System.Math.Round(Decimal値, 小数部桁数, System.MidpointRounding.AwayFromZero)
    >
    > にあたりますので、JIS丸めで例示されている 12.251 →12.3 は規則B(四捨五入)のことですね。
    >
    >
    > ひとまず、規則 A / 規則 B の双方に対応した、
    > 『有効桁数』での丸め処理を作ってみました。
    >
    > No84065 で示された要件は満たしていると思います。
    > (例2 については、 No84069 で指摘したように記載ミスであると想定)
    >
    >
    > ''' <param name="digits">有効桁数(1〜29)</param>
    > Function JisRound(value As Decimal, Optional digits As Byte = 3, Optional mode As MidpointRounding = MidpointRounding.ToEven) As Decimal
    >   digits = Math.Max(1, Math.Min(29, digits))
    >   Dim fmt As String = StrDup(digits - 1, "#"c) & "0." & StrDup(29, "0"c) & "E0"
    >   Dim s() As String = value.ToString(fmt).Split("E"c)
    >   Dim a As Decimal = Math.Round(CDec(s(0)), 0, mode)
    >   Dim b As Integer = CInt(CDec(s(1)))
    >   Return CDec(String.Format("{0:0}E{1:D}", a, b))
    > End Function

    JisRound関数の作成、どうもありがとうございます。

    作成いただいた「JisRound」について、
    テストさせていただいたのですが、少し気になる事がありました。

    1. JisRound(1.11495, 3) → 1.11 ※No84079の値で確認
    2. JisRound(1.125 , 3) → 1.12 ※No84081の値で確認
    3. JisRound(12.251 , 3) → 12.3 ※No84084の値で確認
    4. JisRound(12.25 , 3) → 12.2

    となってしまいます。

    1と2では欲しい結果になっていると思いますが、
    3と4で両方の結果が異なる理由がよく分かりません。
    おそらく「12.2」になれば正解だと思うのですが...
    この値を求める事はできないのでしょうか。

    試しに、以下のコートを実行してみました。
    System.Math.Round(12.251, 1, System.MidpointRounding.ToEven) → 12.3
    System.Math.Round(12.25 , 1, System.MidpointRounding.ToEven) → 12.2

    アドバイスの程、どうぞよろしくお願いします。

記事No.84065 のレス /過去ログ143より / 関連記事表示
削除チェック/

■94102  Re[1]: フォームを表示させる方法
□投稿者/ KOZ -(2020/03/13(Fri) 12:19:07)
    2020/03/13(Fri) 12:27:05 編集(投稿者)

    No94101 (aaa さん) に返信
    > スタートアップオブジェクトに設定しているSub Main関数でフォーム表示処理を行っていますが、
    > アプリケーションを起動してもフォームが表示されずにすぐに閉じてしまいます。

    VB6 と同様に動かす(すべてのフォームが閉じたときに終了)のであれば、
    Sub Main を書いたモジュールを以下の様に置き換えてみてください。

    Imports Microsoft.VisualBasic.ApplicationServices

    Friend Class MyApplication
    Inherits WindowsFormsApplicationBase

    <STAThread>
    Friend Shared Sub Main(ByVal Args As String())
    Application.EnableVisualStyles()
    Application.SetCompatibleTextRenderingDefault(False)
    ' ここで初期処理
    With New MyApplication
    .ShutdownStyle = ShutdownMode.AfterAllFormsClose
    .Run(Args)
    End With
    End Sub

    Protected Overrides Sub OnCreateMainForm()
    MyBase.MainForm = New Form1()
    End Sub

    End Class
記事No.94101 のレス /過去ログ163より / 関連記事表示
削除チェック/

■102207  Re[1]: ダイアログ選択時のエラー処理
□投稿者/ 魔界の仮面弁士 -(2023/07/20(Thu) 17:11:35)
    2023/07/20(Thu) 17:19:24 編集(投稿者)

    No102204 (tom さん) に返信
    > 元々開いたままでファイルを選択するとエラーになってしまします
    > これをメッセージボックスで警告したいのですが
    > どの様にすればいいでしょうか

    これで如何でしょう。
    ReadCSV メソッドや IsFileInUse メソッドは作成済みという前提です。

    // 案1
    var openFileDialog = new OpenFileDialog { Filter = "CSV Files (*.csv)|*.csv" };
    openFileDialog.FileOk += (object o, CancelEventArgs args) =>
    {
      if (args.Cancel = IsFileInUse(openFileDialog.FileName))
      {
        MessageBox.Show("選択されたファイルは開いたままです。");
      }
    };
    if (openFileDialog.ShowDialog() == DialogResult.OK)
    {
      ReadCSV(openFileDialog.FileName);
    }


    // 案2
    var openFileDialog = new OpenFileDialog { Filter = "CSV Files (*.csv)|*.csv" };
    openFileDialog.FileOk += (object o, CancelEventArgs args) =>
    {
      if (args.Cancel = IsFileInUse(openFileDialog.FileName))
      {
        MessageBox.Show("選択されたファイルは開いたままです。");
      }
      else
      {
        ReadCSV(openFileDialog.FileName);
      }

    };
    openFileDialog.ShowDialog();
記事No.102204 のレス /過去ログ178より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -