業者にACCESSとVisual Basicを使った簡単なデータベース入力/修正/出力システムを作成してもらいましたが、現在、いくつかの改善要求をしているのですが、改造が大変と言われて困っています。
どの程度、大変なものなのか、手段等があれば教えて下さい。
なお、当方は、ACCESS、VBとも作成経験は多少あります。
メインフォームは、VBで作られており、いくつかのボタンとACCESSでいうデータシートフォームがついており、全データの表示を行っています。このデータシートのうちの1項目を選択して、あるボタンを押すと、単票入力フォームのようなものが表示され、1データの入力、修正ができます。
改善要求は下記です。
(1)メインフォームで修正できないか?
ACCESSであれば、通常、修正することは、出来ると思うのですが、VBでは、簡単に行かないと言われていますが、そうなのでしょうか?設定を変えるだけで済まないのでしょうか?
(2)メインフォームで、アイテム毎にソートしたい。
これも、ACCESSであれば、通常、できると思うのですが。
(3)メインフォームで、複数項目を選択する時、CTRLキーを押しながら、複数項目選択は可能ですが、SHIFTキーによる連続する項目の選択が出来ない。20項目あると、一つずつ、20個選択するのは大変。
(4)メインフォームで、項目を選択、ドラッグして、並びを変えたい。
現在は、各項目の左隣に、項目数分、ボタンを追加して、ボタンを押した順番に並ぶように考えています。
アイテムを一つ追加して、ボタンを押した順番に1,2,3、・・・と追加したアイテムに数値が入るようにして、
次に立ち上げた時、この数値の順に並ぶようにします。
何か良いアイデアはないですかね?
一つずつでも結構ですから、ご回答頂くとありがたいです。

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

A 回答 (2件)

(1)の改修が難しいとのことで、推測いたしましたが、


多分、お手軽にグリッドコントロールを張り付けて実装しているものと思います。

そのコントロールには多分ダイレクトに入力する機能が無いのでしょう。
そうなると、実現するためには相当の時間がかかります。

ほとんど、そのコントロール部分を作り直さなければならないのではないでしょうか。

コントロールの多機能化なら、カスタムコントロールを導入してみたらいかがでしょう。

よく採用されている文化オリエント社のリンクをはっておきます。

(2)はソートされたテーブルを作り直すか、クエリを作成して張り直せばできそうですね。
(3)はコントロールの機能になりますので代案を考えた方が良いでしょう。
たとえば、別に選択指定するものを用意するとか
(4)はその案を基本に考えればいいんではないでしょうか、
操作インタフェースを変更などして。

参考URL:http://www.boc.co.jp/support/database/VisualBasi …
    • good
    • 0

(1)だけ回答します。


データベースの構造によっては、どうやっても無理です。VBではGridになると思うのですが、VB標準、他のメーカーともに、いくつかのテーブルを結合させて表示している場合は、無理です。(そのような形かどうかは、作った人に聞いてください。)
ただし、比較的単純な結合であったり、1つのテーブルを表示しているのなら、VB標準でも技術的にはできます。
後者のほうでも、できないと言い張るのであれば、ほかに業務上の制限を設けているか、プログラマーの怠慢の可能性があります
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

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

Qテールズ・オブ・ディスティニーの雑談システム?の・・・

