• 締切済み

教えてください。

これらは何を意味しているのでしょうか? ----------------------------------------------- Dim icon_cnt:icon_cnt=0 Dim set_date Dim start_date1 Dim end_date1 Do Until rs.EOF sch2_seq = rs("sch2_seq")&""  '()のデータDBのビューです。 start_date = rs("start_date") &"" end_date = rs("end_date") &"" start_time = rs("start_time") &"" end_time = rs("end_time") &"" category = rs("category") &"" category_nm = rs("category_nm") &"" subject = rs("subject") &"" client_cd = rs("client_cd") &"" icon_sec1 = rs("icon_sec1")&"" company_nm = rs("company_nm") &"" If CLng(start_date) <= CLng(min_date) Then set_date = min_date Else set_date = start_date End If If CLng(end_date) >= CLng(max_date) Then end_date1 =max_date Else end_date1 = end_date End If ※宜しければ詳しく教えてください。

noname#71395
noname#71395

みんなの回答

回答No.1

各命令の文法は判るが処理の意味が判らないものとして説明します。 ※文法については参考書を1冊買えば済むことですから。 (1) データベースのレコード群に対して、最後のレコードになるまで以下の処理を繰り返し行う。 ※ただし、参照したソースにはDoに対するLoop命令や、次ぎのレコードに移動する命令部分が含まれていない。 (2) レコードから“sch2_seq”“start_date”“end_date”“start_time”“end_time”フィールドを読みこみ、各変数に代入する。 (3) レコードから“category”“category_nm”“subject”“client_cd”“icon_sec1”“company_nm”フィールドを読みこみ、各変数に代入する。 ※ただし、参照したソースには宣言部分が見当たらない変数も使用されている。 (4) “set_date”に“start_date”(名前から開始日付と推測される)を代入する。ただし“start_date”が“min_date”より小さい場合は“set_date”に“min_date”を代入する。(これは必要以上に古い日付を除外している) (5) “end_date1”に“end_date”(名前から終了日付と推測される)を代入する。ただし“end_date”が“max_date”以上の場合は“end_date1”に“max_date”を代入する。(これは必要以上に新しい日付を除外している)

