いきなりで申し訳ないけど、データベースを作成するにあたって、Delphiを始めて1ヶ月の私にも分かるような、参考になるホームページとか紹介していただきたいと思っております。
どういうデータベースを目指しているのかといいますと、就業時間についてです。
漠然とした質問で誰も答えられないですね。
何がしたいのか具体的に書かないと
データベースの指定をしないといけません。
Paradox,MSSQL,InterBase,Accessとか、簡単ならローカルデータベースで十分だし、各拠点からデータ入力するならMSSQLとか
それだけ出しても、このページが参考になるなんて、なかなかいえないでしょうね。
内容不足でごめんなさい。”データベース”に関わったことがなくて。なんのでParadox,MSSQL,InterBase,Accessとかいう言葉を知らなかったんです・・・。
なのでこんな感じにしたいというのを書きます。
Form1
---------------------------------------------------|
氏名(ComboBoxで選択可) checkBox(社員) |
checkBox(派遣) |
checkBox(パート) |
|
○年(ComboBox) ○月(ComboBox) ○日(ComboBox)|
就業時間 ○○時○○分(edit1)〜○○時○○分(edit) |
|
検索(Button) |
---------------------------------------------------|
別のフォームで
---------------------------------------------------------|
《 ○○○○年 》 |
--------| |
○○月 | ○○月 ○○月 ・・・ ↓(タブのつもり) |
Aさん -------------------------------------------------|
1日 2日 3日 ・・・31日 合計 |
普通業務時間 8.0 8.0 7.5 ・・・8.0 ○.○h |
残業時間 2.0 1.0 0.0 ・・・1.0 ○.○h |
就業時間 10.0 9.0 7.5 ・・・9.0 ○.○h |
|
Bさん |
1日 2日 3日 ・・・31日 合計 |
普通業務時間 8.0 8.0 7.5 ・・・8.0 ○.○h |
残業時間 2.0 1.0 0.0 ・・・1.0 ○.○h |
就業時間 10.0 9.0 7.5 ・・・9.0 ○.○h |
|
・ |
・ |
・ |
総計 |
1日 2日 3日 ・・・31日 合計 |
普通業務時間 80.0 80.0 70.5 ・・・80.0 ○.○h |
残業時間 20.0 10.0 10.0 ・・・10.0 ○.○h |
就業時間 100.0 90.0 80.5 ・・・90.0 ○.○h |
---------------------------------------------------------|
Form1
就業時間入力後、検索ボタンを押したらComboBoxで選択された場所(Form2)に飛ぶ。
Form2
”月”は、タブ?で切り替わるように。
”年”は、Button(《、》)で、別のページに切り替わるように。
印刷可能。
漠然とした理想はこんな感じです。
バラバラになっちゃいました(TT;
|←これは気にしないでください。
もっと整理しましょう。
まず、作業する人のマスターテーブルが必要です。
それと、作業のデーターテーブルを用意しましょう。
社員マスター
社員コード、社員名
作業データー
社員コード、作業日、作業開始時刻、作業終了時刻
のテーブルを作ればいいでしょう。
これから先は、Delphiの入門書でもたくさんありますよ。
バージョンにはあまり依存しないので、古いものでもOKでしょう。
データベースはParadoxで作成しましょう。
Delphiに付いているDatebaseDisktopでHOtaさんの書いたように
HOtaさんと表記が違うのは私の書き方ということで^_^;
エリアスはKintaiとでも
■社員の表 Shain.DB
コード Code 文字型 10 キー項目
氏 名 Shimei 文字型 20
勤務区分 KinmuKubun 文字型 10
■勤務の表 Kinmu.DB
社員コード Code 文字型 10 キー項目
日付 Hiduke 日付型 キー項目
開始時間 KaishiJikan 時間型
終了時間 ShuuryouJikan 時間型
就業時間 ShuugyouJikan BCD型 入力と同時に計算する
残業時間 ZangyouJikan BCD型 入力と同時に計算する
この表をTTableで読めるようにします。勤務の表はマスター表を社員の表にします。
はじめにForm1,2内容を入れるタブシートを作ります。検索ボタンはいりません。
タブシート1(Form1)はTDBGridを使います。簡単にイメージはちょっと違います。
画面上に社員の表のDBGridを下に勤務の表のDBGridをナビゲータボタンも忘れずに付けます。これで入力フォームは出来上がりです。かなり簡単に書きました。
タブシー2(Form2)は湘南の海さんのイメージでは難しいので、TDBGridをそのまま使用します。縦方向にデータが展開する
年はTEdit、月はListBox タブシートは使用しない。月を変更した時に
勤務の表をFillterを書け、時間計算します。
月計はLabelに計算結果を表示させます。
Delphiならすぐできてしまいます。
返事が遅れてすいません。
最初のほうにも書いていましたが、”データベース”に触れたことがないため、皆さんが書いていただいた内容がほとんど理解できていません。自分なりに調べてみました。が、やはり困難で・・・。
Delphiの入門書とかも探しに行きました。が・・・ない。(20件くらいかな?) そんなことはどうでもいいんですが、とにかくせっかくみなさんにいただいたアイディアを、ほとんど理解できない私がものすごく腹立たしいです。
参考までにDelphiの魔法
http://www.geocities.co.jp/SiliconValley-SanJose/2560/delphi4/db/index.htm
かず さんのおっしゃる
Delphiならすぐできてしまいます。
これ本当です。
頑張って下さい。
Turbo Delphi 2006は、Database Desktopというものがないんでしょうか?
見当たらない・・・
無いようですね。
Turbo Delphi 2006でデータベース作成は困難・・・ということですか?
あれ?Turbo Delphi 2006で、Database Desktopありました・・・
C:\Program Files\Common Files\Borland Shared\Database Desktop
(何か私一人でしゃべってますね)
今はSQLをやってます。
SELECT ・・・ FROMをやってるんですが、
SELECT CUST.Name, CUST.Address, CUST.Tel, BOOK.Name, DATA.In_Date FROM
という部分があります。で、フィールド名の前についているもの(CUST,BOOK,DATA)がよく分からなかったのですが、テーブル名がBook.dbとかDate.dbとかだったりするのでBOOK.NameとDATE.In_Dateはわかったんですが、Name,Address,Telに関しては、テーブル名はCUST.dbではなくCustomer.dbです。
Customer.Name, Customer.Address, Customer.Telでやってみましたがエラーが発生しました。(項目(フィールド)名が無効です。NAME)
テーブル名をつけるときは、何か決まりみたいなものがあるんでしょうか?
複数のテーブルから項目を参照する時は結合しましょう。
SQLは結構奥が深いのでがんばってください。
参考:ttp://www.rfs.jp/sb/sql/
ネットで探せば他にも参考になる物はいっぱいありますよ。
質問する場合は、SQL文をすべて見せてください。
SELECT CUST.Name, CUST.Address, CUST.Tel, BOOK.Name, DATA.In_Date
FROM 'Customer.db' as CUST
こんな風になっていないでしょうか?
この場合は、テーブル名は'Customer.db'で
アリアス名をCUSTにしていますので、Customerで参照はできません。
アリアス名はもっと短くCなどとしてもかまいません。判別がつけばOKです。
Database Desktopのhelpも参照しましょう。
SELECT CUST.Name, CUST.Address, CUST.Tel, BOOK.Name, DATA.In_Date FROM
customer.db CUST, book.db BOOK, data.db DATA WHERE DATA.Out_Date IS NULL AND
CUST.Code=DATA.C_Code AND BOOK.Code=DATA.B_Code;
これが今私がやっている文です。
このSelect文の中では、customer.db CUSTとなっていますので、customer.dbはCUSTで表し、CUSTだけで参照しています。
この文で、選択はできているのですね?
CUST.Nameはcustomer.dbのName項目を表します。
ということは、customer.db CUST, book.db BOOK, data.db DATAは、
”customer.dbはCUST、book.dbはBook、data.dbはDATAと表す。”と解釈すればよいわけですね。
SELECT /*以下が選択する項目 */
CUST.Name
, CUST.Address
, CUST.Tel
, BOOK.Name
, DATA.In_Date
FROM /*以下に参照するテーブルを指定 */
customer.db CUST
, book.db BOOK
, data.db DATA
WHERE /*選択する条件*/
DATA.Out_Date IS NULL
AND CUST.Code=DATA.C_Code
AND BOOK.Code=DATA.B_Code;
FROM句で参照するテーブルを指定して、そのテーブルを指定するAliasとして、CUST・BOOK・DATAを指定しています。
CUST・BOOK・DATAはエリアス名ってことですか?
でも3つともエリアス名はShopです。
全体が見えないのですが、たぶんShopはデーターベースのAliasでしょう。
CUST・BOOK・DATAはテーブルのAliasです。
また、項目にもAliasは付けられます。
おっしゃるとおり、Shopはデータベースのエリアスです。
そうですかぁ・・・テーブルにもエリアスがあったのですねぇ・・・
データベースで、フィールド名=開始時刻(型=時間型)というのをつってるんですが、入力画面Formで入力された値を、時間型として取り込むためにはどのようにすればよいでしょうか。つまりこういうことです。
入力画面Form
(DBEdit1) 時(Label1) (DBEdit2) 分から(Labal2)
○○時○○分から
これを
○○:○○ というかたちにもっていきたいんです。
別な事を、聞きたい場合には新規質問でお願いします。
そして、質問内容で解決したら、「解決」にチェックをしてください。
そうですね。
データベース関連の質問が続いてたので、このままでいいかなぁとか思ってました。他の方々からすればそんなこと知るかって感じですよね。なのでおっしゃるとおり、データベース作りのスタートは切れたので、解決したことにします。
ツイート | ![]() |