手抜きでほとんど調べていません。   (汗;
申し訳ないのですが、「テールズ・オブ・ディスティニー」の雑談システム?ってありますよね。
しばらく何の動作もしないとこのソフトではキャラがしゃべるやつ

200ぐらいあるそうなのですが、それのデータベースみたいのって
どこかに(本でも可!!)ありますかねぇ
自分自身は結末体験はしているのですが、甥・姪と一緒にやるはめになったので、
ついその辺の情報が欲しいです。

個人的には
1.全コメント
2.(欲張りで)それぞれの発生する条件
3.その他??
が重点ポイントではないかと思っています。

発売時期が少々古いのですが、宜しく御願い致します。

Aベストアンサー

APW(アクティブ・パーティ・ウィンドウ) ですね。これはかなり厳しい質問のように思いましたが、参考のサイトで256種類(5種類はボツゼリフらしいです)全てのセリフだけなら見れます。ただ、条件とかはさすがに載っていないようですね。

ちなみに、エターニアでしたら、エンターブレインから出ているオフィシャルガイドブックにヒントスキットとキャンプスキットの条件や内容が書かれているのですが、デスティニーのオフィシャルには特別な解説もされていないようでした(見落としていたら出直してきます)。ということで、本ではちょっと苦しいかなと思います。

また、そのようなサイトが見つかれば出直して来ますね。

参考URL:http://www.hanna.cc/minamoto/tod/

QAccess2000 単票フォーム上のボタンを押すと、同じIDを持つフォームが開くよういしたい

Accessの初心者です。
本当に超がつく初心者ですので、解説もしてくださるととても嬉しいです。
宜しくお願いします。



請求書番号連番を取得するフォーム(テーブルも)があります。
請求書番号は特殊な為、現時点ではじか打ちで作成しています。
それとは別に、顧客ごとに請求データを入力するフォーム(テーブルも)があります。
その二つは、請求書番号でひもづけています。



<請求書番号連番取得フォーム/帳票>
・請求書番号
・請求日
・顧客ID

<請求データの入力フォーム_A社/単票> ※これがB社、C社と複数存在します。
・顧客ID
・請求書番号
・商品CD


<請求書番号連番取得フォーム/帳票>上にボタンをつくり、そのボタンを押すと、
同じ顧客IDを持つ<請求データの入力フォーム/単票>が開けたらな・・・と思っているのですが、
わかりますでしょうか・・・・。

どうか、宜しくお願い致します。



<請求書番号連番取得フォーム/帳票>
_________________________________________________________________
請求書番号|請求日 |顧客ID| 
_________________________________________________________________
09BB87ZZ1|2009/04/01|0001 |■(ボタン)
--------------------------------------------
09BS87AA2|2009/04/10|0003 |■(ボタン)
--------------------------------------------

↑この1行目の■(ボタン)を押すと、顧客ID「0001」の請求書番号「09BB87ZZ1」の単票フォームが開き、
(請求書番号欄に「09BB87ZZ1」が入っている。)
2行目の■(ボタン)を押すと、顧客ID「0003」のフォームを開く・・・というような動きです。


説明が下手で申しわけありません。
お願いします。

Accessの初心者です。
本当に超がつく初心者ですので、解説もしてくださるととても嬉しいです。
宜しくお願いします。



請求書番号連番を取得するフォーム(テーブルも)があります。
請求書番号は特殊な為、現時点ではじか打ちで作成しています。
それとは別に、顧客ごとに請求データを入力するフォーム(テーブルも)があります。
その二つは、請求書番号でひもづけています。



<請求書番号連番取得フォーム/帳票>
・請求書番号
・請求日
・顧客ID

<請求データの入力フォーム_A社/単票>...続きを読む

Aベストアンサー

#2です。

意味合いが違ってましたね。

「顧客ID」に対応した「フォーム名」情報がテーブルで作られているとします。
もしくは、「顧客ID」と A社、B社、C社 などが紐付けされ、その社ごとに「フォーム名」情報が得られるとすると

ボタンがクリックされた時の処理例)

Private Sub ボタン_Click()
  Dim sForm As String
  Dim sWhere As String
  Dim sArg As String

  sWhere = "請求書番号='" & Me.請求書番号 & "'"
  sArg = "'" & Me.請求書番号 & "'"
  sForm = DLookup("フォーム名","テーブル名/クエリ名","顧客ID='" & Me.顧客ID & "'")
  DoCmd.OpenForm sForm, , , sWhere, , , sArg
End Sub


呼ばれた各「請求データの入力フォーム」での処理

