• 締切済み

SQL Server 2005で、datetime型の使用

テーブルで、datetime型を指定して、日時データを書き込もうとしています。DataGridViewに次のコードで書き込もうとすると、有効な値ではありません。と表示されます。 ※コードの一部 mydate="07/06" mytime="01:01" Form1.testDataGridView(12, MyCount).Value = DateValue(Mydate) + TimeValue(Mytime) どなたか?詳しい方いらっしゃいましたら教えてください。 testDataGridView(12, MyCount)の位置は、間違えていません。(12は、datetime型です) よろしくお願いします。

みんなの回答

回答No.1

んー… そもそもOption Strict Onだと、 DateValue(Mydate) + TimeValue(Mytime) の演算自体が、 「Option Strict On で 'Date' から 'String' への暗黙的な変換はできません。」 なんてエラーが出ますよ。 Stringに変換したところで単純に計算なんて出来たりしないでしょうし… 素直に、月日にちゃんと年も付けた上で、mydateとmytimeを 間にスペースをはさんで連結し、その文字列をDate型に変換した方が 良い気がするのですが、どうでしょう? ぶっちゃけ、少なくとも私はDateValueなんて使ったこと無いです。 もし使うとしても「時刻入りのDate型から時刻の値を取り除く」ぐらいしか 使い道が無いような気がするのですが…

