データベースを作成するには?

解決


湘南乃海  2007-02-03 19:05:01  No: 24744

いきなりで申し訳ないけど、データベースを作成するにあたって、Delphiを始めて1ヶ月の私にも分かるような、参考になるホームページとか紹介していただきたいと思っております。
どういうデータベースを目指しているのかといいますと、就業時間についてです。


かず  2007-02-04 02:28:42  No: 24745

漠然とした質問で誰も答えられないですね。
何がしたいのか具体的に書かないと
データベースの指定をしないといけません。
Paradox,MSSQL,InterBase,Accessとか、簡単ならローカルデータベースで十分だし、各拠点からデータ入力するならMSSQLとか
それだけ出しても、このページが参考になるなんて、なかなかいえないでしょうね。


湘南乃海  2007-02-04 04:53:40  No: 24746

内容不足でごめんなさい。”データベース”に関わったことがなくて。なんので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(《、》)で、別のページに切り替わるように。
印刷可能。

漠然とした理想はこんな感じです。


湘南乃海  2007-02-04 04:56:51  No: 24747

バラバラになっちゃいました(TT;
|←これは気にしないでください。


HOta  2007-02-04 05:33:39  No: 24748

もっと整理しましょう。
まず、作業する人のマスターテーブルが必要です。
それと、作業のデーターテーブルを用意しましょう。

社員マスター
社員コード、社員名

作業データー
社員コード、作業日、作業開始時刻、作業終了時刻

のテーブルを作ればいいでしょう。

これから先は、Delphiの入門書でもたくさんありますよ。
バージョンにはあまり依存しないので、古いものでもOKでしょう。


かず  2007-02-04 08:09:52  No: 24749

データベースは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ならすぐできてしまいます。


湘南乃海  2007-02-05 18:38:15  No: 24750

返事が遅れてすいません。

最初のほうにも書いていましたが、”データベース”に触れたことがないため、皆さんが書いていただいた内容がほとんど理解できていません。自分なりに調べてみました。が、やはり困難で・・・。
Delphiの入門書とかも探しに行きました。が・・・ない。(20件くらいかな?)  そんなことはどうでもいいんですが、とにかくせっかくみなさんにいただいたアイディアを、ほとんど理解できない私がものすごく腹立たしいです。


TS  2007-02-05 21:15:22  No: 24751

参考までにDelphiの魔法
http://www.geocities.co.jp/SiliconValley-SanJose/2560/delphi4/db/index.htm

かず さんのおっしゃる
Delphiならすぐできてしまいます。
これ本当です。
頑張って下さい。


湘南乃海  2007-02-08 18:11:08  No: 24752

Turbo Delphi 2006は、Database Desktopというものがないんでしょうか?
見当たらない・・・


湘南乃海  2007-02-08 19:24:30  No: 24753

無いようですね。
Turbo Delphi 2006でデータベース作成は困難・・・ということですか?


湘南乃海  2007-02-08 21:00:57  No: 24754

あれ?Turbo Delphi 2006で、Database Desktopありました・・・
C:\Program Files\Common Files\Borland Shared\Database Desktop
(何か私一人でしゃべってますね)


湘南乃海  2007-02-15 20:28:27  No: 24755

今は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)
テーブル名をつけるときは、何か決まりみたいなものがあるんでしょうか?


探せば見つかる  2007-02-15 21:41:38  No: 24756

複数のテーブルから項目を参照する時は結合しましょう。
SQLは結構奥が深いのでがんばってください。

参考:ttp://www.rfs.jp/sb/sql/

ネットで探せば他にも参考になる物はいっぱいありますよ。


HOta  2007-02-15 23:05:31  No: 24757

質問する場合は、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も参照しましょう。


湘南乃海  2007-02-15 23:22:15  No: 24758

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;

これが今私がやっている文です。


HOta  2007-02-16 02:02:03  No: 24759

このSelect文の中では、customer.db CUSTとなっていますので、customer.dbはCUSTで表し、CUSTだけで参照しています。
この文で、選択はできているのですね?
CUST.Nameはcustomer.dbのName項目を表します。


湘南乃海  2007-02-16 04:20:53  No: 24760

ということは、customer.db CUST, book.db BOOK, data.db DATAは、
”customer.dbはCUST、book.dbはBook、data.dbはDATAと表す。”と解釈すればよいわけですね。


HOta  2007-02-16 04:33:34  No: 24761

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を指定しています。


湘南乃海  2007-02-16 20:01:02  No: 24762

CUST・BOOK・DATAはエリアス名ってことですか?
でも3つともエリアス名はShopです。


HOta  2007-02-16 20:19:53  No: 24763

全体が見えないのですが、たぶんShopはデーターベースのAliasでしょう。
CUST・BOOK・DATAはテーブルのAliasです。
また、項目にもAliasは付けられます。


湘南乃海  2007-02-16 21:07:54  No: 24764

おっしゃるとおり、Shopはデータベースのエリアスです。

そうですかぁ・・・テーブルにもエリアスがあったのですねぇ・・・


湘南乃海  2007-02-17 18:51:10  No: 24765

データベースで、フィールド名=開始時刻(型=時間型)というのをつってるんですが、入力画面Formで入力された値を、時間型として取り込むためにはどのようにすればよいでしょうか。つまりこういうことです。

入力画面Form
(DBEdit1) 時(Label1) (DBEdit2) 分から(Labal2)

○○時○○分から
これを
○○:○○  というかたちにもっていきたいんです。


AY  2007-02-17 22:28:28  No: 24766

別な事を、聞きたい場合には新規質問でお願いします。
そして、質問内容で解決したら、「解決」にチェックをしてください。


湘南乃海  2007-02-17 22:45:28  No: 24767

そうですね。
データベース関連の質問が続いてたので、このままでいいかなぁとか思ってました。他の方々からすればそんなこと知るかって感じですよね。なのでおっしゃるとおり、データベース作りのスタートは切れたので、解決したことにします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加