Private Sub Form_Open(Cancel As Integer)
  If (Me.Recordset.RecordCount = 0) Then
    Me.請求書番号.DefaultValue = Me.OpenArgs
    DoCmd.GoToRecord , , acNewRec
'☆    Me.ラベル1.Caption = "新規"
'☆  Else
'☆    Me.ラベル1.Caption = "既存"
  End If
End Sub


※「顧客ID」に対応した「フォーム名」情報ではなく、「会社名」なり「会社ID」が得られるのであれば以下のような感じかと
(会社IDが得られるとした場合)

Private Sub ボタン_Click()
  Dim sForm As String
  Dim sWhere As String
  Dim sArg As String

  sWhere = "請求書番号='" & Me.請求書番号 & "'"
  sArg = "'" & Me.請求書番号 & "'"
  Select Case DLookup("会社ID","テーブル名","顧客ID='" & Me.顧客ID & "'")
    Case 1
        sForm = "請求データの入力フォームA"
    Case 2
        sForm = "請求データの入力フォームB"
    Case 3
        sForm = "請求データの入力フォームC"
    Case Else
        sForm = "請求データの入力フォームETC"
  End Select
  DoCmd.OpenForm sForm, , , sWhere, , , sArg
End Sub

#2です。

意味合いが違ってましたね。

「顧客ID」に対応した「フォーム名」情報がテーブルで作られているとします。
もしくは、「顧客ID」と A社、B社、C社 などが紐付けされ、その社ごとに「フォーム名」情報が得られるとすると

ボタンがクリックされた時の処理例)

