次のようなプログラムを作成するにはどんな本を買って勉強すればよいか
教えてください。

1.ランダムに数字(自然数)を打ち込む。 
 あらかじめ区分けされた数字群、例えば「23,34,201,
 501,21,21,21」「43,53,102,582」・・・

2.その区分けされた数字群をデータベースから抽出。

3.新たに、その区分けされた数字群順にデータベースを再作成。

 集計のイメージと似ています。1から連番で見本があり、個々で
 欲しい数字を書き込みそれを整理すると言ったようなことです。
 データベースは1から連番。新しいデータベースは個々の
 注文の数字ごとに整理されたもの。

 といったようなプログラムを作りたいのですが、なにか良い本は
 ありますでしょうか。よろしくお願いいたします。
  

このQ&Aに関連する最新のQ&A

A 回答 (3件)

こんにちは。

再びmaruru01です。
つまり、商品カタログを消費者に見せて、好きな物を好きなだけ選んでもらうということですね。
やはり、AccessVBAで作った方がいいと思います。
すでに1冊紹介しましたが、やはり、ご自分で本屋に行って実際に手に取って確かめるのがいいと思います。あとは Amazon.co.jp で探すのいいでしょう。(http://www.amazon.co.jp/exec/obidos/tg/browse/-/ …
あと、AccessやVB関連のHPのアドレスをいくつか紹介しますので参考にして下さい。
では。

Access関連:
http://www.akj.co.jp/aug/
http://www.moug.net/

VB関連:
http://www2j.biglobe.ne.jp/~little-g/vbtomo.html
http://www.vbvbvb.com/jp/
    • good
    • 0
この回答へのお礼

ありがとうございます、大変参考になりました。

お礼日時:2001/11/06 17:58

こんにちは。

maruru01です。
ちょっと補足して欲しいのですが。

>1.ランダムに数字(自然数)を打ち込む。
この数字を抽出条件に使用するのでしょうか。
だとすればどうように?

>あらかじめ区分けされた数字群、例えば「23,34,201,
>501,21,21,21」「43,53,102,582」・・・
これは数字とカンマの文字列ですか?データベースとしてはどういう形で保存されているのですか?

>3.新たに、その区分けされた数字群順にデータベースを再作成
これは並び替えのことですよね。それはどういう順なんですか?

>集計のイメージと似ています。1から連番で見本があり、個々で
>欲しい数字を書き込みそれを整理すると言ったようなことです。
>データベースは1から連番。新しいデータベースは個々の
>注文の数字ごとに整理されたもの。
「見本」というのは、「区分けされた数字群」のことでしょうか?
「個々で欲しい数字」は、最初の「ランダムに打ち込む数字」のことでしょうか?
この当たりもちょっとわかり難いです。
出来れば具体的な手順を書いて欲しいです。
というわけで、詳しくはお答えできませんが、
どうも、Accessで作った方がいいかも知れませんね。
というわけで、私が使用しているAccessVBAの本を紹介しておきます。

  「ACCESS VBA 応用プログラミング」
    谷尻かおり  技術評論社  2780円(+税)

では。

この回答への補足

あまりにも解りにくい質問ですみません。
うまく説明できる自信ないですが、例えば、No.1番:時計、No.2番:テレビ、No.3番:車、・・・といったように品物が1番から連番で番記された
データベースがあるとします。そして消費者が一人一人解答用紙に興味のある
品物のナンバーを記入します(順不同可)。(番号が多ければ同じナンバーを
記入してしまうこともあるかと思いますがそれはまとめず)。例えばある解答用紙
には番号記入欄に20  203  3  ・・・ 203(同じ番号がある可能性もあります。 といったように番号だけ記入されています。その解答用紙の束を
1人分ごとに番号を打ち込んでいき、対応する品物をデータベースから拾っていき「車 テレビ パソコン 木材 車 カーテン 」「テレビ 洗剤 カメラ」・・
といったように結果データを作りたいのです。 う~ん、わかりにくいですね。
他の例えでいくとですね。何かの行事の写真が展示されています。欲しい写真の
番号をそれぞれが用紙に記入します。(2番、201番、35番2枚・・)
そしてその用紙を元に新しい結果データを作るわけです。「2 35 201
 451 2 202 35」といったような結果データです。勿論この番号に
対応したファイルが新しいデータに入っているわけです。」
なんかますますわかりにくくなってしまいましたね・・・すみませんです。  

補足日時:2001/11/06 14:01
    • good
    • 0

こんにちは。

itohhといいます。

うーん!あまりにも説明が解りづらいのでこの本がいいよとは言えません。
まずは、VBの入門書から購入して、そのあとにデータベース操作の解説書を
購入されては如何ですか?

パソコンの書籍を扱っている書店に行って立ち読みしてみてください。
VBの入門書は結構な数が出ていると思いますから。

データベースをお使いになるのでしたら最低限AccessがPCにインストールされている必要があります。
    • good
    • 0
この回答へのお礼

すみません、ホントにわかりづらいです。一応上のお方に補足つけてみましたが
またまたわかりにくくなってしまいました。お答えいただいてありがとう
ございました。

お礼日時:2001/11/06 14:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qデータベース上の任意の行を削除しても連番にしたい

●質問の主旨
ワークシート上にあるデータベースの任意行を
直接マウス操作などで削除しようとするとき、
当該行のA列に入力されている番号について
削除されても、連続した番号を表示させ続けるようには、
どうしたら良いでしょうか?

下記コードを作成しましたが、上手くいきません。
どのように書き換えたら良いでしょうか?
VBAをはじめてまだ2カ月程度の初心者です。
使用機種はWindowsVista、Excel2007です。

ご存知の方、どうぞご教示よろしくお願いします。

●質問の補足
添付の画像のようにデータベース上の各行に1から順番に番号を
振っています。ところが下記のコードでは
「End Ifに対するIfブロックがありません」とエラーが返されます。
「If…Then…Else」ステートメントの「Else」のことを指しているので
しょうか?ある参考書では「Else」は省略可と書いてあったので、
記述しなかったのですが…

●コード
'データベース上の任意行の削除について
Sub Gyo_Sakujyo()

Dim i As Integer
Dim j As Range
Dim DB_Kiten As Range

'Worksheets(1)にある任意行の直下の行のA列セルを変数jに短縮置換
Set j = Worksheets(1).Cells(i - 1, 1)
'データベースの基点をWorksheets(1)のA5セルに設定
Set DB_Kiten = Worksheets(1).Range("A5")

'任意の行からワークシート上に書き込みがある領域から
'1行分(見出し分)を差し引いた範囲において
For i = i To DB_Kiten.CurrentRegion.Rows.Count - 1
'もし任意行が策された時、変数jに記入されている値は今の値から1を差し引く
If Rows(i).Delete Then j.Value = j.Value - 1

End If

Next

End Sub

●質問の主旨
ワークシート上にあるデータベースの任意行を
直接マウス操作などで削除しようとするとき、
当該行のA列に入力されている番号について
削除されても、連続した番号を表示させ続けるようには、
どうしたら良いでしょうか?

下記コードを作成しましたが、上手くいきません。
どのように書き換えたら良いでしょうか?
VBAをはじめてまだ2カ月程度の初心者です。
使用機種はWindowsVista、Excel2007です。

ご存知の方、どうぞご教示よろしくお願いします。

●質問の補足
添付の画像のようにデータベース...続きを読む

Aベストアンサー

> ●質問の補足
>「End Ifに対するIfブロックがありません」
ヘルプでIf...Then...Else ステートメント
の解説を読んで欲しいのですが、
単一行形式というものがあります。

[単一行形式]
If Rows(i).Delete Then j.Value = j.Value - 1
[ブロック形式]
If Rows(i).Delete Then
  j.Value = j.Value - 1
End If

VB では改行も意味を持ちますので注意して下さい。


ちなみに、
Sub test1()
  For i = 0 To 2
    If test2() Then
    
    End If
  Next
End Sub
Function test2() As Boolean
  MsgBox "test2"
End Function

ではメッセージボックスが複数回表示されます。
>'もし任意行が策された時、
>If Rows(i).Delete Then
「Rows(i).Delete を"実行し"、その戻り値をBooleanで判断した時」
であって、ループで回した数だけ削除(策?)されると思います。
デバッグ作業をして下さい。1行1行ステップ実行して値を
確認したり、Debug.Print(イミディエイトウィンドウに出力)を利用
するなどして、何がどう処理されているかを全て把握して下さい。
'データベース上の任意行の削除について
Sub Gyo_Sakujyo()

Dim i As Integer
Dim j As Range
Dim DB_Kiten As Range
Dim rngTemp As Range

'i = 2

'Worksheets(1)にある任意行の直下の行のA列セルを変数jに短縮置換
Set j = Worksheets(1).Cells(i - 1, 1)
'データベースの基点をWorksheets(1)のA5セルに設定
Set DB_Kiten = Worksheets(1).Range("A5")

'任意の行からワークシート上に書き込みがある領域から
'1行分(見出し分)を差し引いた範囲において
Set rngTemp = DB_Kiten.CurrentRegion
Debug.Print "For前データ確認"
Debug.Print "CurrentRegion:" & rngTemp.Address
Debug.Print "i:" & i
Debug.Print "RowCount:" & DB_Kiten.CurrentRegion.Rows.Count
For i = i To DB_Kiten.CurrentRegion.Rows.Count - 1
  'もし任意行が策された時、変数jに記入されている値は今の値から1を差し引く
  Set rngTemp = Rows(i)
  Debug.Print "ループ内If実行"
  Debug.Print "Delete対象:" & rngTemp.Address
  Debug.Print "修正対象:" & j.Address
  If Rows(i).Delete Then
    j.Value = j.Value - 1
  End If

Next

End Sub

> ●質問の補足
>「End Ifに対するIfブロックがありません」
ヘルプでIf...Then...Else ステートメント
の解説を読んで欲しいのですが、
単一行形式というものがあります。

[単一行形式]
If Rows(i).Delete Then j.Value = j.Value - 1
[ブロック形式]
If Rows(i).Delete Then
  j.Value = j.Value - 1
End If

VB では改行も意味を持ちますので注意して下さい。


ちなみに、
Sub test1()
  For i = 0 To 2
    If test2() Then
    
    End If
  Next
End Sub
Function test2() As Boolean...続きを読む

Q2つのデータベースのデータを1つに合わせてのソート方法

よろしくお願いします。
Accessで作成されたデータベースが2つあり、それぞれ同じ項目名で構成されているテーブルが1つずつあります。(データの変更前と変更後というように2つのデータベースに分けています。全体で約50万件です。)
検索用のフォームを作成し、条件に合致するデータを両方のデータベースから検索してフォーム上のリストボックスに表示していきたいのですが、その表示順番を2つのデータを合わせて日付順に並び変えたいのです。このような処理が可能なのかどうかも不明なのですが、可能であればその方法を教えていただけないでしょうか。

Aベストアンサー

カン違いな回答だったらごめんなさい。
ユニオンクエリを使ってみたらいかがでしょう。
例えば
新規クエリを作成して、メニューバー→クエリ→SQL→ユニオン、を選んで
SELECT テーブル1.フィールド1,テーブル1.フィールド2
FROM テーブル1;
UNION
SELECT テーブル2.フィールド1,テーブル2.フィールド2
FROM テーブル2;
これで一つのテーブルのように動くはずなんですが・・・

Qcsvファイルを読み込んでデータベースのデータと比較して異なっていた場

csvファイルを読み込んでデータベースのデータと比較して異なっていた場合は更新するようにしたいと考えています。

csvデータ…10
データベースから取得したデータ…10.0
※比較するテーブルのフィールドのデータ型はFLOAT型です。

文字列を数値変換して比較、またはデータベースから取得したデータを文字列に変換して比較、どっちがいいのでしょうか。
またどのように比較すればいいのでしょうか。

くだらない質問かもしれませんが宜しくお願いします。

Aベストアンサー

No1の方が言いたいこと良くわかります。けして、質問の意味取り違えていませんよ。

>文字列を数値変換して比較、またはデータベースから取得したデータを文字列に変換して比

問題になるのは、対象となるデーターの背景です。何のデーターを対象としているかです。

例えば、計測又は計量したデーター10.10 と10.1 では意味が違いますね。10.10では100分の1まで計測したが100分の1は0だったという意味です。10.1は10分の1までの計測で、100分の1の値は不明と言うことです(又は四捨五入などの圧縮したデーター)。

数値的には同じ10.1ですが、何桁で扱うかが問題になります。DBでデーター型で扱う利点は、このような時に精度をそろえられるところにあります。文字列として扱ってしまうと、余計な(0と言う文字を追加)作業が出てくる場合もあります。

逆にそんなのどうでもいい、と言う場合もたくさんあり、ケースbyケースです。

文字列として"10.10" == "10.1"なるのかと言う問題ですね。これを==で結びたいときは数値として扱うべき、そうでない時は文字列として扱うと簡単です。

と言うことで回答はケースbyケースです。

No1の方が言いたいこと良くわかります。けして、質問の意味取り違えていませんよ。

>文字列を数値変換して比較、またはデータベースから取得したデータを文字列に変換して比

問題になるのは、対象となるデーターの背景です。何のデーターを対象としているかです。

例えば、計測又は計量したデーター10.10 と10.1 では意味が違いますね。10.10では100分の1まで計測したが100分の1は0だったという意味です。10.1は10分の1までの計測で、100分の1の値は不明と言うことです(又は四捨五入などの圧...続きを読む

Q【VB】データグリッドに読み込んだテーブルの変更を元のデータベースに反映させたい

VB歴6ヶ月です。
VBのバージョンは2005です。


mdbから読み込んだデータベースをデータグリッドビューコントロールで表示しました。

CNには接続パスが入っていてmdbとの接続は確立しています。
データグリッドビューコントロールのオブジェクト名はDGVです。
読み込むテーブル名はt社員マスターです。

Private sub メンテナンス()

Dim DS As DataSet = New DataSet("社員マスター")
Dim SQL As String = "SELECT * FROM t社員マスター"
Dim DA As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(SQL, CN)

DA.Fill(DS, "社員マスター")

Dim DV As DataView = New DataView(DS.Tables("社員マスター"))

DGV.DataSource = DV

End sub

これでグリッドに読み込ますことはできたのですが、
読み込んだデータをグリッド上で変更したら元のデータベースにも反映したいのですが
やり方がわかりません ><

具体的なコード、やり方を教えていただけたらありがたいです。

VB歴6ヶ月です。
VBのバージョンは2005です。


mdbから読み込んだデータベースをデータグリッドビューコントロールで表示しました。

CNには接続パスが入っていてmdbとの接続は確立しています。
データグリッドビューコントロールのオブジェクト名はDGVです。
読み込むテーブル名はt社員マスターです。

Private sub メンテナンス()

Dim DS As DataSet = New DataSet("社員マスター")
Dim SQL As String = "SELECT * FROM t社員マスター"
Dim DA As OleDb.OleDbDataAdapt...続きを読む

Aベストアンサー

こんにちは。

CommandBuilderを発行しておけば更新が簡単です。

Dim OleCB As Data.OleDb.OleDbCommandBuilder
これを更新するタイミングでも使えるようにデーターグリッドビューのあるフォームのクラスの先頭に入れます。

OleCB = New Data.OleDb.OleDbCommandBuilder(DA)
これをPrivate sub メンテナンス()の最後に入れます。

更新するタイミング、例えばフォームを閉じる時だとするとClosingかClosedイベントに

DA.Update(DS, "社員マスター")
と入れます。

これで更新されるはずです。

どうでしょうか。

Q教えて エクセル2007 請求書の連番 VBA

請求書のテンプレートを作りました。ブックで中にシートが5枚あります(見積、納品、請求書、労務費計算書、品名リスト)。このシートをいじって請求書にして保存、印刷して発行しています。
1物件につき1ブックです。Dドライブの仕事フォルダの中の売上フォルダの中に顧客フォルダがあってその中に請求書フォルダがあるという階層にしていますが請求書に連番を自動で振りたいので教えてください。
 ネットで探すと結構いいVBAが公開されていますがいまいち使い方がうまくできません。
 1、テンプレートを開いて新規に請求書を作成し、保存すると自動的に番号が振られます。
 2、テンプレートを開いただけでは番号を振りません。
 3、保存した過去の請求書は何度開いても番号を変えません。
 4、過去の請求書を開いてこれを参考に編集、保存した時にも新しい番号を振る。
請求書フォルダの中にテンプレートもファイルとして入れているのが良くないのかもしれないと思っていますが,
1週間ほど試行錯誤していますがうまくできないのでよろしくお願いします。

Aベストアンサー

>1物件につき1ブックです。
ですよね。
>請求書フォルダの中にテンプレートもファイルとして入れているのが良くないのかもしれないと思っていますが,
その通りだと思います。

管理上、物件に対して管理番号は設定されていないのでしょうか。
請求書を発行するたびに連番の番号を振るより、請求書に管理番号を印刷させた方が便利だと思いませんか?
VBAを駆使して何とかする方法もあるかと思いますが、データを一つにまとめる方法を考えた方が良いですね。

一例ですが
シート名 物件管理
 A    B
管理番号 物件名
10001   〇〇物件
10002   △△物件
・・・・
シート名 労務費
 A    B     C
管理番号 労務費名  金額
10001  〇〇費   1000
10001  △△費   2000
・・・

シート名 品名
  A   B     C
管理番号 品名    金額
10001  〇〇    1000
10001  △△    2000
・・・・

シート名 請求書
A1セルにでも 管理番号を入力すると
必要な項目が請求書のシートに表示される

>1物件につき1ブックです。
ですよね。
>請求書フォルダの中にテンプレートもファイルとして入れているのが良くないのかもしれないと思っていますが,
その通りだと思います。

管理上、物件に対して管理番号は設定されていないのでしょうか。
請求書を発行するたびに連番の番号を振るより、請求書に管理番号を印刷させた方が便利だと思いませんか?
VBAを駆使して何とかする方法もあるかと思いますが、データを一つにまとめる方法を考えた方が良いですね。

一例ですが
シート名 物件管理
 A    B
管理番号...続きを読む


人気Q&Aランキング

おすすめ情報