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

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

新規登録して質問してみよう
ただいま回答率
85.48%
VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

5回答

8862閲覧

日付範囲を指定したファイル検索

退会済みユーザー

退会済みユーザー

総合スコア0

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

1グッド

0クリップ

投稿2016/06/02 05:25

カレンダーから日付を指定して、その範囲で検索することができません。
開始のカレンダー(dtpStart)と終了のカレンダー(dtpEnd)の2つがあります。
カレンダーの値はテキスト(txtcover1,txtcover2)に転写して表示します。
以下のようにコードを書いたのですが、falseとしてかえってきてしまい、ぜんぜん日付範囲指定ができません。
どうしたらよいか教えていただけますでしょうか。
よろしくお願いいたします。

Dim lwtime As New IO.FileInfo(f) Dim LT As Date = lwtime.LastWriteTime Dim d1 As Date = dtpStart.Value Dim d2 As Date = dtpEnd.Value '範囲なし txtcover1.Text = dtpStart.Value.ToString("yyyy/MM/dd") txtcover2.Text = dtpEnd.Value.ToString("yyyy/MM/dd") If txtcover1.Text = "" Or txtcover2.Text = "" Then 'Console.WriteLine(f) MessageBox.Show(LT) '範囲あり ElseIf txtcover1.Text <> "" And txtcover2.Text <> "" Then 'Console.Write(d1 <= LT And LT <= d2) MessageBox.Show(d1 <= LT And LT <= d2) End If
dotnetuseryamag👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

ベストアンサー

date.compareを使用して解決しました

投稿2016/06/12 08:57

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

date.conpareを使用して解決しました。

投稿2016/06/10 12:43

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

おそらくDateTimePickerコントロールを使用されているかと思いますが、
GUI上での選択の有無にかかわらず、Valueプロパティには現在日時が初期値として設定されます。
ですので、TextBoxが空欄になることは無いかと思われます。

また、このValueプロパティの値としては時分秒まで考慮する必要があると思われますので、
真偽値の判定についてはこちらも確認してみてはいかがでしょうか。

投稿2016/06/02 07:57

TAKA_0921

総合スコア234

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

falseとしてかえってきてしまい

これはどこの処理のことですか?ここ?
txtcover1.Text = dtpStart.Value.ToString("yyyy/MM/dd")
txtcover2.Text = dtpEnd.Value.ToString("yyyy/MM/dd")

ここじゃないとしたら、検索している箇所に問題がありそうですが、tomo.inaさんのところに挙げているソースには、肝心のtxtcover1も2も出てきていないので判断がつきません。

ちなみにdtpStartとEndは名前から推測すると、DateTimePickerコントロールと思いますが、Valueの初期値は本日日付だそうです。
https://msdn.microsoft.com/ja-jp/library/system.windows.forms.datetimepicker.value(v=vs.110).aspx

投稿2016/06/02 07:51

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

falseがかえってくるとは、txtcover1やtxtcover2に値が
入っていないということなのでしょうか?

それとも日付は入っているが、日付範囲指定で検索ができないということでしょうか?
そうであれば、検索している箇所の記載をよろしくお願いします。

投稿2016/06/02 06:08

tomo.ina

総合スコア357

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/06/02 07:13

ご返信の回答になっているかわからないのですが。。 なぜか、取りたい更新日時ではなく、falseやtrueでかえってきてしまいます。 検索しているおおもとは以下です。その後いろいろ条件分岐はさせていますが。 ''' Dim files As String() = System.IO.Directory.GetFiles(fpath, "*", System.IO.SearchOption.AllDirectories) For Each f As String In files ''' textcover1,textcover2の初期値は空白です。 日付を選択しなけれtextcover1,textcover2には値は入りません。 しかし、日付を選択していなくても「開始」を押して実行すると、textcover1,textcover2には本日の日付が入ってしまっています(本当は日付選択がなければ空白のままでいてほしい) if文をいれなければファイルの更新日は下記で取れます。 ''' Dim lwtime As New IO.FileInfo(f) Dim LT As Date = lwtime.LastWriteTime '''
tomo.ina

2016/06/02 07:42

なぜfalseが返ってくるのかはわかりませんが、 System.IO.Directory.GetFiles(fpath, "*", System.IO.SearchOption.AllDirectories) で指定したパス内に存在するファイルは取得できているのでしょうか? dtpStartが入力されているかどうかで 「txtcover1.TextdtpStart.Value.ToString("yyyy/MM/dd")」とするか 「txtcover1.Text=""」とするか条件分岐したほうがよいと思います。
退会済みユーザー

退会済みユーザー

2016/06/10 01:55

date.compareを使用して解決しました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問