Private Sub ボタン_Click()
  Dim sForm As String
  Dim sWhere As String
  Dim sArg As String

  sWhere = "請求書番号='" & Me.請求書番号 & "'"
  sArg = "'" & Me.請求書番号 & "'"
  sForm = DLookup(...続きを読む

QPCで敵の動きを補足する軍事システム

「テイアーズ・オブ・ザ・サン」という映画を観ていると、アフリカのジャングルの中でアメリカ兵士がノートPCの画面をみて「10キロ離れた地点で30名ぐらいの集団がこちらへ向かっています」と報告する場面がありました。
 敵兵の位置がそんなに簡単にわかればいいのですが、これはどういったシステムなのでしょうか?
 画面では30ばかりの点が写っていました。

Aベストアンサー

 携帯電話か通信衛星かを使った相互連絡システムであると思われます。
 他の数多くの味方部隊の報告を受けた本部が、敵と味方の状況を知らせる地図を作成し、それを主人公の部隊に送っていると思われます。
 実際、その地図は人間が手作業で作ってるって設定だと思いますよ。

 俺はその映画は見てませんが、もしその主人公部隊が孤立無援の状態にあるのなら、敵の通信を傍受したか、あるいは丘の上にでも登って目視で確認したか、それかストーリーの都合で何の裏づけもなくそういう設定にしたか、どれかのはずです。

QAccessのメインフォームとサブフォーム

メインフォームのコマンドボタンからサブフォームのテーブルを操作することは可能でしょうか?

【メインフォーム】
   日付[_2006/2/3]   『回数A(コマンドボタン)』
   品物[_りんご]    『回数B(コマンドボタン)』
   製作所[_青森]

 【サブフォーム】
    社員コード 所属   氏名   回数A 回数B
    [_1234]  [_福島] [_山田] [_1]  [_0]
    [_2345]  [_山形] [_佐藤] [_1]  [_0]

とあるときに、『回数B(コマンドボタン)』をクリックすると、サブフォームの社員コード
「1234」と「2345」の回数Bに「1」(回数B+1)を入力し、回数Aを「0」(回数A-1)
としたいのです。

どのようにすればいいのでしょうか?
よろしくお願いします。

Aベストアンサー

VBAが使える(参照設定でVBを設定等)のであれば、「回数B」ボタンのプロパティのイベントのクリック時のイベントプロシージャー内に、
Me![サブフォーム名]![回数B] = Me![サブフォーム名]![回数B]+1
Me![サブフォーム名]![回数B] = Me![サブフォーム名]![回数B]-1
と命令することで出来ます。

Qシステム修復ディスクはシステムイメージ作成の都度?

CドライブにOS(Windows 7 Ultimate 64)がインストールされているのですが、システムイメージの作成をすると「システム修復ディスクの作成」をするように求められます。この「システム修復ディスクの作成」はシステムイメージの作成をした都度行わなければならないのでしょうか。それとも、1度「システム修復ディスクの作成」をしておけば、その後のいつ作成したシステムイメージであろうと、その1度作成したシステム修復ディスクを用いてシステムディスク(Cドライブ)の復元ができるのでしょうか。

例えば、次の(ア)~(エ)のようにしたとします。
(ア) 2月1日にシステムイメージの作成とシステム修復ディスクの作成をした。
(イ) 2月8日にシステムイメージの作成をした。
(ウ) 2月15日にシステムイメージの作成をした。
(エ) 2月22日にシステムイメージの作成をした。

この場合、(イ)~(エ)で作成したシステムイメージを使ってシステムディスク(Cドライブ)を復元するには、次の(a)、(b)のどちらでしょうか。

(a)
(イ)のシステムイメージを使ってシステムディスクを復元するには、(イ)のときにシステム修復ディスクを作成しておきそのシステム修復ディスクを使わなければならない。
(ウ)のシステムイメージを使ってシステムディスクを復元するには、(ウ)のときにシステム修復ディスクを作成しておきそのシステム修復ディスクを使わなければならない。
(エ)も同様。

(b)
(イ)のシステムイメージを使ってシステムディスクを復元するには、(イ)のときにシステム修復ディスクを作成する必要はなく、(ア)のときに作成したシステム修復ディスクを使えばよい。
(ウ)のシステムイメージを使ってシステムディスクを復元するには、(ウ)のときにシステム修復ディスクを作成する必要はなく、(ア)のときに作成したシステム修復ディスクを使えばよい。
(エ)も同様。

CドライブにOS(Windows 7 Ultimate 64)がインストールされているのですが、システムイメージの作成をすると「システム修復ディスクの作成」をするように求められます。この「システム修復ディスクの作成」はシステムイメージの作成をした都度行わなければならないのでしょうか。それとも、1度「システム修復ディスクの作成」をしておけば、その後のいつ作成したシステムイメージであろうと、その1度作成したシステム修復ディスクを用いてシステムディスク(Cドライブ)の復元ができるのでしょうか。

例えば、次...続きを読む

Aベストアンサー

http://windows.microsoft.com/ja-JP/windows7/Create-a-system-repair-disc
での解説の通り、システム修復ディスクの用途はパッケージ版インストールメディアが持つ機能の代替で使用するディスクにすぎませんので、一度作成すればOKです。

QAccess メインフォーム サブフォームにて

お世話になります。

Accessにて
メインフォームにコマンドボタンを置いて、クリックするとサブフォームのレコードが
次に行くようにしたいのですが、

コマンドボタン クリック
Forms![メインフォーム]![サブフォーム名].Form!フィールド名.SetFocus
DoCmd.GoToRecord , , acNext

メインフォームとサブフォームのレコードが次に行ってしまいます。
サブフォームだけ次のレコードに行くには、どのようにすれば良いのでしょうか。

分かる方教えて下さい。
宜しくお願いします。

Aベストアンサー

>Forms![メインフォーム]![サブフォーム名].Form!フィールド名.SetFocus


Forms!FMain!埋め込み0.SetFocus
DoCmd.GoToRecord , , acNext

以下の[サブフォーム表示コントロール名]はサブフォームそのものの
名前でなく、デザインビューでサブフォームを表示するために設定
するコントロールの名前で、初期値は[埋め込み0]のような名前
であることに留意をしてください。もしサブフォームと同じ
名前に設定しているならば問題はありませんが。

以上を踏まえて、たとえば、

Forms![メインフォーム]![サブフォーム表示コントロール名].SetFocus
DoCmd.GoToRecord , , acNext

これで、サブフォームの次のレコードに移動します。
もし、質問の中の特定のフィールドにフォーカスを
当てたいのであれば、移動後にその特定のフィールドに
フォーカスを当てればいいので、

Forms![メインフォーム]![サブフォーム表示コントロール名].SetFocus
DoCmd.GoToRecord , , acNext
Forms![メインフォーム]![サブフォーム表示コントロール名].Form![フィールド名].SetFocus

これで、レコードを移動したときにフォーカスは
特定のフィールドに当たっています。

>Forms![メインフォーム]![サブフォーム名].Form!フィールド名.SetFocus


Forms!FMain!埋め込み0.SetFocus
DoCmd.GoToRecord , , acNext

以下の[サブフォーム表示コントロール名]はサブフォームそのものの
名前でなく、デザインビューでサブフォームを表示するために設定
するコントロールの名前で、初期値は[埋め込み0]のような名前
であることに留意をしてください。もしサブフォームと同じ
名前に設定しているならば問題はありませんが。

以上を踏まえて、たとえば、

Forms![メインフォーム]![サブフォー...続きを読む

Qシステムの復元がないのですが

ウインドウズ7で、アクセサリ→システムツール→システムの復元のはずが
システムツールの中に、システムの復元だけがありません。
仕方なく、メンテナンスから、復元を試しました。
システムツールの中にシステムの復元を作成する方法、または
システムの復元が、どうしたらシステムツールの中にあるようにできますか?
使用してるPCは、vaioのノートPCです。
出来るだけ、わかりやすい回答をお願い致します。

Aベストアンサー

7の場合のシステムの復元の場所は、

スタート → コントロールパネル(右の欄です) → システムとセキュリティ、で
一番上の欄の『アクションセンター』のコンピューターシステムを以前の状態に復元を
クリックすればありますよ。

QACCESS VBA メインフォーム及びサブフォームのフィルタのクリア

ACCESS VBA初心者です。ネット上の書き込みを参考に下記のようなフォームを作成しデータ検索したいのですが、うまくいかず、ネット上の情報を参考に色々トライしてみたのですが解決できません。

顧客名簿で顧客(会社)名で検索し、当該顧客の関係者(複数)をサブフォーム(帳票形式)に表示しています。さらにサブフォームに表示された一覧から、氏名、所属部署等で検索をかけています。
ところが、メインフォームに設けたテキストボックスで検索した結果をクリアするとき、サブフォームの検索を掛ける前だと、クリアできるのですが、サブフォームの検索を掛けた後では、メインフォームで検索した会社名をクリアできません。サブフォーム内の再検索、クリアは何度でもできます。
サブフォームの検索を掛けた後でも、メインフォームの検索値をクリアする方法をご教示ください。
各種作業のコードは下記の通りとしています。

メインフォームの検索コード
Dim dbs As Database
Dim qdf As QueryDef
Dim rst As Recordset
Set dbs = CurrentDb
Set qdf = dbs.QueryDefs("クエリ名")
With qdf
.Parameters("[forms]![フォーム名]![検索用フィールド名]") = Forms!フォーム名!フィールド名
Set rst = .OpenRecordset
.Close
End With
rst.Close
DoCmd.OpenQuery "クエリ名", acViewNormal
DoCmd.Close acQuery, qdf.Name, acSaveYes

メインフォームの検索クリアコード 
 Me.検索用フィールド名 = ""
  Dim dbs As Database
Dim qdf As QueryDef
Dim rst As Recordset
Set dbs = CurrentDb
Set qdf = dbs.QueryDefs("クエリ名")
With qdf
.Parameters("[forms]![フォーム名]![検索用フィールド名]") = Nothing
Set rst = .OpenRecordset
.Close
End With
rst.Close
Me.[サブフォーム名].Form.Requery
 ※検索値をNullにしてFilterOn=True にする方法(下記サブフォーム内の検索クリアの方法)でも結果は同じでした。

サブフォーム内の検索コード
 Dim sFilter As String
sFilter = vbNullString
sFilter = "検索適用フィールド名Like '" & Me.サブフォーム内の検索用フィールド名.Value & "'"
Me.サブフォーム名.Form.Filter = sFilter
Me.サブフォーム名.Form.FilterOn = True

サブフォーム内の検索クリアのコード
 sFilter = vbNullString
Me.サブフォーム内の検索用フィールド名 = vbNullString
Me.サブフォーム名.Form.Filter = sFilter
Me.[サブフォーム名].Form.FilterOn = True
Me.[サブフォーム名].Form.Requery

よろしくお願いします。

ACCESS VBA初心者です。ネット上の書き込みを参考に下記のようなフォームを作成しデータ検索したいのですが、うまくいかず、ネット上の情報を参考に色々トライしてみたのですが解決できません。

顧客名簿で顧客(会社)名で検索し、当該顧客の関係者(複数)をサブフォーム(帳票形式)に表示しています。さらにサブフォームに表示された一覧から、氏名、所属部署等で検索をかけています。
ところが、メインフォームに設けたテキストボックスで検索した結果をクリアするとき、サブフォームの検索を掛ける前だ...続きを読む

Aベストアンサー

ACCESS2007でしたか....
それだと
https://support.microsoft.com/ja-jp/kb/941800
が原因かもしれません....

Q「システム」がつく理由

世の中には~システム、という言葉が沢山有りますよね。
じゃぁ、何でシステムがつくのか?と聞かれたら、うなってしまいます。
例えば金融システム。金融システムとはどういうもの、という説明はあっても、何でシステムなのか、という説明って見つからないんです。
以下の4つの事について、どなたか教えて下さい!!
・金融システム
・価格システム
・給与計算システム
・ネットワークシステム

よろしくお願いします!!

Aベストアンサー

金融システムについては参考URLを見てみて下さい。

価格システムは
http://www.asahi-net.or.jp/~GA2A-MYZK/mare/mare022.html

給与計算システム
http://www.ntis.co.jp/product/officeh/kyuyo.htm

ネットワークシステムに関しては多岐にわたって使われているので洞行った場面でのものかが分からないのでちょっと答え切れません。

色々苛部手いるときに面白いページを見つけたので紹介しておきます。

http://village.infoweb.ne.jp/~fwgf2942/SCNews/hpblock99/SCNews99.html

ここに「システムとは?」という話が載っています。

参考URL:http://www.geocities.co.jp/WallStreet-Stock/3120/sub1html/koukousei/ginnkou8.htm

QACCESSで、メインフォームとサブフォームがあるとき・・・

Accessで、メインフォームとサブフォームがあり、メ
インフォームのテキストボックスで期間を指定し、再
クエリを行うマクロボタンでサブフォーム上に期間指
定したデータのみが表示されるようにしています。

また、Access起動時に開くフォームがあり、そのフォ
ームに、先ほど上述したメインフォームが開くマクロ
ボタンを作成したところ、パラメータの入力画面が出
てきてしまいました。

恐らく、サブフォームの抽出用のクエリに設定してあ
るものだと思いますが、これが表示されないようにす
ることは出来ないのでしょうか?

Aベストアンサー

起動時に開くフォームとその抽出設定されているフォームが同時に開こうとしているためでしょう。
ボタンを作成しただけ?ですよね。
起動時に開くフォームに作ったボタンのプロパティでイベントはクリック時になっていますか?
ボタンのイベントをクリック時に書いてあればクリックされるまでは開かないはずです。
そのボタンのイベントと作ったマクロを確認してみてください。なにか起動時に開くフォームと一緒に開こうとする部分はないですか。


人気Q&Aランキング

おすすめ情報