• ベストアンサー

テキストファイルからの時間算出

企業でシステム管理をしています。 現在勤怠管理システムで以下のようなテキストファイルをサーバに出力しています。このファイルと従業員ごとの時給テーブルを作成して人件費を出力するシステムを開発会社に作ってもらおうと思っています。 テキストファイル 社員番号,日付,業務開始,業務終了 1000234,20050901,1000,1830 1000444,20050901,1100,1930 2212334,20050901,1000,1900 1023455,20050901,1200,2030 時給テーブル 社員番号,時給 1000234,1000 1000444,900 2212334,900 1023455,1050 しかし開発会社は、出力されるテキストファイルからは時間を算出できないとの返答でした。 なぜなのでしょうか。テキストファイルの開始時間と終了時間を取り込めば労働時間は算出できると思うのですが、無理なのでしょうか。 よろしくお願いします。

  • shinp
  • お礼率33% (54/163)

質問者が選んだベストアンサー

  • ベストアンサー
  • supob
  • ベストアンサー率25% (3/12)
回答No.5

#1のsupobです。 すでに、#3で、k_o_r_o_c_h_a_nさんが回答されているので、 重なってしまいますが、私も同じ考えです。 『時間として出力されていない』という意味が分かりませんでした。 フォーマット的に「社員番号,日付,業務開始,業務終了」となっているので、 単純には時間としての情報(業務開始と終了)はあると思うのですが、 まさか、午前10時を表すために、"1000"が"10:00"になっていないとダメだ、とか、秒の情報が無いから、ということなのでしょうか・・・ それとも、やはり単純な開始~終了時間だけでは、労基法的な休憩時間・深夜などの時間が表現しきれないからダメだということなのでしょうか・・・ そうですね、、、私なら、 情報量としては、最低限必要なものが出力されているようなのですが、   1)何かまだ不足する情報があるでしょうか。   2)出力フォーマット的に何か不都合なものがあるでしょうか。 のようなことを、その開発担当者の方にお伺いすると思います。 また、あまり参考にならないかと思いますが、以上です。

その他の回答 (4)

noname#182251
noname#182251
回答No.4

#2です。 >これを使って人件費を出そうと思ったわけです。わざわざ人件費のために出力するわけではありません。 意図するところが伝わらず、残念です。 私が指摘したかったのは「勤怠管理システム」であれば、もっとしっかりしたデータを内部的に持っているであろうということです。具体的にいうならば、#1の方が疑問点として指摘しているような部分に対応できているデータです。

回答No.3

>『時間として出力されていないから算出でいない』という言い方でした。 基本的に、疑問を感じるような表現なのであれば、発言された開発会社の人に 聞かれるのが良いかと思います。 ・”時間として出力”するというのは、どういう状態を指すのか? ・なぜ、そのように出力されていないと労働時間を算出できないのか? あくまで、私見ですが、どんな様式であろうと、ある決まったルールで表される限り 処理は可能です。

noname#182251
noname#182251
回答No.2

「勤怠管理システム」というからには、最低勤務時間や、残業時間等を把握できるシステムと考えます。それを拡張して「人件費を出力するシステム」までにするか、あるいは勤務時間などのデータを、直接「人件費を出力するシステム」に渡すのが自然だと思います。テキストファイルに「社員番号,日付,業務開始,業務終了」だけを渡して、改めて時間を算出するのは、何かねじれていると考えますが、理由があるのでしょうか?

shinp
質問者

お礼

回答ありがとうございます。 説明が不十分ですみませんでした。 既存の勤怠管理システムが「社員番号,日付,業務開始,業務終了」だけのテキストファイルを出力しているので、これを使って人件費を出そうと思ったわけです。わざわざ人件費のために出力するわけではありません。

  • supob
  • ベストアンサー率25% (3/12)
回答No.1

はじめまして。 パッと見は、shinpさんが疑問に思われる通り、できそうな気がするのですが、 (私は、人間が一定の手順でできる計算であれば、基本的に仕組みとして自動化は出来ると考えています) 考えられる不都合についてちょっと上げてみます。 例として示されている情報から想像しただけですが、 ・休憩時間(昼食時など)は一律1時間などの決まりがあるか。 ・日付をまたがった時間の場合どうするか。 ・24時間制での表記が保証されるか。  午前9時は、900か、0900かどちらで表記されるか。 ・テキストファイルの空白行や逆にコメント行、行末の改行の有無など不規則性がないか。 ・サーバで管理している情報を読み出す権限。  :  : など、付帯条件がいくつかあると思うのですが、それらがクリアされれば、出来ると思います。 システム担当の方は、それらの条件を考慮されての出来ないとの返答ということでは無いでしょうか? 直接回答になっていないかも知れませんが、以上ご参考まで。

shinp
質問者

お礼

回答ありがとうございます。 supobさんのおっしゃる付帯条件は当然あると思います。システム化するからにはこれらの条件はすべてクリアにします。 しかし開発会社の方は、『時間として出力されていないから算出でいない』という言い方でした。テキストファイルに時間として出力することってできるのでしょうか?