関連するQ&A

  • SQL (ORACLE)について

    こんにちは。 SQL文について教えてください。 【temp1テーブル】 code name value 001 yama 100 002 kawa 200 003 umi 300 【temp2テーブル】 code name value 002 kawa 200 004 minato 500 上記の2つのテーブルtemp1とtemp2を比較して codeの値とnameの値が同じレコードの場合 temp1のvalue値を temp1のvalue + temp2のvalueにする 方法を教えて頂けませんでしょうか。

  • テキストエリアに履歴を残したい

    以下のスクリプトではテキストエリアにボタンを押した時刻が、その都度表示されるだけです。複数回ボタンを押したときに履歴が残るようにしたいのですが難しいでしょうか? <html> <head> <title>履歴</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <script type="text/javascript"><!-- myDate = new Date(); Y = myDate.getFullYear(); M = myDate.getMonth() + 1; D = myDate.getDate(); myTime = new Date(); H = myTime.getHours(); m = myTime.getMinutes(); S = myTime.getSeconds(); L = Y + "年" + M + "月" + D + "日" + H + "時" + m +"分" + S + "秒\n" function myFunc(){ myDate = new Date(); Y = myDate.getFullYear(); M = myDate.getMonth() + 1; D = myDate.getDate(); myTime = new Date(); H = myTime.getHours(); m = myTime.getMinutes(); S = myTime.getSeconds(); Log = Y + "年" + M + "月" + D + "日" + H + "時" + m +"分" + S + "秒\n" document.myForm.Log.value = Log; } //--> </script> </head> <BODY> <CENTER> ボタンを押すと履歴が表示されます。 <form name="myForm"> <input type="button" value="PUSH" onClick="myFunc()" STYLE="font-size: 16pt;"> <P> <textarea name="Log" cols="50" rows="15" STYLE="font-size: 16pt;"> PUSH履歴が表示されます。 </textarea> </form> </CENTER> </body> </html> 宜しくお願いします。

  • Form1からForm2へ値渡しの際

    DataGridViewでForm1で選択した行の1列目と3列目だけを、Form2のDataGridViewに表示するコードを書いています。 DataGridViewでForm1からForm2へ値渡しの際、複数行選択→ダブルクリックするとForm2が1行ずつ、行の選択数分出てしまいます。 Form2のDataGridViewに選択数分の行(例えば3行選択ならForm2のDataGridViewの画面に3行)出るようにしたいです。 ご教授お願い致します。 【Form1】 private void DataGridView1_SelectedRowsDoubleClick(Object sender, MouseEventArgs e) { //選択した行の取得 foreach (DataGridViewRow r in dataGridView1.SelectedRows) { //詳細画面を開く Form2 f2 = new Form2(); //選択行をForm2に渡す f2.setRowData(r); //Form2を開く f2.Show(); } } 【Form2】 public void setRowData(DataGridViewRow r) { //1列目と3列目を取り出す string s1 = r.Cells[1].Value.ToString(); string s2 = r.Cells[3].Value.ToString(); // データを作成する DataTable dt = createData(); //データテーブル(DGVの中身)にいれる dt.Rows.Add("2023年",s1,s2); //一覧を表示する dataGridViewDisp2(dt); }

  • MySQLのDatetime型の引き算

    ある機械の1日当たりの処理数を計算したいと思います。 Datetimeの引き算がうまくいかないので、解決方法を教えてください。 1日当たりの処理数は下記の式で計算できます。 1日当たりの処理数=期間内処理数÷((現在日時-作業開始日時)÷(60×60×24)) ※現在日時-作業開始日時で期間の秒数を計算 それを1日の秒数=86400秒(60秒×60分×24時間)で割る。 ------------------ 環境 MySQL:5.0.77 ------------------ テーブル: test カラム :num(INT型),start_date(DATETIME型) ※numは期間内の機械の処理数です。 まず、上記の1日当たりの処理数の数式をSQL文に反映させてみました。 SELECT num , num/((now()-start_date)/86400) as shorisu FROM test 結果は表示されるのですが、かなり大きな数値になって出てきてしまいます。 WEBで情報を検索したところ、DATETIME型を直接減算すると求める結果にならないことはわかりました。 MySQLのページ(11.5. 日付時刻関数) http://dev.mysql.com/doc/refman/5.1/ja/date-and-time-functions.html を見てみましたが、どの関数を使えばよいのかいまいちわかりません。 now()-start_dateの部分が正しい値を返すようになれば良いのですが、どのような式を書けばよいのでしょうか?

    • ベストアンサー
    • PHP
  • C# datagridview データバインド系

    datagridviewのデータバインドについて教えてください. 今,下記のプログラム(一部)を組んで処理を行おうとしていますがうまくいかないため 何が悪いのか教えて頂けないでしょうか? 今datagridviewをデータテーブルにバインドしています. for (j = t; j < R - 1; j++) { object Ti = this.dataGridView1.Rows[j].Cells[0].Value; object Tibf = this.dataGridView1.Rows[j + 1].Cells[0].Value; string TiS = Convert.ToString(Ti); string TiSbf = Convert.ToString(Tibf); # region // シリアル値化 long serial = DateTime.Parse(TiS).ToBinary(); long serialbf = DateTime.Parse(TiSbf).ToBinary(); long parsesum = serial + Oneparse; if (serialbf != parsesum) { dataGridView1.Rows.Insert(j + 1, 1); // シリアル値から復元 DateTime dtm = DateTime.FromBinary(parsesum); string s = Convert.ToString(dtm); // 指定した書式で日付を文字列に変換する string stPrompt1 = dtm.ToString("yyyy/M/d H:mm"); this.dataGridView1.Rows[j + 1].Cells[0].Value = stPrompt1; } } 簡単に言うと,行を追加したいのですが,forの前でデータソースをnullにすると object Ti = this.dataGridView1.Rows[j].Cells[0].Value;でエラー if (serialbf != parsesum)の後にすると dataGridView1.Rows.Insert(j + 1, 1);でエラー が起こります.どちらの場合も下記のエラーが出ます. インデックスが範囲を超えています。負でない値で、コレクションのサイズよりも小さくなければなりません。 パラメーター名: index 本当に困っています. よろしくお願いいたします.

  • VB2005のデータグリッドビューとデータテーブルについて

    いつもお世話になっています。 独学でVBの勉強をしているのですが、 どうしてもわからないことがあるので教えて下さい。 現在行なおうとしていることは、 mdbからデータテーブルにレコードを取得して、 それをデータグリッドビューに設定し、 値の一部をコードで変更するということです。 DataGridView1.DataSource = DataTable1 とすれば、データテーブルのデータを データグリッドビューにて表示させることができるのですが、 コードでデータグリッドビューの値を変更すると、 データテーブルの値も一緒に変更されてしまうんです。 DataGridView1.DataSource = DataTable1.Clone とすると、今度はレコードが表示されなくなってしまって・・・ 何か良い方法がありましたら、教えて下さい。 よろしくお願いします。

  • DataGridViewの値を別フォームに

    こんにちは。 1つ教えて頂けないでしょうか。 Form1にDataGridViewがあり、どれか1行ダブルクリックすると Form2にForm1のDataGridViewの7列目の値の条件で抽出した結果を Form2のDataGridViewに表示したいのです。 Form1からの受け渡しデータはForm2のテキストボックス(条件)に表示させ 受け渡されて来たときは表示ボタンをクリックしなくてもForm2の DataGridViewは表示したいのです。 それぞれのFormは作成し、Form1は Private Sub dgv_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgv.CellDoubleClick Dim f As New Form2 f.txt条件 = Me.DataGridView.SelectedRows(0).Cells(7).Value f.ShowDialog() End Sub とコーディングしました。 Form2は表示されるのですが、データの受け渡しができていないし f.txt条件 = Me.DataGridView.SelectedRows(0).Cells(7).Valueの部分でキャストできませんのエラーに なります。 DataGridViewの選択した値を別のフォームに渡し、そのまま別フォームのDataGridViewを表示させたいのですが。 わかる方おられましたら、教えて頂けないでしょうか。 大変申し訳ありませんが、どうぞよろしくお願いします。

  • VBのDATAGRIDVIEWについて

    環境VB.net 初心者です。教えていただきたのですが Datagridviewを使用しループ処理で全行の単価セル内に数字の0を追加したいのですが1行目のセルのみ値が追加されません。(2行以降は全て追加されます)コードは下記の通りです。 For CNT = 0 To マスタテーブルCNT マスタテーブルdatagridview("単価", CNT).Value = 0 Next ご教授お願いします。

  • Excelのontimeについて

    a1に数式が入っています。 c3からd3,e3,f3…に一定時間ごとにa1の値を入力するマクロがあります。 Sub 入力() Sheets("Sheet1").Select Range("a3").End(xlToRight).Offset(0, 1).Select ActiveCell.Value = Cells(1, 1).Value End Sub Sub スタート() Dim MyTime As Date Dim Jikan As Date Dim i As Integer Jikan = TimeValue("13:59:00") For i = 0 To 5 MyTime = Jikan + TimeSerial(0, 0, 5) * i Application.OnTime MyTime, "入力" Next End Sub で、教えていただきたいのですが、"入力"を動かしている途中で 上記のマクロをとめるにはどうしたらよいのでしょう? ご教授ください。

  • PHPのprint文の"と'の使用方法

    PHPコードで下記のように書いてみました。 [search_code.php] <?php for ( $i = 0; $i < $count; $i++ ){ print("<TR>"); print("<FORM method='POST'>"); print("<TD><input type=text name='$code' value = '".$table3[$i][0]."'></TD>"); print("<TD>".$table3[$i][1]."</TD>"); print("<TD>".$table3[$i][2]."</TD>"); print("<TD>".$table3[$i][3]."</TD>"); print("<TD>".$table3[$i][4]."</TD>"); print("<TD><input type=submit value='入庫登録' onclick='this.form.action='./input_arrival.php''></TD>"); print("</FORM>"); print("</TR>"); } ?> しかし、次の問題があります。 1. $codeが空欄になる。 2. ./input_arrival.phpが呼ばれず、コードを書いているソース[search_code.php]が再度呼ばれます。 $codeをinput_arrival.phpに渡すだけですが、コードの文法上の 問題と、FORMは分かれていても同じname(=$code)が複数存在する ことが許されるのか理解できていません。 何卒回答お願い致します。m(__)m

    • ベストアンサー
    • PHP

専門家に質問してみよう