関連するQ&A

  • mysqlのif文かcase文で複数条件を指定する

    mysql初心者です。 3つのテーブルでスケジュールの仕組みを考えていますが Staff→スタッフデータ id  name 1   田中 Sch1→日付出勤 id  start_time  end_time  date  flg 1   9:00   22:30   2014-03-17   1 Sch2→曜日出勤 id  start_time  end_time  dateW 1   9:00   22:30   1 ※dateWは曜日(0~6) 日付出勤優先なので、なければ曜日出勤を出力します。 たとえば、 田中さん (1)日付登録:2014-03-17(月) 09:00-18:00 (2)曜日登録:1(月) 10:00-19:00 (3)曜日登録:2(火) 09:00-18:00 PHP側でやるなら、 for (一週間分回す) { if (Sch1[date]) { 日付設定出力 }else{ 曜日設定出力 } } 全出力した(日付、曜日)データを一個の配列に入れて、start_timeでソートするかで出力する。。 Mysqlのif文かcase文分でどう書いたらいいですか? 説明が下手ですが、 どなたかご存知の方がいらっしゃれば是非、ご教授ください。

    • ベストアンサー
    • MySQL
  • Access2002のコンパイルエラーについて

    Access2002を使っていて、印刷ボタンを押したら、下記のような見たことのない画面になり、 「コンパイルエラー end function が必要です。」というメッセージが出てきました。 どなたか詳しい方、修復の方法を教えて下さい。 Private Function PfDataMake() As Boolean 'On Error GoTo Err_PfDataMake Dim St_Sql As String Dim Ln_Cnt As Long Dim Rs_Cnt As Recordset Dim Rs_Cnt2 As Recordset Dim In_Cnt As Long Dim End_Flg As Boolean Dim Code1 As Long Dim Gokei As Long Dim Gohan As Long Dim Okayu As Long Dim Josyoku As Long Dim Kizami As Long Dim ChoKizami As Long Dim GenEn As Long Dim Kome As String Dim Okazu As String Dim Enbun As String Dim Hiduke As Date Dim Youbi As String 'W_発注食数合計の初期化 St_Sql = "Delete From W_発注食数合計 ;" DoCmd.RunSQL (St_Sql) 'W_発注食数明細の初期化 St_Sql = "Delete From W_発注食数明細 ;" DoCmd.RunSQL (St_Sql) '///// 対象データを抽出 ///// St_Sql = "SELECT * " St_Sql = St_Sql & "FROM W_配食入力 " '/// 20060423追加 出力対象「前日キャンセル」追加 start /// 'St_Sql = St_Sql & "WHERE W_配食入力.キャンセル = 0" 'St_Sql = St_Sql & "WHERE (W_配食入力.キャンセル = 0) or (W_配食入力.キャンセル = 2)" St_Sql = St_Sql & "WHERE (W_配食入力.配達 <> 3) and (W_配食入力.配達 <> 4)" '/// 20060423追加 end /// St_Sql = St_Sql & " ORDER BY W_配食入力.利用者コード ;" '件数を取得 Set Rs_Cnt = CurrentDb.OpenRecordset(St_Sql) Ln_Cnt = Rs_Cnt.RecordCount End_Flg = False 'レコード無し判定 If Rs_Cnt.EOF = True Or Rs_Cnt.BOF = True Then End_Flg = True End If Gokei = 0 Gohan = 0 Okayu = 0 Josyoku = 0 Kizami = 0 ChoKizami = 0 GenEn = 0 'ループ処理 Rs_Cnt.MoveFirst Hiduke = Rs_Cnt("日付") Youbi = Rs_Cnt("曜日") Do Until Rs_Cnt.EOF = True Gokei = Gokei + 1 Select Case Rs_Cnt("米") Case 1 Gohan = Gohan + 1 Kome = " " Case Else Okayu = Okayu + 1 Kome = "おかゆ" End Select Select Case Rs_Cnt("おかず") Case 1 Josyoku = Josyoku + 1 Okazu = " " Case 2 Kizami = Kizami + 1 Okazu = "刻み" Case Else ChoKizami = ChoKizami + 1 Okazu = "超刻み" End Select Select Case Rs_Cnt("減塩") Case 1 Enbun = " " Case 2 GenEn = GenEn + 1 Enbun = "減塩" End Select Code1 = Rs_Cnt("利用者コード") St_Sql = "SELECT D_利用者.シメイ " St_Sql = St_Sql & "FROM D_利用者 " St_Sql = St_Sql & "WHERE D_利用者.利用者コード = " & Code1 St_Sql = St_Sql & " ORDER BY D_利用者.利用者コード ;" '件数を取得 Set Rs_Cnt2 = CurrentDb.OpenRecordset(St_Sql) Ln_Cnt = Rs_Cnt2.RecordCount St_Sql = "INSERT INTO W_発注食数明細 VALUES (" & Code1 & "," St_Sql = St_Sql & "'" & Rs_Cnt("利用者氏名") & "','" & Rs_Cnt2("シメイ") & "'," St_Sql = St_Sql & "'" & Rs_Cnt("主食") & "','" & Rs_Cnt("副食") & "'," St_Sql = St_Sql & "'" & Kome & "','" & Okazu & "','" & Enbun & "'" St_Sql = St_Sql & ") ;" DoCmd.RunSQL (St_Sql) Rs_Cnt.MoveNext Loop St_Sql = "INSERT INTO W_発注食数合計 VALUES ('" & Hiduke & "'," St_Sql = St_Sql & "'" & Youbi & "'," & Gokei & "," & Gohan & "," & Okayu & "," St_Sql = St_Sql & Josyoku & "," & Kizami & "," & ChoKizami & "," & GenEn St_Sql = St_Sql & ") ;" DoCmd.RunSQL (St_Sql) 'レコードセットの終了 Rs_Cnt.Close Rs_Cnt2.Close Exit Function Err_PfDataMake: Resume Next

  • Access2002のコンパイルエラーについて

    Access2002を使っていて、印刷ボタンを押したら、下記のような見たことのない画面になり、 「コンパイルエラー end function が必要です。」というメッセージが出てきました。 どなたか詳しい方、修復の方法を教えて下さい。よろしくお願いします。 Private Function PfDataMake() As Boolean 'On Error GoTo Err_PfDataMake Dim St_Sql As String Dim Ln_Cnt As Long Dim Rs_Cnt As Recordset Dim Rs_Cnt2 As Recordset Dim In_Cnt As Long Dim End_Flg As Boolean Dim Code1 As Long Dim Gokei As Long Dim Gohan As Long Dim Okayu As Long Dim Josyoku As Long Dim Kizami As Long Dim ChoKizami As Long Dim GenEn As Long Dim Kome As String Dim Okazu As String Dim Enbun As String Dim Hiduke As Date Dim Youbi As String 'W_発注食数合計の初期化 St_Sql = "Delete From W_発注食数合計 ;" DoCmd.RunSQL (St_Sql) 'W_発注食数明細の初期化 St_Sql = "Delete From W_発注食数明細 ;" DoCmd.RunSQL (St_Sql) '///// 対象データを抽出 ///// St_Sql = "SELECT * " St_Sql = St_Sql & "FROM W_配食入力 " '/// 20060423追加 出力対象「前日キャンセル」追加 start /// 'St_Sql = St_Sql & "WHERE W_配食入力.キャンセル = 0" 'St_Sql = St_Sql & "WHERE (W_配食入力.キャンセル = 0) or (W_配食入力.キャンセル = 2)" St_Sql = St_Sql & "WHERE (W_配食入力.配達 <> 3) and (W_配食入力.配達 <> 4)" '/// 20060423追加 end /// St_Sql = St_Sql & " ORDER BY W_配食入力.利用者コード ;" '件数を取得 Set Rs_Cnt = CurrentDb.OpenRecordset(St_Sql) Ln_Cnt = Rs_Cnt.RecordCount End_Flg = False 'レコード無し判定 If Rs_Cnt.EOF = True Or Rs_Cnt.BOF = True Then End_Flg = True End If Gokei = 0 Gohan = 0 Okayu = 0 Josyoku = 0 Kizami = 0 ChoKizami = 0 GenEn = 0 'ループ処理 Rs_Cnt.MoveFirst Hiduke = Rs_Cnt("日付") Youbi = Rs_Cnt("曜日") Do Until Rs_Cnt.EOF = True Gokei = Gokei + 1 Select Case Rs_Cnt("米") Case 1 Gohan = Gohan + 1 Kome = " " Case Else Okayu = Okayu + 1 Kome = "おかゆ" End Select Select Case Rs_Cnt("おかず") Case 1 Josyoku = Josyoku + 1 Okazu = " " Case 2 Kizami = Kizami + 1 Okazu = "刻み" Case Else ChoKizami = ChoKizami + 1 Okazu = "超刻み" End Select Select Case Rs_Cnt("減塩") Case 1 Enbun = " " Case 2 GenEn = GenEn + 1 Enbun = "減塩" End Select Code1 = Rs_Cnt("利用者コード") St_Sql = "SELECT D_利用者.シメイ " St_Sql = St_Sql & "FROM D_利用者 " St_Sql = St_Sql & "WHERE D_利用者.利用者コード = " & Code1 St_Sql = St_Sql & " ORDER BY D_利用者.利用者コード ;" '件数を取得 Set Rs_Cnt2 = CurrentDb.OpenRecordset(St_Sql) Ln_Cnt = Rs_Cnt2.RecordCount St_Sql = "INSERT INTO W_発注食数明細 VALUES (" & Code1 & "," St_Sql = St_Sql & "'" & Rs_Cnt("利用者氏名") & "','" & Rs_Cnt2("シメイ") & "'," St_Sql = St_Sql & "'" & Rs_Cnt("主食") & "','" & Rs_Cnt("副食") & "'," St_Sql = St_Sql & "'" & Kome & "','" & Okazu & "','" & Enbun & "'" St_Sql = St_Sql & ") ;" DoCmd.RunSQL (St_Sql) Rs_Cnt.MoveNext Loop St_Sql = "INSERT INTO W_発注食数合計 VALUES ('" & Hiduke & "'," St_Sql = St_Sql & "'" & Youbi & "'," & Gokei & "," & Gohan & "," & Okayu & "," St_Sql = St_Sql & Josyoku & "," & Kizami & "," & ChoKizami & "," & GenEn St_Sql = St_Sql & ") ;" DoCmd.RunSQL (St_Sql) 'レコードセットの終了 Rs_Cnt.Close Rs_Cnt2.Close Exit Function Err_PfDataMake: Resume Next

  • 残り時間カウントダウン表示 『あと○時間△分□秒』

    CGIゲーム内であるイベントが発生してから12時間後に新イベントが自動発生するスクリプトを作りたいのですが ネット検索をしても残り日数表示しかなくてサンプルがないので創ってみたのですが <body onLoad="count()" onUnload="clearTimeout()"> $ENV{'TZ'} = "JST-9"; my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); <=現在の時間 $date="0,0,11,3,0,107,0,27,0 485,197,854,"; <=保存されたプレイベント発生時間 foreach($date){ ($sc,$mi,$ho,$md,$mo,$ye,$wd,$yd,$isd)=split(/,/); } print <<"EOM"; <SCRIPT language="JavaScript"> <!-- cnt = $sc-$sec; cnt1=$mi-$min; if($ho>$hour){cnt2=$ho-$hour-12;} else{cnt2=$ho-$hour+12;} if(cnt2>12){cnt2=cnt2-12;} if(cnt<0){cnt=cnt+59; cnt1=cnt1-1;} if(cnt1<0){cnt1=cnt1+59; cnt2=cnt2-1;} if(cnt2<0){cnt=0;cnt1=0;cnt2=0;} function count(){ document.form.box.value = cnt2+"時間"+cnt1+"分"+cnt+"秒"; cnt--; if(cnt<0){cnt=cnt+60; cnt1=cnt1-1;} if(cnt1<0){cnt1=cnt1+60; cnt2=cnt2-1;} if(cnt2<0){cnt=0;cnt1=0;cnt2=0;} if(cnt2 >=0) { if(cnt1 >=0) { if(cnt >=0) { setTimeout("count()",1000); }}} } //--> </SCRIPT> <FORM name="form"> あと<INPUT type="text" name="box" size="17">です </FORM> EOM とりあえず表示はできた(と思う)のですがもっと楽で確実な方法はありますでしょうか?(モジュールとかは使わずに) または上記のスクリプトすぐに思いつかなかったのでtime()で計算してたのですが 『残り53495秒』(適当)のような表記方法しか分かりません これを○時間△分□秒のように変換してカウントダウンできるでしょうか? localtime()、time()どちらでもいいのでご意見お願いします

  • データを一覧で表示する方法

    VB6.0ProfessionalEditionで、 Accessのデータを一覧表示するのを作っているんですが、どうも上手くいかないんです。 OLE_ListというExcelのシートに表示させたいんでFormLoad時に書いていってるんですが、どこがマズおんでしょう? Dim OLE_List(5, 10) As String Dim rs_cnt As Integer Dim i As Integer (DAOでコネクトして、変数rsでレコードセットしてます) rs_cnt = rs.RecordCount If rs_cnt > 0 Then i = 0 For i = 0 To rs_cnt - 1 str_co = rs("通販会社") str_name = rs("商品名") str_price = rs("価格") str_orderday = rs("注文日") str_slip = rs("伝票No.") OLE_List(1, i) = str_co OLE_List(2, i) = str_name OLE_List(3, i) = str_price OLE_List(4, i) = str_orderday OLE_List(5, i) = str_slip Next End If

  • [VBA] ADOの Clone と AddNew

    Access VBA 学習中の初心者です。ADOについて教えて下さい。 RecordsetオブジェクトのCloneメソッドを使用してレコードのコピーを行う以下のプロシージャで、 If Not rs.EOF Then の存在意義がわかりません。 1. rsClone に対象のレコードがあった場合は次行からの処理をする、ということであれば If Not rsClone.EOF Then にすれば良いかと思うのですが、それでは違いますでしょうか? 2. とある人に聞いたところ、 「rsのカレントがEOFだとAddNewでエラーになるから、そのエラー回避のためそうなっている」 と言われたのですが、 テキストやヘルプで AddNewメソッド についてそのような注意事項を見つけられませんでした。 自分なりに試してみてもその条件下でエラーになりませんでした。(試し方に自信ないですが。) AddNewメソッドを使う際にEOFであるかどうか気にした方が良いものなのでしょうか? 質問が分かりづらく、ご回答頂くにあたり追加の情報が必要でしたらご指摘下さい。 「プロシージャをこうした方がわかりやすい、適切」などのご意見も歓迎です。 どうぞよろしくお願いいたします。 -------------------------- Dim cn As ADODB.Connection Dim rs As New ADODB.Recordset Dim rsClone As ADODB.Recordset Dim myField As Variant, cnt As Integer Set cn = CurrentProject.Connection rs.Open "名簿", cn, adOpenStatic, adLockOptimistic Set rsClone = rs.Clone(adLockReadOnly) rs.Clone.Bookmark = rs.Bookmark rsClone.Find "名簿 like '山田 太郎'" If Not rs.EOF Then                 ←★★★質問★★★ rs.AddNew cnt = 0 For Each myField In rsClone.Fields rs.Fields(cnt) = myField cnt = cnt + 1 Next End If rs.Update rs.Clone.Close Set rsClone = Nothing rs.Close Set rs = Nothing cn.Close Set cn = Nothing End Sub

  • 初めて投稿します。シェル、VBS共に知識が無く困っています。

    初めて投稿します。シェル、VBS共に知識が無く困っています。 UNIXからWindows2008の移行に伴い、シェルからVBSに変更しているのですがJP1の動作がうまくいかず困っています。 JP1のjr3bjsubコマンド自体はうまく動作しているのですが、ジョブが登録完了するまで待ってくれません・・・。 どうしたら良いかどなたかご存知であらば教えてください。 ・シェルの内容 #!/sbin/sh typeset -i CNT=1 if [ "$3" = "" ] then while [ $CNT -le 5 ] do /opt/jp1_am_r3/bin/jr3bjsub -jn $1 -pa $2 -rs -out LP01 -wait -time 900 RTN=$? if [ $RTN -le 2 ] then break fi CNT=$CNT+1 sleep 1 done else while [ $CNT -le 5 ] do /opt/jp1_am_r3/bin/jr3bjsub -jn $1 -pa $2 -var $3 -rs -out LP01 -wait -time 900 RTN=$? if [ $RTN -le 2 ] then break fi CNT=$CNT+1 sleep 1 done fi return $RTN ・動かそうとしているVBSの内容 '引数:実行先(-d)  '曖昧な宣言を禁止 Option Explicit 'ERRが発生しても後続処理を続ける On Error Resume Next '変数/オブジェクト宣言 Dim objWshShell ' WshShell オブジェクト Dim strCmdLine ' 実行するコマンド dim args dim rtn '定数宣言/オブジェクト作成 Set args = WScript.Arguments Set objWshShell = WScript.CreateObject("WScript.Shell") '------------メイン処理START If Err.Number = 0 Then If args.Count < 2 Then Err.Description = "引数が不足" WScript.Echo "エラー: " & Err.Description ElseIf args.Count = 2 Then strCmdLine = "C:\Program Files (x86)\Hitachi\JP1AMR3\Program\jr3bjsub.exe -rs -out LP01 -wait -time 900 -jn " & args.item(0) & " -pa " & args.item(1) ElseIf args.Count = 3 Then strCmdLine = "C:\Program Files (x86)\Hitachi\JP1AMR3\Program\jr3bjsub.exe -rs -out LP01 -wait -time 900 -jn " & args.item(0) & " -pa " & args.item(1) & " -var " & args.item(2) Else Err.Description = "引数が多すぎます" WScript.Echo "エラー: " & Err.Description End if objWshShell.Exec(strCmdLine) If Err.Number = 0 Then WScript.Echo strCmdLine & " を起動しました。" End If End If 'Set objWshShell = Nothing よろしくお願いします。

  • VBS【特定のレコード長で件数取得】

    お世話になります。 下記VBSコードですが、あるファイルを特定のレコード長(340で1行)で割って件数を取得したいのですが、 どこを改良すればよいでしょうか? ------------------------------------------------------------- Option Explicit '********オブジェクト変数定義******** Dim FSO , f '********カウント変数宣言************ Dim CNT '********フォルダ変数宣言************ Dim TARGET_FOLDER '********ファイル変数宣言************ Dim TARGET_FILE , TARGET_FILENAME '********レコード長変数宣言************ Dim FILE_LENGTH '********時間変数定義******** Dim YYYYMMDD , HHMMSS , HH , MM , SS YYYYMMDD = Year(Date) * 10000 + MONTH(Date) * 100 + DAY(Date) HH = Hour(Time) MM = Minute(Time) SS = Second(Time) If MM < 10 then MM = "0" & MM End If If SS < 10 then SS = "0" & SS End If HHMMSS = HH & ":" & MM & ":" & SS '********その他変数定義******** Dim FILE_SIZE , FILE_DAY '初期設定 TARGET_FOLDER = "D:\test" TARGET_FILE = "test" TARGET_FILENAME = TARGET_FOLDER & "\" & TARGET_FILE FILE_LENGTH = 340 CNT = 0 'ファイルサイズ・ファイル更新日時取得処理 Set FSO = CreateObject("Scripting.FileSystemObject") Set f = FSO.GetFile(TARGET_FILENAME) FILE_SIZE = f.size FILE_DAY = f.DateLastModified 'レコード件数取得処理 With FSO.GetFile(TARGET_FILENAME).OpenAsTextStream(8) CNT = .Line .Close Msgbox CNT Msgbox FILE_SIZE Msgbox FILE_DAY End With ------------------------------------------------------------- 上記だとCNTはあくまで1改行につき1件でカウントしています。 ご存知の方がいらっしゃいましたら、お知恵を拝借させていただけませんでしょうか? 何卒宜しくお願い致します。

  • エクセル VBA OptionButtonからTextBox

    すいません! OptionButtonなら 下記の記述でエラー表示を 簡単にできるのですが これがOptionButtonではなく TextBoxならどのように変化したら 良いのでしょうか? すいません、教えて下さい! Private Sub 記録_Click() Dim i As Integer Dim Cnt As Integer Cnt = 0 For i = 1 To 6 Step 1 If Me.Controls("OptionButton" & i).Value Then Cnt = i Exit For End If Next i If Cnt = 0 Then MsgBox "選択されていません" Exit Sub End If If Me.Controls("Combobox" & Cnt).Value = "" Then MsgBox Me.Controls("OptionButton" & Cnt).Caption & " の内容が選択されていません" Exit Sub End If With 記入フォーム .TextBox5.Value = Me.Controls("OptionButton" & Cnt).Caption .TextBox6.Value = Me.Controls("Combobox" & Cnt).Value End With Unload Me End Sub

  • 指定した範囲で0の行を削除するマクロ

    以下のコードで7列目が0の行を削除するマクロを作ったのですが、 13行目以降を削除するように指定できますでしょうか? 1-12行は別のシートに数式を入れているため、削除したくないのですが、 うまくいきません。よろしくお願いいたします。 Sub 行削除() Dim Rw As Long Dim Cnt As Long Application.ScreenUpdating = False For Rw = Cells(Rows.Count, 7).End(xlUp).Row To 1 Step -1 With Cells(Rw, 7) If .Value = 0 Then .EntireRow.Delete Cnt = Cnt + 1 End If End With Next If Cnt = 0 Then MsgBox "削除対象行は、見つかりません。", vbExclamation Else MsgBox Cnt & " 件見つかり行を削除しました。", vbInformation End If End Sub

専門家に質問してみよう