関連するQ&A

  • 時間帯の識別がしたいのですが…

    呼出されて勤務した時間帯を管理したいのですが selectcase文で18:00から2:00まで勤務したら『準夜-深夜』と表記したいのですが『型が合いません』とエラーが出ます マクロは我流で勉強中なのでよろしくお願いします Dim 開始時間 As Date, 終了時間 As Date Dim 開始時間帯 As String, 終了時間帯 As String, 業務時間帯 As String Private Sub 業務ステータス() 開始時間 = TimeValue(開始時間TextBox.Text) 終了時間 = TimeValue(終了時間TextBox.Text) Select Case 開始時間 Case 開始時間 > TimeValue("8:29") And 開始時間 < TimeValue("17:00"): 開始時間帯 = "日勤" Case 開始時間 > TimeValue("16:59") And 開始時間 < TimeValue("24:00"): 開始時間帯 = "準夜" Case 開始時間 > TimeValue("0:00") And 開始時間 < TimeValue("8:30"): 開始時間帯 = "深夜" Case 開始時間 = TimeValue("0:00"): 開始時間帯 = "深夜" End Select Select Case 終了時間 Case 終了時間 > TimeValue("8:29") And 終了時間 < TimeValue("17:00"): 終了時間帯 = "日勤" Case 終了時間 > TimeValue("16:59") And 終了時間 < TimeValue("24:00"): 終了時間帯 = "準夜" Case 終了時間 > TimeValue("0:00") And 終了時間 < TimeValue("8:30"): 終了時間帯 = "深夜" Case 終了時間 = TimeValue("0:00"): 終了時間帯 = "深夜" End Select If 開始時間帯 = 終了時間帯 Then 業務時間帯 = 開始時間帯 Else 業務時間帯 = 開始時間帯 & "-" & 終了時間帯 End If End Sub

  • テキストファイルデータベースってありますか

    テキストファイルデータベースってありますか こんにちは。簡易検品システムを作ろうと思っています。 ネットワーク上にサーバー1台(S1)、PC2台(P1,P2)があるとします。 サーバー上に検品データが配置されています。 検品データの構成: 商品コード,数量 A001,10 B001,20 C001,30 仕様: 各PCが検品データを取得。 検品が終われば検品終了をサーバーに返す。 ただし、P1がA001の検品をしている時はP2はA001のデータを取得できないものとする。 また、検品終了フラグがたっているものは、データ取得できないものとする。 この仕様のシステムをSQLITEなどで作ろうと思えばできますが、データベースを使わないとしたら、このようなシステムは作ることが可能でしょうか? つまり、テキストファイルのみで、やろうとしたら可能でしょうか? SQLITE使えるなら、それを使えばいいじゃんというお話もあると思いますが、プレーンのテキストデータ+αでそのような事ができるのかなと思いおたずねします。 開発言語はVBかPHPを考えています。宜しくお願いします。

  • テキストファイルからの抽出

    VBAでもコマンドプロンプトでもいいのですが、1000行くらいあるテキストファイルを読み込んで、キーワード「タイムアウト」を含む行の1つ手前の行の文字列を抽出、それらを1つのファイルにまとめて出力させたいのです。 VBAで自分なりにやってみたのが http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12142881517 の最後の回答にあるマクロに手を少し加えて「タイムアウト」のある行番号をテキストファイルに出力し、その出力ファイルを読み込んで、一つ手前の行番号のリストを作ることまではできました。 ですが、どうやってそのリストから行番号を指定して、元のファイルからタイムアウトを含む行の1つ手前の行を抽出し、1つのファイルにまとめて出力させられるのかが分かりません。 後Powershellはまだ勉強途中なのですが、こっちでならできますか? アドバイスをお願いします。

  • Access2007で好きな様式でテキストファイルに出力したい

    Access2007を使用し、データベースを作成しました。 その中のデータを指定した様式に整えて、テキストファイルに出力出来るようにしたいのですが、どのようにすればいいでしょうか? 具体的には、 レコードが、 |ID|名前|電話番号 | |01|A |1234-5678| |02|B |2345-6789| |03|C |3456-7890| となっているのを、 Aさんの番号は1234-5678です。 Bさんの番号は2345-6789です。 Cさんの番号は3456-7890です。 とテキストファイルに出力したいんです。 よろしくお願いします。

  • 2つの時間から作業時間を算出したい

    ●質問の主旨 「開始時間」と「終了時間」を予め表示させておき、 「終了時間」-「開始時間」=「作業時間」とするには、 どのようなコード記述をすれば良いでしょうか?ご教示願います ●質問の補足 1.「作業開始」ボタンを押すと、「開始時間」が現在の時間に変わります。 2.「作業終了」ボタンを押すと、「終了時間」が現在の時間に変わります。 3.「作業終了」の処理が終わると同時に、赤色の部分が、   「終了時間」-「開始時間」=「作業時間」の時間計算を行い、計算結果を    表示させたいと考えています。 4.時間計算の上、表示を「0:00」(○時間○分)としたいと考えています。 5.現在のコードでは計算がされておらず、常に「0:00:00」が表示されます。 ●コード '開始時間をクリックするとラベル22が時間に変わる Private Sub CommandButton6_Click() With Me.CommandButton6 Me.Label22.Caption = FormatDateTime(Time, vbShortTime) End With End Sub '終了時間をクリックするとラベル23が時間に変わる Private Sub CommandButton7_Click() With Me.CommandButton7 Me.Label23.Caption = FormatDateTime(Time, vbShortTime) End With Call sagyoujikan End Sub '作業時間の算出 Private Sub sagyoujikan() Dim kaishi As Date Dim syuryo As Date kaishi = DateDiff("h", Label22, Label23) syuryo = DateDiff("m", Label22, Label23) Me.Label24.Caption = kaishi + syuryo End Sub 以上よろしくお願い申し上げます。使用機種はWindowsVistaで、 Excel2007です。私はVBA初心者です。

  • Accessでの設定について

     データベースソフトAccessを用いて、以下の用件を設定するにはどのようにフォームを設定したら良いか教えて下さい。 例)社員テーブルが、社員マスターID(オートナンバー型)、管理番号(テキスト型)、氏名(テキスト型)、時給単価(通貨型)で作成されている場合。  管理番号を入力すると、データ(氏名や時給単価)を呼び出すことができるようなフォームを作成するには、どのように設定したらよいのでしょうか? 教えて下さい。

  • PostgreSQL テキストファイルのインポートができません

    初めて質問させていただきます。どうかよろしくお願いいたします。 PostgreSQL8.4を勉強始めたばかりです。 エクセルの社員一覧シートをタブ形式でD:\TEST\TEST.txtに作成いたしました。 このデータを社員テーブルにインポートしたいのですが 氏名の項目で名字と名前の間に半角の空白があり インポートできません。 ダブルコーテーションで氏名を囲むとできるのですが テーブルの項目にダブルコーテーションが入ってしまいます。 テキストファイル ------------------------------ 番号 氏名 生年月日 1 山田 太郎 19610101 2 山田 花子 19610101 社員テーブル ------------------------------- 項目名 データ型 番号 INT 氏名 VARCHAR(100) 生年月日 INT PostgreSQLではPSQLを使用しております。 インポートでは、COPYコマンドを使用しております。 COPY 社員テーブル FROM 'D:/TEST/TEST.txt'; ご教授の程、よろしくお願いいたします。

  • ACCESSで、テキストファイルをインポートしたい

    宜しくお願い致します。 ACCESSで、テキストファイルをインポートしてテーブルを作成したいのですが、ファイル→インポートを選択して、ウィザードを開く方法は分かるのですが、マクロを作成してインポートは出来ないでしょうか? excel、CSVファイルでしたら、「ワークシート変換」、「テキスト変換」のマクロでインポートしたりエクスポートしたり出来ると思うのですが・・・、 (1)テキストファイルをインポートしたり、エクスポートしたりする場合、どのようなマクロがあるのでしょうか。 (ためしに、「出力」マクロで、あるテーブルをCSVファイルにエクスポートしてみたのですが、カンマ区切りにできず、excelのような枠付きのテキストファイルになってしまいました。) (2)容量が大きいデータの場合は、テキストファイルでエクスポートしたほうが良い・・・という認識に間違いはありませんでしょうか。 質問が一つ増えてしまいましたが、宜しくお願い致します。

  • アクセスでのテキストファイルへのエクスポート

    Access2000で あるテーブルにあるデータを区切り付きテキストファイルにエクスポートしたいのですが,数値データ(倍精度)が小数点以下桁処理されて出力されてしまいます。どうしてでしょうか? 良い方法はありませんか? 0.012 → 0.01 0.013 → 0.01 0.014 → 0.01 0.015 → 0.01

  • 大容量テキストファイルから任意の部分だけ抜き出すには??

    テキストファイルから任意の部分だけ抜き出したいです。 試行錯誤しているのですが、正直もうお手上げで。。 やることとしては、元ファイルがshiftjisなので、UTF8に変換し、処理を行う感じになると思っています。 ソースは以下のように書き、syntaxOKなのですが、実際に結果を出力するテキストファイルは0BYTEなので訳がわかりません。。 ソースは以下のような感じです。 何かヒントを頂けないでしょうか。 #!/usr/bin/perl use Encode::JP; use warnings; open READ, '<:encoding(shiftjis)', 'テキストファイル名'; open WRITE, '>:encoding(utf8)', 'テキストファイル名2'; while(my $data = <READ>){ ($data,"shiftjis","utf8"); printf WRITE; }; close WRITE; close READ; open PAY, 'テキストファイル名2'; while (<PAY>) { printf if /^"抜き出したい文字列(開始)"$/ .. /^"抜き出したい文字列(終了)"$/ and !/^(?:"抜き出したい文字列(開始)"|"抜き出したい文字列(終了)")$/; };

    • ベストアンサー
    • Perl