ACCESS総合相談所 その4

このエントリーをはてなブックマークに追加
1名無しさん
・質問する人は可能な限り具体的に書くこと
・回答がなくてもキれない、泣かない、怒らないこと
・分かる人はできるだけ回答して下さいませ

前スレ
ACCESS総合相談所 その3
http://pc.2ch.net/test/read.cgi/bsoft/1019087338/

過去スレ
ACCESS2000総合相談所 (倉庫でお待ちしてます)
  http://pc.2ch.net/bsoft/kako/965/965614164.html

ACCESS総合相談所 その2
  http://pc.2ch.net/test/read.cgi/bsoft/1007987001/

スレ建て初めてです、これでいいのでしょうか?

>>1
スレ立てお疲れさま

# dat落ちしたスレはコメント書いておくと親切かなと。
# (dat落ち) とか (html化待ち)とか。(最近、なかなかhtmlにならんけど
win98SEを使用している初心者です。
Accessの購入を検討中なのですが、扱うデータには
フランス語を入力する必要があり疑問になっていることがあります。

キーボードのプロパティで フランス語(カナダ)キーボードを追加したところ、
WordやExcel、OutlookExpress等では問題なく入力できるのでよいのですが、
例えばメモ帳では入力できませんよね。入力の不可がソフトに依存するって
ことは、Accessではどうなんだろう?って心配になりました。同じOffce製品
だから大丈夫だとは思うのですが。

Accessでは普通にキーボードからのフランス語入力は可能でしょうか?
どなたか教えて下さいませ。お願いします。
FileMakerスレでも同様の質問をしていますが怒らないで下さい。(汗
レスはきちんとしますので…。
4名無しさん@そうだ選挙にいこう:02/07/24 17:10
前スレ997さん。ありがとうございます。ヘルプが表示されなかったので、てっきり問題外のことなのかと思いました。
ヘルプが壊れているようです。お手数おかけしました。

変数sqlをクエリで開くという動作は、どうしたらよいのでしょうか?
最終行に、 DoCmd.OpenQuery "Q順位表示クエリ", acViewNormalというのは書いてあって、
それをいじることは出来ます。それとは別の作業でしょうか?

お手数おかけして、ほんとうにすみません。宜しくお願いします。
5名無しさん@そうだ選挙にいこう:02/07/24 17:29
フォームに作った追加クエリボタンクリック時に
「追加クエリで全てのレコードを追加できません」というエラーがでるんですが
このエラー番号がわかりません。
どうやって調べたらよいですか?

Access97です。
6前スレ997:02/07/24 17:49
SELECT T2002年度生徒名簿マスタ.学年, Tテスト順位.英語, Tテスト順位.英語順位
FROM Tテスト順位 INNER JOIN T2002年度生徒名簿マスタ ON Tテスト順位.生徒氏名
= T2002年度生徒名簿マスタ.生徒氏名 where Tテスト順位.第X回 =
" & Forms![F選択フォーム]![cmb回数] & " And T2002年度生徒名簿マスタ.学年
=" & Forms![F選択フォーム]![cmb学年] & " ORDER BY Tテスト順位.英語 DESC;

前スレ994のVBAを動かすと変数sqlには上記の文字列が入るでしょ。
で、>Set rs = db.OpenRecordset(sql)
ここで変数rsにsqlをぶち込んでるわけだよね。
その後rs.Editしようとするとエラーが出る。helpにeditと入力すると
>次のような場合に Edit メソッドを使用するとエラーが発生します。
>Recordset オブジェクトが読み取り専用で開かれている場合。
てのが出て来た。だからRecordsetオブジェクト=rs=sql=一番上のヤツが
読み取り専用か編集可能かみてみてね、ってのが前スレ997だったのことよ。

で、新しいクエリを作ってテーブルの表示で何も選ばないで閉じるすると
左上に「SQL」ってボタンが出ると思う。普段はビューとデザインビューの
切替えをする所ね。それを押すとテキストエディタみたいになるからそこに
一番上のSelect〜DESC;をコピペしてビューに切替えてみて。
その状態で編集ができるなら前スレ997の理由ではないとわかるし、編集が
出来ないなら編集できるクエリのSQL文を対象にEditしましょ。ってこと。
7名無しさん@そうだ選挙にいこう:02/07/24 18:19
>前スレ996
>★このとき、接続はできるのですが、一旦作成されていたテーブルが消えてしまいます。
>  これは問題ないのでしょうか?
>その後、datファイルからリストアすると復元はされます。
>ただ、簡単なテーブルしかまだ作っていないので、3)で消える(一覧からは無くなる)というのが
>問題ないのか心配です。

だいじょぶ。一時的なASPで作ったデータベースは、あくまでも空の
データベースで、それが見えているだけなので。
その後DATファイルからリストアして元のテーブルが復元されれば
問題ありません。

>どなたかのコメントで、テーブルはadpに入っているということをアドバイスいただきましたが

フォームはadpですがテーブルはdatです。
8名無しさん@そうだ選挙にいこう:02/07/24 20:53
>>7
 今、家に帰ってきて、2002同士でデータのコピーが
できることを確認しました。
 色々お世話になりました。とても1人では解決できませんでした。
本とかにも出てませんし。。。
 これで家と会社で開発できます。
ありがとうございました。
9名無しさん@そうだ選挙にいこう:02/07/24 20:56
>>6
ありがとうございます。ちょっとやってみます。本当に助かりました
>>前スレ986
VBAと関数は必須。やめるなら今のうちです。
自分は絶対こんな方法はとりませんから。(w

まず、クエリ部分は↓な感じかな?
 f_ConvertCalcData(NZ([フィールド名]))


次にVBA部分は

'/// クラスモジュール
Private Sub テキスト0_AfterUpdate()
 With テキスト0
  .Value = f_ConvertNum(Nz(.Value))
 End With
End Sub

'/// 標準モジュール
Function f_ConvertNum(tmp As String) As String
 If IsNumeric(tmp) Then
  f_ConvertNum = Format(tmp, "\\#,##0")
 Else
  f_ConvertNum = tmp
 End If
End Function

Function f_ConvertCalcData(tmp As String) As Currency
 tmp = Replace(tmp, "\", "")
 tmp = Replace(tmp, ",", "")
 f_ConvertCalcData = Val(tmp)
End Function
11名無しさん@そうだ選挙にいこう:02/07/25 00:36
>10
ありがとうございます !! もうレスつかないと思ってたので人の情が目に染みるよ〜 ゚・(´Д⊂・゚・
VBA素人な自分には ( ゚д゚)… な内容ですが、見よう見まねでやってみます。
.
1210:02/07/25 00:43
>>11
とりあえず頑張って!また分からなかったら質問して。
13名無しさん@そうだ選挙にいこう:02/07/25 08:35
前スレで2,3度同様の内容をお伺いし、その都度教えて頂きましたが
私のスキル不足から、その内容が条件に合致しているか判断が出来ず
後から聞き直しをする無様な形になってしまいました。

ですが、いま一度まだAccess駆け出しの私に 諸先輩方の力をお貸しください。


◎構築概要
 顧客管理DBで、顧客通し番号(オートナンバー)をベースに各伝票の顧客番号に
 一対多のリレーションを組み、その伝票をサブフォームにて内容を入力するようにしています。

 そして1伝票内容が項目多数で且つ、ほぼ同様内容を記入する為
 毎々の手入力やコンボボックスを利用する事なく
 既に記入済みの雛形(テンプレート)をコマンドボタンで
 入力すべき(伝票)サブフォームに内容を送り、省力化をしたいと考えております。

 ※DBの構築イメージとしては、顧客一人一人がバインダー各1冊に相当し
 中に閉じられた用紙1枚1枚がサブフォームです。
 その用紙は記入すべき各項目が決まった定型フォーマットです。
 (実DBと若干違い、問題点だけクローズアップしています。)

◎現時点の問題点
 雛形を追加クエリーで、サブフォーム元のテーブルに内容を加える事は出来ましたが
 リレーションの内容が反映されず、顧客番号が空欄の伝票テーブルになり
 結果、現在開いているサブフォームに表示がされない状況です。


定型フォーマットの種類を"セットコード"として、選択可能になったりと
教えて頂いた手法で、関連した問題の外堀を埋めることは出来ましたが
本丸をどうしても私の技量では、クリアする事ができませんでした。

何卒よろしくお願い申し上げます。

>>13
なんか"無駄な前振り"と"俺語"で何を言いたいのかさっぱりわからんです。
実際に作っているモノのモデルを簡潔に説明していただけませんか?
データ構造{テーブル、フィールド構成}、箇条書きのロジックなど。

質問の内容を想像するのって結構疲れるんですよ。
>>13
サブフォームを経由せずにテーブルにデータを追加した場合
・フォームの再描画 = repaint
・レコードセットの再読み込み = requery
のいずれかでデータ表示を更新できるんだけど。
内部の処理をどうやっているのかわからんと、なんとも言えない。
1613:02/07/25 11:19
>>14
レスをありがとうございます。
それとAccessに不慣れゆえ、うまく説明できない所があり申し訳ございません。

現在顧客管理DBを作成しており、氏名や住所、電話などの基本情報を主テーブルとして
担当者や発注部署、発注内容などをリレーションで結んでおります。

 ◎"顧客番号"(主キー/オートナンバー),"氏名","住・・・ <主テーブル/メインフォーム> 
    ┃
    ┃【一対多のリレーション】
    ┃ 
 ◇"顧客番号","通し番号"(主キー),"発注名","数量", "単価","金額" <リレーションテーブル>

                            ↑(コマンドボタンでコピー)

                      ┌ ・ "AAA","5","70000" <別テーブルデータ>
                    ※ │ ・ "BBB","3","10000" 
                      │     ・              (数は70入力ぐらいです)
                      └ ・ "ZZZ","7","12000"

◇のリレーションテーブルのうち、"発注名","数量", "単価","金額"をサブフォームで
項目入力をするするようにしています。

 そして本題ですが、サブフォームで入力する内容が >>13で書きましたように
 1度に "ほぼ"同じ内容を数多く入力する為に、毎々手入力やコンボボックスでは無く
 別テーブルで既に用意したデータ※を、コマンドボタンで一度に現在入力中のサブフォームに
 コピーができるようにしたいと考えております。

 追加クエリーですと、※テーブル→◇テーブルにデータを送れましたが
 "顧客番号"とリンクしていない為に、サブフォームでの作業とは無縁になってしまいます。

蛇足ですが、普通の商品販売のDBですと、その発注たび事に入力作業になるかと存じますが
当方は特殊な業務体系で、1顧客−1発注(品目は多数)です。


誠に恐れ入りますが、実力者の方々のお知恵をお貸し頂けますようよろしくお願いいたします。
1713:02/07/25 11:22
>>15
こちらもレスを頂きありがとうございます。

>>16で書きました構造で、今回とは合致しないのかと思いますが
再描画の手法など、今後の参考に是非させて頂きます。
>>13
※のテーブル(もしくは※から作ったクエリ)をレコードソースにしたフォームを
◎と◇のメイン-サブのフォームの隣に別で作る。
※のフォームにコマンドボタン「フォーマット取得」を作って、クリック時に
データを変数に保存。保存先の変数は変数の保存用のモジュールを作って
Publicで宣言してボタンクリック時のイベントが終わっても使えるようにしておく。

◎フォーム内の◇サブフォームにボタン「フォーマット貼りつけ」を作って、
クリック時のイベントに上記で変数に置いたデータを◇のフィールドに貼りつけ。
194:02/07/25 11:55
>>6
やってみたのですが、編集することが出来ませんでした。
一つ疑問なのですが、私のVBAはSQLで抽出条件を指定し、
それを元に順位を出し、テーブルに格納する、というものだと思います。
クエリーが編集できないのは複数テーブルから選択しているからだというのはわかったのですが、
クエリーを編集しているわけではないと思うのです。クエリは順位付けのデータ、という位置付けではないのでしょうか?

学年でも抽出を使う限り、どうやっても無理でしょうか?

本当に、お手数おかけします。よろしくお願いいたします。 
20名無しさん@そうだ選挙にいこう:02/07/25 12:20
>>19
更新クエリ部分でエラーなら次のヘルプを見るといいYO。

Access97の場合
目次→クエリ→アクションクエリの作成→更新クエリ→トラブルシューティング:更新クエリで
「更新可能なクエリでなければ・・・・・・・」

Access2000の場合
目次→ヘルプ→アクセスのトラブルシューティング→トラブルシューティング:クエリ→トラブルシューティング:更新クエリで
「更新可能なクエリでなければ・・・・・・・」

Access2002の場合
持ってないので知らん。
2113:02/07/25 12:42
>>18
ご教授ありがとうございます。
文章を読みましたところ、まだイメージですがこの方法でうまく出来そうな感じがします。
ただ恥ずかしながら、まだ当方駆け出しでコードビルダなどVBAをほとんど使いこなせなず

>データを変数に保存。保存先の変数は変数の保存用のモジュールを作って
>Publicで宣言してボタンクリック時のイベントが終わっても使えるようにしておく。

この心臓部の所が、どのように記述すれば良いか分かりません。
お手数をお掛けし、誠に恐縮ですがもうひと押し教えて頂きますでしょうか。
よろしくお願いいたします。
226で13:02/07/25 13:19
>4
Tテスト順位を更新したいんだよね?
だったら、Tテスト順位をDAOで開いてseekでレコード検索して
そこに書き込むでどうだろう?って20さんのレスで解決できるなら
そのほうが軽いと思われるからそのほうが良いね。

あとね、Tテスト順位.生徒氏名 = T2002年度生徒名簿マスタ.生徒氏名が
気になるね。Tテスト順位に生徒IDとか主キーに設定してるフィールドと
同じフィールドを持ってそれで連結した方がいいよ。
同姓同名とか1回目のテスト後、生徒から「漢字間違えてます」とか
言われてT2002年度生徒名簿マスタを直したら、その生徒の順位出なくなるよ?

あとねあとね、T2002年度生徒名簿マスタって名前のテーブルってことは、
毎年こういうところも修正しないといけないよね?
DAOとか使うのもいいけどもう少しデータベースの基本の所を勉強した方がいいような気がするよ。

>13
モジュールを新規で作成。
Option Compare Database
Option Explicit
の下に
Public Format_HattyuMei As String
Public Format_Suuryou As Integer
Public Format_Tanka As Currency
と書いてモジュールを適当に名前を付けて保存。

「フォーマット取得」ボタンのイベントに
Private Sub フォーマット取得_Click()
Format_HattyuMei = Me![発注名]
Format_Suuryou = Me![数量]
Format_Tanka = Me![単価]
End Sub

「フォーマット貼りつけ」ボタンのイベントに
Private Sub フォーマット貼りつけ_Click()
Me![発注名] = Format_HattyuMei
Me![数量] = Format_Suuryou
Me![単価] = Format_Tanka
End Sub

こんな感じで。フォーマット取得しないでフォーマット貼りつけを
押したときとかのエラーをトラップするのはがんばってみてね。
236で13:02/07/25 13:22
6で13 間違い
6で18 でした。
244:02/07/25 13:35
>>20ありがとうございました。参考になりました。となると、私の作った下記のVBAはどうやっても動かすことはできないと
いうことですね。Tテスト順位に学年をいちいち打ち込んで、ひとつのテーブルから作るしか方法は無いのでしょうか?

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim fldNo As Field
Dim flddata As Field
Dim count As Integer
Dim sql As String
Dim jhozon As Integer
Dim juni As Integer

sql = ""
sql = sql & " SELECT"
sql = sql & " T2002年度生徒名簿マスタ.学年," & vbCrLf
sql = sql & " Tテスト順位.英語," & vbCrLf
sql = sql & " Tテスト順位.英語順位" & vbCrLf
sql = sql & " FROM Tテスト順位 INNER JOIN T2002年度生徒名簿マスタ ON
          Tテスト順位.生徒氏名 = T2002年度生徒名簿マスタ.生徒氏名" & vbCrLf
sql = sql & " where Tテスト順位.第X回 = " & Forms![F選択フォーム]![cmb回数]
 "And T2002年度生徒名簿マスタ.学年 =" & Forms![F選択フォーム]![cmb学年] & vbCrLf
sql = sql & " ORDER BY Tテスト順位.英語 DESC;"

Set db = CurrentDb
Set rs = db.OpenRecordset(sql)
Set fldNo = rs.Fields("英語順位")
Set flddata = rs.Fields("英語")
If rs.BOF = False Then
rs.MoveLast
rs.MoveFirst
Do Until rs.EOF
rs.Edit 

count = count + 1

If flddata <> jhozon Then
juni = count
jhozon = flddata
End If
fldNo = juni
rs.Update
rs.MoveNext
Loop
rs.Close

End If
db.Close
count = 0
Set rs = Nothing
Set db = Nothing

DoCmd.OpenQuery "Q順位表示クエリ", acViewNormal


2513:02/07/25 13:36
>>22
具体的な方法の伝授をして頂き、本当にありがとうございます。
この後、頑張って作ってみます。
264:02/07/25 13:42
>>22
確かにおっしゃる通りでした。ハッとしました。テーブル名はこれじゃあいけませんね。今のうちに直します。
全て書き直さないと・・・・・・。気づかなかった。生徒IDもそうですね・・・・。勉強不足でした。
ご指摘ありがとうございました。感謝です。

Tテスト順位をDAOで開いてseekでレコード検索というのは、SQLを使うことなくということでしょうか?
私のVBAは元々サンプルに手を加えただけなので、細かい個所を良く理解できてない状態です。
もう少し、勉強します。




276:02/07/25 15:47
>4
Tテスト順位は今、
テスト順位ID オートナンバー型
生徒氏名 テキスト型
第X回 数値型
英語 数値型(得点が入るとこでいいんだよね?)
英語順位 数値型
国語 数値型 以下省略
みたいになってると思うんだけど、テスト順位IDの下に
生徒ID 数値型 って追加で作る。で、T2002年度生徒名簿マスタの
生徒氏名と生徒IDが一致するようにしてあげる。たぶん更新クエリが
今回の原因と同じ原因でできないから、頑張って手でやるか、
現在同姓同名がいないなら、一時的にT2002年度生徒名簿マスタの生徒氏名の
インデックスを「いいえ」から「はい (重複なし)」に変更してから更新クエリで。
(終わったら戻さないと同姓同名の生徒が入力できないよ)

で、ここを>Tテスト順位.生徒氏名 = T2002年度生徒名簿マスタ.生徒氏名" & vbCrLf
こう>Tテスト順位.生徒ID = T2002年度生徒名簿マスタ.生徒ID" & vbCrLf
したらたぶんできるよ。生徒IDってのはT2002年度生徒名簿マスタの主キーに
なってるフィールドのことだから、自分のとこのにあわせてね。

で、どうして出来なかったのかというと、このクエリ(SQL)は一対多のクエリなんだけど、
(T2002年度生徒名簿マスタが一、Tテスト順位が多。Tテスト順位に同じ生徒の名前が
何度も出てくるでしょ?第X回が1、2、3と。)一側のテーブルが一意に指定できないから。
同姓同名とか同じ生徒を重複して入力とか出来ちゃうでしょ。
生徒氏名で連結してると同姓同名が今いなくても、テーブルの設定上「ありうる」から
ダメなんだね。ためしにT2002年度生徒名簿マスタの生徒氏名のインデックスを
「いいえ」から「はい (重複なし)」に変更したら、>>24のままでも動くと思う。
でもそうすると、同姓同名が入力できなくなっちゃう。だからTテスト順位に生徒IDを置く。

でね、今Tテスト順位の入力をどういう具合にしてる?
生徒の名前を入力して、英語の点、国語の点、数学の点、何回目のテストか、
って入力してたりしない?齊藤クンを斉藤と入力したらアウトだよね。
これもTテスト順位には生徒氏名じゃなくて生徒IDを置かないといけない理由の一つ。
28 :02/07/25 17:21
Accessをインストールしていないマシンで、*.mdb を
読みたいのですが、エクセルのビューワーのような感じで
ランタイムのようなものはあるのでしょうか。
MSのサイト・過去ログを回って見ましたが見あたりませんでした。

スナップショットビューワーというものがあるみたいですけど、
*.snp が対象らしいので。

mdb2csv みたいなツールはないのでしょうか?
(Access無しで使えるもの)
29名無しさん@そうだ選挙にいこう:02/07/25 18:14
>>27
ありがとうございます!!本当に感謝感謝です!!
早速、テーブル名と、生徒IDなどを追加してみます。
基本的なことですね・・・・。勉強不足だ。
生徒IDを作成し、とりあえず手打ちでやります。
VBAもやってみます。本当にありがとうございました!
ネットで商売をはじめたんですが、作業がだるくて逝きそうです。アドヴァイスお願いします。

1日平均で30件くらいの注文が入ってきて、ほぼ毎日、商品の発送作業があるため、廃人生活です。
ショッピングカート(cgiプログラム)から吐き出されるデータを利用して、
クレジットカードの決済のデータ(CSV形式)と、発送先のお客の住所データ(CSV形式)を
Accessに手作業で取り込んでます。(データのインポートってやつです。)

毎日毎日、同じ作業でアフォみたいで嫌で死にたくなって2chに来ました。
毎日の作業を軽減したいんですが、決まった形式のCSVデータを、
一発で楽に取り込む取り込む方法ってあるんでしょうか?

2つのCSVをポンポンとアクセスに放り投げてすぐに出力!みたいな
夢の生活がしたいです。何すりゃいーのよ?教えてくれYO!
>30 Openステートメントしる。
3230:02/07/25 21:20
とりあえず、myバイブル@「はじめてのAccess」に載ってません。>Openステートメント?
今から修行をはじめて、数日程度で体得できる術、希望。。。
むりっすかね?
>>30
VBAのTransferTextメソッド[acImportDelimパラメータ付き]で
コード書けば半自動くらいのものはできるんじゃないですか?
やらなきゃならん事項は結構ありますけど。ファイルの種類判別その他もろもろ。

ま、現在、どんなやり方してるのかさっぱりわからんからねぇ
>>32
小規模プログラムの作成経験、ディレクトリ & ファイル・サーチメソッドを
ヘルプ引きながら見つけ出す根性、文字列操作のコードを書ける等の条件を
備えていれば、一週間程みっちりやればできます。 たぶんね

プログラミングつうても、パラメータセットしてメソッド呼び出しが大半ですし。
3531:02/07/25 22:01
楽するのにはね、お金かスキルか人徳が必要。
お金で解決->どっかに頼む。
スキルで解決->Access VBAって書いてある本買ってきて数ヶ月がんばれ。
人徳で解決->詳細なレスを貰えたり、黙っててもだれかがやってくれる人徳を身に付ける。
3630:02/07/25 22:28
まぁその、、、、つまり、、、、ありがとうございました。逝ってきます。(w
37名無しさん@そうだ選挙にいこう:02/07/26 01:00
誰か>>5に答えようよ

エラートラップで処理できないエラーもあるの?
38名無しさん@そうだ選挙にいこう:02/07/26 01:32
「追加クエリで全てのレコードを追加できません」というエラーが出ないように
あらかじめチェックしてやるほうが良いのではないかと思ったり。
39名無しさん@そうだ選挙にいこう:02/07/26 02:20
教えてください。
RS-232Cに信号を送るにはどうしたらよいのでしょうか。

AccessVBAからは無理でVBを使うしか方法はないでしょうか。
何か参考になる事例などがあれば教えてください。
40名無しさん@そうだ選挙にいこう:02/07/26 05:41
フォームでデータシート書式で表示をしてるのですが
作業領域(2次データ)に使っている1項目(列)を
見えなくしたいのですが、うまくできません。

単票フォームだと不可視にできるのですが・・・
厨房な質問でごめんなさい。よろしくお願いします。

41HOKUTO:02/07/26 09:05
>>37,>>5
このエラーはトラップできない、フォームの「エラー時」イベントでも無理。
38さんのいうとおり、事前にチェックさせるしかない。
エラーを出さずに強制処理させるというなら、Executeメソッドで追加クエリーを実行すればいい。

CurrentDb.Execute "追加クエリ名"
42HOKUTO:02/07/26 09:12
>>39
RS-232Cに送るだけなら、対象の"Comポート"をOpenステートメントで開いてやればいい。
その後、通常、ファイルに書き込むの同じ要領でPutとか使ってデータを転送する。

RS-232Cとのやり取りはActiveXコントロールを使った方がよいと思うよ。
フリー/シェアでたくさん出ている。
43HOKUTO:02/07/26 09:18
>>40
データシートの状態で、対照の列を列選択。
メニューから「書式」→「列を表示しない」で消える。

ただ、実際には消えているわけではなく、列幅が0になっただけなので。
44名無しさん@そうだ選挙にいこう:02/07/26 09:29
>>42 HOKUTOさん
ありがとうございます。
早速、検索してチャレンジしてみます。
45質問です。:02/07/26 10:45
簡単というか初歩的な事で恐縮なのですが・・・
現在会社でデータベースを作成中です。
フォームを使って単票形式の物を印刷しようと画策しておりますが、
各レコードの末尾というか区切りの位置に横線が入ってしまいます。
フッタには何も記入していないのですが、横線一本のフッタが入ってしまっている形です。
なんらか設定で出てしまうものなのでしょうか?
ファイルによっては出ない場合もあり、途方にくれております。
オフィス2000を使用しています。
よろしくご指導お願いします。
>45 区切り線が はい になってない?
4745:02/07/26 14:40
>>46
ありがとうございます!
解決いたしました!
こんな初歩的な事で板を汚しまして申し訳ありませんでした。
484:02/07/26 14:58
たびたびお世話になります。どうしてもうまくいかなくて、また知恵を貸していただきたいのです。

sql = ""
sql = sql & " SELECT"
sql = sql & " Tテスト順位.英語," & vbCrLf
sql = sql & " Tテスト順位.英語順位" & vbCrLf
sql = sql & " FROM Tテスト順位" & vbCrLf
sql = sql & " where Tテスト順位.第X回 = " & Forms![F選択フォーム]![cmb回数] & vbCrLf
sql = sql & " ORDER BY Tテスト順位.英語 DESC;"

Set db = CurrentDb
Set rs = db.OpenRecordset(sql)
Set fldNo = rs.Fields("英語順位")
Set flddata = rs.Fields("英語")
If rs.BOF = False Then
rs.MoveLast
rs.MoveFirst
Do Until rs.EOF
rs.Edit

count = count + 1

If flddata <> jhozon Then
juni = count
jhozon = flddata
End If
fldNo = juni
rs.Update
rs.MoveNext
Loop
rs.Close

End If
db.Close
count = 0
Set rs = Nothing
Set db = Nothing


このVBAのSQL部分を下記のように書き直しました。ところが、型が一致しません。といわれてとまってしまいます。
新規クエリで、編集できることは確認しました。一体なにが間違っているのでしょうか?教えてください。


sql = ""
sql = sql & " SELECT"
sql = sql & " T生徒名簿マスタ.学年," & vbCrLf
sql = sql & " Tテスト順位.英語," & vbCrLf
sql = sql & " Tテスト順位.英語順位" & vbCrLf
sql = sql & " FROM T生徒名簿マスタ INNER JOIN Tテスト順位 ON T生徒名簿マスタ.生徒ID = Tテスト順位.生徒ID & vbCrLf"
sql = sql & " where T生徒名簿マスタ.学年 = " & Forms![F選択フォーム]![cmb学年] & vbCrLf
sql = sql & " AND Tテスト順位.第X回 = " & Forms![F選択フォーム]![cmb回数] & vbCrLf
sql = sql & " ORDER BY Tテスト順位.英語 DESC;"

Set db = CurrentDb
Set rs = db.OpenRecordset(sql)←ここで止まってしまいます。

何度もお世話になります。よろしくお願いいたします。
49しろ:02/07/26 15:22
>48
・・・・
sql = sql & " ORDER BY Tテスト順位.英語 DESC;"

この行の後に
Debug.Print sql
と入れて実行してみて、デバッグウィンドに表示されたSQLが
ちゃんとクエリで動くか検証してみてはいかがでしょう?
50しろ:02/07/26 15:59
>48 追加
sql = sql & " FROM T生徒名簿マスタ INNER JOIN Tテスト順位 ON T生徒名簿マスタ.生徒ID = Tテスト順位.生徒ID & vbCrLf"
この行怪しいのですが、コピペミス?
  & vbCrLf
が""の中に入っちゃってますが。
51名無しさん@そうだ選挙にいこう:02/07/26 16:47
質問です。Access2000使っています。フォームのフッターで
一つのフィールドに特定の値が入っているレコード数をカウントしたいのですが
うまくいきません。Exellで言うところのCountifの機能を果たす関数が見つからず
途方に暮れています。
どなたかご教授お願いします。
>>48
落ち着いて事象を見極める目を養ってみてはいかがですか?
53しろ:02/07/26 16:52
>51
Excelとは切り離して考えたほうがいいと思いますよ。
で、Dcount関数はどうですか?
5451:02/07/26 17:38
>>53
ありがとうございます。HELP見ても引数がよく分かりませんが
自力で出来そうです。
あと、関数はやっぱりEXELLとは別ものなんですね
55名無しさん@そうだ選挙にいこう:02/07/26 18:14
vbCrLfは何のために必要なの?
566:02/07/26 18:22
>55
4さんがサンプルを修正したものと言ってたんで、そのときすでに付いてたんじゃないかな?
で、用途はDebug.Print sqlした時に横に長くならないように、だと思う。
>>54
実現する手段はひとつにあらず
sum()とiif()の組み合わせでもできます
詳細にフィールドA,フィールドB,フィールドCと並ぶフォーム(帳票形式)の
フィールドAにおいて、特定の値を持つデータの出現をカウントする場合
・フッターに非連結テキストボックスを配置する(集計用)
・非連結テキストボックスのプロパティ-データ-コントロールソースに
 =Sum(IIf(条件式, 戻り値))を設定する
例えば
フィールドAがテキスト型で値"abc"をカウントする場合-> =Sum(IIf([A]="abc",1))
フィールドAが数値型で値10以上をカウントする場合-> =Sum(IIf([A]>=10, 1))
フィールドAがテキスト型で値10以上をカウントする場合-> =Sum(IIf(CInt([A])>=10,1))
などなど。

# 実現方法は複数用意したほうが幸せになれると思います
# ひとつだけだとその方法が無理だった時に手詰まりになっちゃいます
58名無しさん@そうだ選挙にいこう:02/07/26 19:51
前スレのACCESS総合相談所 その3を見たいんだけどどうやって見るの〜?
59名無しさん@そうだ選挙にいこう:02/07/26 19:58
>>58
2chビューア入手して料金払ってユーザ登録するとdat直読みできます
それが嫌ならHTMLにコンバートされるまで待ちます。いつになるかわからんけど
60名無しさん@そうだ選挙にいこう:02/07/26 21:08
サブフォームの行ごとに、色を変えるのは、絶対に無理なのでしょうか???
2000以降は条件付書式でできるはず
62HOKUTO:02/07/26 22:27
>>60
条件付書式を使えばできる。(Access2000以上)
63HOKUTO:02/07/26 22:29
>61
うわ、同時ですな、スゴ!
64名無しさん@そうだ選挙にいこう:02/07/26 22:47
>>43
ありがとうございます。うまくできました!(プロパティに無かったのですね)

もう一つゴメンなさい、
データシートのフォントサイズって変えれないのでしょうか?
65名無しさん@そうだ選挙にいこう:02/07/27 00:08
>>64
自己レスです。これもプロパティじゃなくてメニュー上の所でいじれました。
やっぱ厨房ですみません。
66名無しさん@そうだ選挙にいこう:02/07/27 01:16
ちょっと聞いて下さい。

売上品テーブルの売値フィールドの合計から、
入荷品テーブルの入値フィールドの合計を引いて商品毎の
粗利を出そうと思い、クエリでsum()関数を使いました。

sum([売上品T].[売値])-sum([入値])

すると、変な数字になってしまったので何故かと思ったら、
登録された入値の回数 x 売値の合計から、
登録された売値の回数 x 入値の合計を引いた値が出ていました。

この時点で思考がストップしてしまったのですが、何かヒントを
下さいませんでしょうか、、、?
67名無しさん@そうだ選挙にいこう:02/07/27 01:18
すいません、上の
sum([売上品T].[売値])-sum([入値])
は、
sum([売上品T]![売値])-sum([入荷品]![入値])
の間違いです。
68SQLバカ:02/07/27 01:52
SQLのVBAでお世話になった者です。ほんっとうにありがとうございました!!!
簡単な理由でした。
>>50のしろさんの言う通り、ダブルクォーテーションの付け間違いでした。
本当にみなさんありがとうございました。完成しました。
学年や、生徒IDの件でも色々お世話になり、本当に感謝しています。

>>55
「vbCrLf」
私は、最初これを使わずに継続文字を使って書いたのですが、これをつけないと動きませんでした。
これがどういう働きをするのかは、>>56さんの説明で理解しました。


みなさん、本当にありがとうございました!!!!
69名無しさん@そうだ選挙にいこう:02/07/27 02:17
アクセスデータベースファイルを自動的にバックアップする方法はないでしょうか?
バージョンは2000です。コピペが一番ですか?
>>66-67
計算部分の抜粋だけでは原因を把握するのは困難だと思いますが?
クエリーの元になっているテーブルのフィールド構成(簡単なもの)と
クエリー(SQL)の内容を明確にしていただかないことには・・・ねぇ?
71名無しの十八番:02/07/27 03:23
openoffice.orgはAccessのドライバとODBC接続が利用できます。

そこで、Accessにテーブル・リレーションをはってある程度しっかり
したDBの巣をつくる。

で、フロントエンドとして、OpenOffice.orgを使って、DBに蓄えられた
データを呼び出して、OpenOffice.orgのデータと計算しあっていろい
ろできそうなんだけど、

ここにいる人たちはどんな利用方法をあみだしました?
参考までに知りたいなぁと思います。


自分は、料理レシピ仕込み表作成DBを作ってこっちで料理名とそ
の分量を綿密に入力して置いて、
OpenOffice.orgから、呼び出して、1コースのメニューをクリエイト
する。で、できたファイルをそのままPDF化してメール送信すると
いう、発注表作成システムを構築しました。

結構手間がかかりましたが、なあなかのものです。Accessでは、
レポートをメールに添付するときは専用のビューアがないとみら
れないし、見られる形式では装飾とかレイアウトとかが反映され
ていないので、OOoをつかうことで一石二鳥です。
>>72
激しくスレ違いです。
ここはAccessのDB基盤[JET-DBEngine & MSDE]とフロントエンド機能
[クエリ、フォーム、リポート]を含めた話題を取り扱うスレです。

OpenOfficeからAccess(と言うよりJET-DBEngine)のMDBファイルを
利用する話題を取り扱うなら OpenOfficeスレに投げかけるのが
自然じゃないですか?

逆にAccessからOpenOfficeの”何か”を利用できますという話題なら
このスレで展開するのも適当とは思います。
>>69
”自動的にバックアップ”が、どの様な場面を想定しているかによって
取りうる方法は様々だと思います。

例えば、毎日決まった時刻にバックアップを自動的に行いたい場合
(環境に依存しますが)Windows2000の標準バックアップツールで
スケジュールを組むとか。市販のバックアップツールでも可ですよね。

また、ユーザの操作を起点(アプリケーションプログラム終了時など)に
行いたい場合は、TransferDatabaseやTransferTableアクションを
利用してVBAコードを仕込んでおくとか。

初めから楽する機能は備わってなくても、楽をするための仕組みを作る素材は
探せば見つかる"場合"もあるということです。
7451=54:02/07/27 09:44
>>57さんありがとうございます。
>実現する手段はひとつにあらず
その通りですね。月曜日にしろさんの方法も併せて
会社でやります。
75名無しさん@そうだ選挙にいこう:02/07/27 10:20
>>73
ありがとうございました。ファイルが壊れた時に回復できればいいので、終了するたびにコピペします。
>>72
いや、俺は71さんの情報は、Access側にも有益だと思うし、勉強になった。
Access+**を使ったシステムの話をここでしてもいいと思うよ。
28さんの
>Accessをインストールしていないマシンで、*.mdb を読みたい 〜中略〜
>mdb2csv みたいなツールはないのでしょうか?
に、もしかしたら役立つかもしれないし。
7766-67:02/07/27 11:44
>>70
申し訳ございませんでした。

テーブルは三つありまして、各々以下のような構成です。

商品T。含まれるフィールドは、商品番号。
入荷品T。含まれるフィールドは、入荷番号と、商品番号と、入値。
売上品T。含まれるフィールドは、売上番号と、商品番号と、売値。
です。

商品Tから他のテーブルに商品番号でリレーションしています。

SQLは良くわからないのですが、SQLビューでは以下の文が出ました。

SELECT 商品T.商品番号, Sum([売上品T]![売値])-Sum([入荷品T]![入値]) AS 式1
FROM (商品T INNER JOIN 入荷品T ON 商品T.商品番号 = 入荷品T.商品番号) INNER JOIN 売上品T ON 商品T.商品番号 = 売上品T.商品番号
GROUP BY 商品T.商品番号;

目的を今一度申しますと、商品ごとに全売値から全入値を引いて、
商品ごとの粗利益を出そうとしています。

Sum([売上品T]![売値])-Sum([入荷品T]![入値])

例えば上のクエリでは、商品番号1が5000円で二回入荷し、
それが10000円で二回売れ、商品番号2が6000円で二回入荷し、
それが15000円で二回売れた記録がテーブルでされている場合、
各々の粗利益は、商品番号1が10000円、商品番号2が18000円の
値を出したいのですが、クエリは各々20000円、36000円と値を
出してきます。

長くなりましたが、出来ればご教授お願いします。
>>76
ぉぃぉぃ「書き込んでしまえば勝ち」を容認するマネしないでくれよ。
じゃ何か?Access+Otherなもんなら全て許しちゃうわけ?だったら
アプリケーション毎にスレを棲み分けする必要ないじゃん。
たとえばExcel側からMDBファイルを利用する方法についてもここでやるの?
それはおかしいだろ。Excel、Wordが主役になる話題なら適切なスレに
誘導しないか?

どう贔屓目に見ても>>71は「私はOpenOffice.orgをこんな風に利用しています」
的な話題でしかないだろ?
OpenOffice.orgと関係ない立場から見たら「だから何なのよ?」なんだよ。
OpenOffice.org固有フォーマットファイルをAccessから利用する方法を
提示するっていうんなら、また話題の持つ意味合いが違ってくるけどな。
79しろ:02/07/27 12:25
>77
検証してないから自信ないんだけど
 Sum([売上品T]![売値]-[入荷品T]![入値])
こんな風にしてみては?

それから、値が入ってない場合があるときは、
Nzもつけておいた方がいいよ。
>66-67-77
とりあえず手元で試したらちゃんと動いてるねえ。
ためしにSum([売上品T]![売値]) as 式2とSum([入荷品T]![入値]) as 式3を
追加してちゃんと計算しているか見てみた?
あとね、
SELECT 商品T.商品番号, IIf(IsNull(Sum([売上品T]![売値])),0,Sum([売上品T]![売値]))-Sum([入荷品T]![入値]) AS 式1
FROM (商品T LEFT JOIN 入荷品T ON 商品T.商品番号 = 入荷品T.商品番号) LEFT JOIN 売上品T ON 商品T.商品番号 = 売上品T.商品番号
GROUP BY 商品T.商品番号;
ってしないと「入荷してるけどまだ売った事無い商品」のデータがでないよ。(粗利がマイナス)
商品番号3が7000円で2回入荷、売った記録がまだない、って場合を追加して見てね。
8176:02/07/27 13:16
自治厨の煽りに反応するのって嫌なんだけど。ほかのひとごめんね。
>72-78
71さんがOOoの推進派の人ってのは俺も感じたよ。
でもさ、71さんの場合そのあたりにそれなりに気を使ってるっぽい感じなのね。
ちゃんと「こんな風に使いましたよお」って情報出してくれてるとことかさ。
>激しくスレ違いです。
ってほどじゃないでしょお?

>ここはAccessのDB基盤[JET-DBEngine & MSDE]とフロントエンド機能
>[クエリ、フォーム、リポート]を含めた話題を取り扱うスレです。
なんてはじめて聞いたし。あっ
> >>72 激しくスレ違いです。
ってことは自爆トラップだったのか〜?カカッテシマッタ...ウツダシノウ
>>66-67さんと>>80さんのAccessのバージョンは何?
どちらのSQL文ともAccess2002では>>77の問題になってる結果になります。
テーブル結合の時点で多対多結合になってしまうんですよね。
例えば、商品Aの入荷明細10件で売上明細が5件の場合、テーブル結合で
明細件数が10×5=50明細になっているんですよ。
これをグループ化、集計した結果が想定した値より大きくなっているのです。
対策は
・入荷品Tの集計クエリと売上品Tの集計クエリを個別に作成
・上記クエリをソースとするクエリ(グループ化)を作成
 粗利算出式 売値の合計-入値の合計 を埋め込む
で期待している結果が得られます。
8380:02/07/27 13:37
>82
2000です。2002じゃだめなのか。さんきう
>>82で確認とったクエリを載せておきます。

入値集計
SELECT 商品T.商品番号, Sum(入荷品T.入値) AS 入値の合計
FROM 入荷品T INNER JOIN 商品T ON 入荷品T.商品番号 = 商品T.商品番号
GROUP BY 商品T.商品番号;

売値集計
SELECT 商品T.商品番号, Sum(売上品T.売値) AS 売値の合計
FROM 商品T INNER JOIN 売上品T ON 商品T.商品番号 = 売上品T.商品番号
GROUP BY 商品T.商品番号;

粗利算出
SELECT 入値集計.商品番号, 売値集計.売値の合計, 入値集計.入値の合計, [売値の合計]-[入値の合計] AS 粗利益
FROM 入値集計 INNER JOIN 売値集計 ON 入値集計.商品番号 = 売値集計.商品番号;

ちなみに大量データを食わせてテストしてませんので、動作保証はご勘弁を。
85名無しさん@そうだ選挙にいこう:02/07/27 15:44
あのー、クエリでちと大量のデータを扱って複雑なことやらしたら
オーバーフローってでて、途中で計算止まっちまったんですけど、
これってパソコンのスペックの問題ですか?
86Tommy:02/07/27 15:54
商品の在庫管理システムをACCESS2000で作っているところです。
発注入力フォーム上の発注データ転送ボタンを押すと、チェックボックスで印をつけた発注済みデータのみ
が仕入入力フォームへ転送される仕組みを実現したく、下記コードをクリック時に割り付けたのですが、
データが発注フォームから仕入フォームへ追加され、発注フォームから削除されるのですが、その後、
発注データ転送_Errに飛んでMsgBox"何らかの原因で発注データ転送処理が失敗しました。", , "エラー"が
表示されてしまいます。
何がいけないのでしょうか、対処方法はありませんか。もしお分かりでしたら、御指導お願い致します。
SQLを使いこなせない状況なので、追加クエリーと削除クエリーで動作させています。

テーブル構造
発注データ入力
発注日,商品名,数量,発注済
仕入データ入力
仕入日,商品名,数量,発注済

フォーム構造
上記テーブルを基に
発注入力メイン―サブフォーム(明細入力部分)
仕入データ入力メイン―サブフォーム(明細入力部分)

"Q_発注入力を仕入入力へ追加"の追加クエリーは発注データ入力テーブルを基に
発注済にチェックが入っているものの選択クエリー作成を作成後、追加クエリーに変換

"Q_発注入力データ削除"の削除クエリーは発注データ入力テーブルを基に
発注済にチェックが入っているものの選択クエリーを作成後、削除クエリーに変換

Private Sub 発注データ転送_Click()

On Error GoTo 発注データ転送_Err

Beep
If MsgBox("発注データを仕入入力へ転送します。よろしいですか?", vbYesNo + vbInformation + vbDefaultButton1, "発注データ転送") = vbYes Then

DoCmd.SetWarnings False

' 発注データを仕入入力に転記
'発注データの発注日→仕入データの仕入日
' 商品名→ 商品名
' 数量→ 数量
' 発注済→ 発注済
DoCmd.OpenQuery "Q_発注入力を仕入入力へ追加"

' 発注データ削除(転記した発注情報を入力テーブルから削除)
DoCmd.OpenQuery "Q_発注入力データ削除"

Me![発注入力サブフォーム].Requery

DoCmd.SetWarnings True
Beep
MsgBox "発注データの転送が終了しました。", vbOKOnly + 64, "発注データ転送終了"
End If

発注データ転送_Err:
Beep
MsgBox "何らかの原因で発注データ転送処理が失敗しました。", , "エラー"
End Sub
>>86
このプロシージャ、正常に処理されてもラベル[発注データ転送_Err:]に
流れていきません? Exit Subを追加したらどうでしょうか。
> Beep
> MsgBox "発注データの転送が終了しました。", vbOKOnly + 64, "発注データ転送終了"
> End If
Exit Sub <-ここに追加
> 発注データ転送_Err:

そういうことではありません?
>85
PCのせいかもしれないし、メモリ増やしてもダメかもしんないね。
その辺はあんまりわかんないけど、とりあえず「複雑な処理」を分けて
Tempなテーブルに追加クエリで追加してそれを処理みたくすれば動くかもしれないね。
PC変えたら動いたって場合、データがもっと増えるとまた動かなくなるかもしれないしね。
>86
「On Error GoTo 発注データ転送_Err」をコメントアウトしてそれで走らせると
どこの行で止まるかわかると思う。それでわかんなかったらまた聞いてね。
89レスども。:02/07/27 16:26
>>88
そうですね。追加クエリでやるかパソコン買い換えるかですね。
とりあえず、パソコン来月あたりに買い換えようと思ってるので、
それまでは、我慢するしかないのか・・・。
>>85
ハードウェアに起因するケースもあるでしょうし、クエリの複雑さの度合いに
起因することもあるでしょう。根本的な要因を探るのは難しいことだと思います。
9113:02/07/27 16:36
>>16 の質問で、>>18>>22 にて教えて頂きましたが
この方法ですと、用意した変数に1項目しか取得できず
サブフォームにも、1行分しか入力できませんでした。

コードビルダをほとんど使いこなせていない私ですので
何処かで間違いを犯してしまったのでしょうか?
それとも、やはり1個しか入らない物なのでしょうか?

もし後者であるなら、恐れ入りますが別手段を教えて頂ければ幸いです。
92名無しさん@そうだ選挙にいこう:02/07/27 17:28
ODBC のフロントエンドとして ACCESS 使ってます。

ODbC のデータベースとリンクして、データベースの閲覧・編集なんてことをやってます。

で、文字列の列を入力する際、ACCESS は必ず IME を起動してくれます。

これは余計なお世話です。この IME 自動起動をど止めたいです。何かいい方法はないでしょうか。
93親切な人:02/07/27 17:42

ヤフーオークションで、凄い人気商品、発見!!!

「 RX-2001 」がパワーアップした、
「 RX-2000V 」↓
http://user.auctions.yahoo.co.jp/jp/user/NEO_UURONNTYA#.2ch.net/

ヤフーオークション内では、現在、このオークション
の話題で、持ちきりです。

ヤフー ID の無い方は、下記のホームページから、
購入出来る様です↓
http://www.h4.dion.ne.jp/~gekiyasu/#.2ch.net/
9418:02/07/27 17:44
ん〜複数行に入力したいってどっか書いてたっけ?
で、どういう風な仕様にしたいの?
※のフォームでこれとこれとこれ、って「フォーマット取得」を押して
「フォーマット貼りつけ」を押したら、ペペペって3つレコードが増えるでいいのかな?

モジュール
Public Format_HattyuMei(100) As String
Public Format_Suuryou(100) As Integer
Public Format_Tanka(100) As Currency
Public Format_Flg as Integer

フォーマット取得
Private Sub フォーマット取得_Click()
If Format_Flg >= 100 then
Msgbox("フォーマットの取得は一度に100個までだよ")
exit sub
end if
Format_Flg = Format_Flg + 1
Format_HattyuMei(Format_Flg) = Me![発注名]
Format_Suuryou(Format_Flg) = Me![数量]
Format_Tanka(Format_Flg) = Me![単価]
End Sub

フォーマット貼りつけ
Private Sub フォーマット貼りつけ_Click()
Dim Loop_Count as Integer
If Format_Flg = 0 then
Msgbox("フォーマットの取得をしてからにしてね")
exit sub
end if
LoopCount=1
Do
Me![発注名] = Format_HattyuMei(Loop_Count)
Me![数量] = Format_Suuryou(Loop_Count)
Me![単価] = Format_Tanka(Loop_Count)
Loop_Count = Loop_Count +1
Loop Until Format_Flg + 1 = Loop_Count
Format_Flg = 0
End Sub

※のフォームの「開くとき」のイベント
Private Sub Form_Open(Cancel As Integer)
Format_Flg = 0
End Sub

たぶんこんな感じ。
>92
フォームだとフィールドごとに「IME入力モード」ってのが設定できるよ。
9613:02/07/27 18:14
>>94
ふたたびレスをして頂き、本当にありがとうございます。
やはり1個だけのコピーだったのですね。
私がミスをしたのでは無いかと、何度もやり直してみて再度ご質問させて頂きました。

複数行については、
>                    ※ │ ・ "BBB","3","10000" 
>                      │     ・              (数は70入力ぐらいです)
 と
> 1度に "ほぼ"同じ内容を数多く入力する為に、毎々手入力やコンボボックスでは無く

と書いたのですが、後から読み直すと 多数のうちから1個を呼び出す様にも読めますので
せっかくレスを付けて頂いたにもかかわらず
表現不足から、誤解を招いた事お詫び申し上げます。
9713:02/07/27 18:14
本題のほうですが、
※フォームの内容全てを、現在開いているサブフォームに Copy&Pasteを行ないたいです。
(※フォーム内での取捨選択は無くて構いません。)

イメージ的には、既に"項目"記入済みの書類に(例:所得税の申告書)
数字を記入したり、足らない項目を書き足したり
とそう言った作業を行ないたいです。

また例題が良くないのかも知れませんが
うまく伝われば幸いです。
9813:02/07/27 18:24
それと蛇足ですが、>>94なコードをスラスラと書けるようになるには
やはりかなりの勉強量がいるのでしょうか?

Access本を2,3冊買ってきて勉強しておりますが
基礎編が終わって、応用を読んでいる所ですが
まさに、マクロからコードビルダの所で詰まっている最中です。

そんな私ですので、レスの内容を見てびっくりしています。
つまらない事を書いて御免なさい・・・
でも感謝と驚きで一杯です。
なんとなく>>16に対する処理のサンプル作ってみました。
用意するもの
テーブル Tmaster / Tdetails / Tcopy
フォーム Fmaster / Fdetails

テーブル構成
Tmaster {m_id:テキスト型}
Tdetails {d_id:テキスト型, detail_text:テキスト型}
Tcopy {c_id:テキスト型, copy_text:テキスト型}

フォーム構成
Fdetails レコードソース:Tdetails 帳票形式
 詳細にd_id, detail_textを配置(ともにテキストボックス)
Fmaster レコードソース:Tmaster 単票形式
 詳細にm_id, サブフォームFdetailsを配置(m_idはテキストボックス)
 サブフォームFdetailsとのリンク項目は
 リンク子フィールド:d_id リンク親フィールド:m_id

下地をこんな感じで作ります。
>>99からの続き 処理パターン1
テーブルTcopyの項目copy_textの値にFmasterの項目m_idの値を付加して
テーブルTdetailsに追加する

処理の追加
フォームFmasterにコマンドボタンを配置
クリックイベントにコード記述

Private Sub コマンド1_Click()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim sql As String
Dim id_no As String

id_no = Me!m_id

Set db = CurrentDb
Set rs = db.OpenRecordset("Tcopy")

Do Until rs.EOF
 sql = "insert into Tdetails (d_id, detail_text) "
 sql = sql & "values ('" & id_no & "','" & rs("copy_text") & "');"
 db.Execute sql
 rs.MoveNext
Loop
rs.Close
Set db = Nothing
Me.Fdetails.Requery

End Sub
10118:02/07/27 20:34
ああ、そういうことだったんだ。読み取れなくてごめんね。

◎と◇のメイン-サブのフォームのフォームを作って
メインを「◇入力」、サブを「◇入力_サブ」って名前にして
INSERT INTO ◇ ( 発注名, 数量, 単価, 顧客番号 )
SELECT ※.発注名, ※.数量, ※.単価, [Forms]![◇入力]![顧客番号] AS 顧客番号 FROM ※;
こういうSQLのクエリを作って、「Q◇にフォーマットを適用」と名前つけて保存。
「◇入力」にボタン「フォーマットを適用」、クリック時のイベントで
Private Sub フォーマットを適用_Click()
DoCmd.SetWarnings False
DoCmd.OpenQuery "Q◇にフォーマットを適用"
DoCmd.SetWarnings True
Me![◇入力_サブ].Requery
End Sub

こうかな。

金額に数量×金額を入れるなら
INSERT INTO ◇ ( 発注名, 数量, 単価, 顧客番号, 金額 )
SELECT ※.発注名, ※.数量, ※.単価, [Forms]![◇入力]![顧客番号] AS 顧客番号,
[※]![数量]*[※]![単価] AS 金額 FROM ※;
こういうSQLのクエリを、「Q◇にフォーマットを適用」とする。

それから>98について。>>94なんて、「変数に/変数から代入」「配列」「Do...Loop」
「If...Then」ぐらいしか使ってないよ。マクロがある程度わかるぐらいなら
ちょっと勉強すれば大丈夫だよ。4さんみたいにDAOとかまで手を出すとちょっと難儀
だったりするけど。
で、このレスのも「追加クエリでフォームのフィールドのデータも一緒に追加」ってだけだし。
今回ので一番大変だったのは◎◇※がどれがどれだったかわかんなくなるとこだったよ。
>>99からの続き 処理パターン2
テーブルTcopyの項目copy_textの値をFmaster/Fdetailsの
項目detail_textに放り込んで追加する

処理の追加
フォームFmasterにコマンドボタンを配置
クリックイベントにコード記述

Private Sub コマンド2_Click()
Dim db As DAO.Database
Dim rs As DAO.Recordset

Me.Fdetails.SetFocus

Set db = CurrentDb
Set rs = db.OpenRecordset("Tcopy")

Do Until rs.EOF
 Me.Controls("Fdetails").Form.Controls("detail_text") = rs("copy_text")
 DoCmd.GoToRecord , , acNext
 rs.MoveNext
Loop
rs.Close
Set db = Nothing
Me.Fdetails.Requery

End Sub
>>99-100 & >>102のまとめ
下準備
テーブルTmasterに適当なデータ(連番とか)を用意する
 1, 2, 3...etc.
テーブルTcopyに適当なコピー用データを用意する
 {1, aaa}, {2, bbb}, {3, ccc}...etc.

実行
・フォームFmasterを開く
・コマンドボタン1 又は コマンドボタン2を押下して処理実行

確認
テーブルTdetailsにデータがどの様に格納されているか目視

補足
Access2002で作成してます。エラー処理は考慮してません :-P
>>98
勉強というか習得のコツは
・覚えようとしないこと。頭にイメージとして馴染ませる
・本は冒頭から読破しない。
 目次を見て、どこに何が書かれているかを把握する 字引きのように参照する
・とにかく作ってみて数をこなす
 いきなり大きなものに取り組むより、小さいものを数多くこなしてみる

自分の中で「こんな処理できるかなぁ」って欲求が生まれてきたら
まず、その中身(処理の流れ)を想像してみて大枠のイメージが出来たら
小さなサンプルを作ってみて実現できるか否か確認する。

できる限り、飽きがこないよう嫌気が差さないよう気長に取り組んでいると
ある日を境に悟りを開きます。冗談抜きで。
逆に脳の中に思考回路が出来上がっていないうちは、いくら頑張っても
駄目なんです。
105名無しさん@そうだ選挙にいこう:02/07/27 21:39
教えてください。
たとえば、商品コードが "999" の時は、商品名を手入力する。
それ以外のときは、商品マスタから、商品名を表示して、次の項目にカーソル
は移動する。
このような処理をしたい時に、_BeforeUpdateでチェックして、setfocus
をすると、通常はよいのですが、入力後、マウスで最初の項目にもどってから
enterで次に進もうとした時に、_BeforeUpdateが発生せず、商品名にカーソルが
いってしまいます。解決方法はあるでしょうか?
10677:02/07/27 22:49
皆さんお答えありがとうございました。

>>79
nzと言うのが分からないのですが、調べてみます。

>>80
nullの処理は確かに気付いてませんでした。追加します。

>>82
>>84
2002でした。これを言うのも忘れてました。すいません。
そうか、、、合計を個別にクエリにしてそれを粗利クエリ
で読む、、、何故気付かなかったのだろう、、。やってみます。

ありがとうございました。
107名無しさん@そうだ選挙にいこう:02/07/28 02:31
スレタイ見てビックリした。ACCESSっていうからあの何とかっていう
過激著作権野郎がいる某著作権団体対策のスレかと思ったYO!
10813:02/07/28 08:50
おはようございます。
折々詳細なレスを頂き、誠にありがとうございます。

>>99-103
これからさっそく作業をしてみます。
ボリュームもそうですが、ちょっと目を通すだけでも私のスキルでは及ばない事ばかりですので
また質問をするかもしれない事、お許しください。

>>104
どうしても覚える事柄多く、書籍先行になっておりました。
後ろの 「ある日を境に悟りを開き・・・」は
雲を掴むような話しですが、分かるような気がします。

悟りが開けるよう、順に石は積んでいきたいと思います。
また道半ばで、諸先輩方のご指導・ご教授頂く事もあるかと存じますが
その節はご迷惑をお掛けしますが、何卒よろしくお願い申し上げます。
109名無しさん@そうだ選挙にいこう:02/07/28 09:44
オプショングループで 貼ってるサブフォームの中身を
フォームA,フォームB、フォームCて変えれますか?
一つの画面で3つのフォームを操作したいです。

その時オプショングループのクリック時イベントで
     ボタン1.OnClick = ???
て、書くのでしょうか?

Googleてみましたが、良い例が見つからなかったので
トーシロな私に、誰か教えてください m(_ _)m
>>105
アップデート系のイベントは、コントロールのデータを変更しないとイベントが
発生しないので、Exit(フォーカス喪失時)かLostFocus(フォーカス喪失後)の
イベントで処理を行うようにしたほうが良いのではないでしょうか。

この手の処理は"あちら立てればこちら立たず"のジレンマにハマリそうですが
頑張ってください。
>>107
やましいことが無い限り、普通そんな誤読はしないぞ。
>>109
サブフォームの中身を交換する点 -> できます
実際にフォームを交換するには、サブフォームのソースオブジェクト
SourceObjectプロパティに、使いたいフォーム名を設定するVBAコード
を書きます。
113名無しさん@そうだ選挙にいこう:02/07/28 11:50
>112
親切なおかた、謝謝です !!
まだVBAトーシロな私なんで、すみません2つ教えてください。

1:オプショングループのクリック時イベントで
     ボタン1.OnClick = <サブフォームを交換する方法1>
     ボタン2.OnClick = <サブフォームを交換する方法2>
     ボタン3.OnClick = <サブフォームを交換する方法3>
 て書くモノなのでしょうか?

2:サブフォームを交換する方法、書式がピンとこないです…
 ゴメンなさい、ズバリを教えてください m(_ _)m
114113:02/07/28 16:22
やっぱり分かんないです。。。
どなたか書式などのヒントをください〜
115名無しさん@そうだ選挙にいこう:02/07/29 01:03
よろしくお願いします。
アクセス2000を使用しています。
フォームのコントロールに使用するLocked及びEnabledプロパティなのですが、
レコード単位でON/OFFを設定することは可能でしょうか?
可能であれは方法をお教えください。
116名無しさん@そうだ選挙にいこう:02/07/29 01:54
基本的にお前ら親切だな。
>>113-114
オプショングループのクリック時イベント?
その中に配置するボタンコントロール1個1個にイベント発生時の処理を
記述するのではないですか?

例.
Private Sub XXXX_Click()
 Me.Controls("埋め込み0").SourceObject = "フォーム2"
End Sub

 XXXXの部分はコントロールの名前:「ボタン0」など
 埋め込み0は親フォームに配置したサブフォーム/サブレポートコントロールの名前
 フォーム2はサブフォーム/サブレポートコントロールにリンクするフォームの名前

他にも考慮しなければならない点があるので、この1行だけじゃだめですけど。
>>115
> レコード単位でON/OFFを設定することは可能でしょうか?

"レコード単位"とはどういうことを想定してます?

例えば、帳票形式のフォームでレコードを移動する毎にレコードソースの
データ編集可否を判定してコントロールをロック&解除できますけど。
119119:02/07/29 10:29
「郵便番号555」の「5」を関数を使って三つに分割したいんですが(フィールド)にする
方法はどうやればよろしいのでしょうか?
120名無しさん@そうだ選挙にいこう:02/07/29 11:26
AccessのVBAについて質問があります。
社員IDに対応した累積データがずらっと入っているテーブルがあります。
こんな感じで。

ID  通番 給料
0001  01 200,000
0001  02 220,000
0001  03 240,000
 .
 .

このテーブルから、IDの通番が一番大きなレコード(最新のデータ)を抽出するには
どのようなコードを書けばいいのでしょうか?

まことに初心者な質問で恐縮ですが、何卒ご教示の程をm(__)m 
>>119
データの型はテキスト型(文字列)を前提とします。
1番目はLeft関数で、2番目と3番目はMid関数で分離、抽出しては
どうでしょうか。
122119:02/07/29 12:19
>>121
式ビルダを使ってやるのでしょうか?その次に
送付先郵便番号の入ったクエリを選択するのでしょうか?
分かりにくくて申し訳ありません。
>>122
貴方がフォーム上で処理をしたいのか、クエリー(SQL)の中で処理したいのか
明確にされていないので、どのように答えるべきか悩むのですが。


このスレで質問されている方が詳しい回答を望んでおられるのはわかりますが
それならば質問の内容を詳しく明確にしていただきたいと思います。
124119:02/07/29 12:42
>>123
フォーム上で処理して伝票として使いたいのです。伝票を貼り付けて中の数字を
入れ替えてプリントアウトするということです。
>>124
>>119の問いに対する解
[郵便番号]項目の値を3つに分離する
 第1番目のデータを抽出:Left([郵便番号], 1)
 第2番目のデータを抽出:Mid([郵便番号], 2, 1)
 第3番目のデータを抽出:Mid([郵便番号], 3, 1)
>>120
> IDの通番が一番大きなレコード
これはID毎に(その中で)通番が最大値のレコードを求めるということですか?
127120:02/07/29 14:15
>>126
そうです。同一IDのうち、通番が一番大きい値のレコードが一番最新のデータですので。
よろしくお願いします。
128119:02/07/29 14:19
>>125
ありがとうございます。それは式ビルダを使ってやるにはどのようにやればよいのでしょうか?
構文が正しくないと言われます。<expr>とかの意味がよくわからないのですが、
基本的なことでしょうが御願いします。
129しろ:02/07/29 14:36
>128
伝票処理したいならレポートですか?
そのレポートかフォームに使うクエリのフィールド名が入るところに
125さんの教えてくれた関数を使ってください。
式ビルダ使わなくてもできます。
130しろ:02/07/29 14:38
>120
VBAじゃないけど、クエリで
 ID & 通番
というフィールドを作っておけば、DMAXでも集計関数でも取り出せるのでは?
>>127
> よろしくお願いします。
と言われてもなぁ・・・VBAのプロシージャの前にロジックを明確にするのが
先ではないかと思いますけど。
もしかしたら、どのような手順を踏めば結果が得られるのかもわからない状態?

グループ化のクエリーと結合のクエリーで求める結果は出てくるんですけど
そこまではわかっていますか?
>>128
>>124
> フォーム上で処理して伝票として使いたいのです。
というのは概要(アプリケーションの表面的な振る舞い。見え方)ですよね。
フォームから伝票出力に至るまでの工程(手順)をどの様に考えているのか教えて
ほしかったのですが・・・
当該の処理(郵便番号の分離)をどの工程に組み込みたいのかも含めて。
>>127
とりあえず処理のサンプル。
元になるテーブルの仮称は"社員"

クエリー作成その1:クエリー名/社員毎最大値
SELECT 社員.ID, Max(社員.通番) AS 通番の最大
FROM 社員
GROUP BY 社員.ID;

クエリー作成その2:クエリー名/社員最新
SELECT 社員.ID, 社員.通番, 社員.給料
FROM 社員 RIGHT JOIN 社員毎最大値 ON (社員.ID = 社員毎最大値.ID)
AND (社員.通番 = 社員毎最大値.通番の最大);

クエリー 社員最新でID毎の通番最大値を持つレコードが得られる
>>133の続き
サンプル用フォーム作成
フォームにコマンドボタンコントロールを配置し、クリックイベントに
VBAコードを記述する。
処理:クエリー社員更新のレコードセットを開き、レコードを1件づつ読み
   結果をメッセージボックスに表示する

Private Sub コマンド0_Click()
Dim db As DAO.Database
Dim rs As DAO.Recordset

Set db = CurrentDb
Set rs = db.OpenRecordset("社員最新")

Do Until rs.EOF
 MsgBox "最新データ= " & rs("id") & " | " & rs("通番") & " | " & rs("給料")
 rs.MoveNext
Loop
rs.Close
Set db = Nothing
End Sub

はっきり言って、こんなの見ても参考ならんですよ。自分の頭で考えないと。
135120:02/07/29 17:21
>>130-131
>>133-134
皆様ありがとうございます。
処理の流れから考えるべく四苦八苦していたところです。今考えていたのは、
Dlast関数を使えないかな〜といろいろ試行錯誤してコードも書いていたのですが。
大変参考になりました。
いろいろ試してみます。
>>134
うあっと、typo s/クエリー社員更新の/クエリー社員最新の/
でした。
137名無しさん@そうだ選挙にいこう:02/07/29 17:41
教えて下さい。
テーブルを印刷した時、罫線が印刷されません。
印刷プレビューの画面では罫線は表示されているのですが、、、。
何か方法がありますでしょうか?
138名無しさん@そうだ選挙にいこう:02/07/30 09:52
最近アクセスを使い始めた者です。よろしくお願いします。
ちょっと質問なのですが、印刷がうまく出ません。

テーブル−フォーム−レポートを順に用意しました。
そしてフォームにコマンドボタンで ”レポートの印刷”を選んで実行したところ
全部のレコード分の出力をしてしまします。

いま編集・入力中の1レコード/1枚分だけ出力するにはどうしたら良いのでしょうか?
139名無しさん@そうだ選挙にいこう:02/07/30 10:06
http://www.ruitomo.com/~gulab/index.html
ここでスレを調べなされ
>137
Accessのバージョンと(97とか2000とか)と印刷するプリンタの種類
(モノクロレーザーとかインクジェットとか)は?
できればプリンタのメーカー名/型番も。
当方2000だけど、ツール-オプション-データシートにテーブルとかを
表示するときの色の設定があるんだけど、ここで枠線の色を赤とかにしてて
赤のインクが切れたプリンタで印刷したら枠線の印刷ができなくなっちゃうかな、と。
枠線の色が銀色のままなら黒の網掛だろうから違う原因っぽいけど。

>138
コマンドボタン ”レポートの印刷”のクリック時のイベントに
DoCmd.OpenReport stDocName, acNormal
ってなところがないかね?ここを
DoCmd.OpenReport stDocName, acNormal,,"主キーのフィールド名 =" & Me![主キーのフィールド名]
ってするとそのページだけ印刷できるよ。
141名無しさん@そうだ選挙にいこう:02/07/30 13:08
>>140
ありがとうございます。うまくできました!
プログラムの所をいじるのはちょっとドキドキでしたが
教えて頂いたように書けばバッチリでした。

ところで " [ ] "でフィールド名を括ってますが、これって何ですか?
142名無しさん@そうだ選挙にいこう:02/07/30 14:01
まったくの初心者なのですが皆さんは最初どのようにして使えるようになりましたか?
いきなりAccess使ってやってくれって言われたんですが分けがわかりません。

エクセルから「定義」(?)をテーブルを作ってインポートしろということでした。

どのようにして使えるようになっていったのか参考にさせて下さい。
143140:02/07/30 17:29
>138-141
>ところで " [ ] "でフィールド名を括ってますが、これって何ですか?
説明しようとテキストエディタで書いてたら50行超えて、しかもわかりにくく
しか、書けなかったよ。「Access」「VBA」でGoogleするかそんな本で勉強してね。
文字だけ数行でこれをわかりやすく説明できるぐらいならいい本書けるよ。僕は無理。

>142
最初は「できるAccess95」だか「図解Access95」だかを買ってみたんだっけかなあ。
そのたぐいはあんまり役に立たなかったように思う。
Access2000の分かりやすい本 ってスレがあるからみてみたら?
http://pc.2ch.net/test/read.cgi/bsoft/994154155/

でね、たてものに例えると「テーブル設計=基礎/大黒柱」「クエリ=壁と他の柱」
「フォームとVBA=内装・外装」って感じ。小手先の技よりしっかりした設計と
クエリを理解することがだいじだよ。

いろんな本読んだりGoogleでいろんなページ調べてみたりしてがんばれ。
144142:02/07/30 18:25
>>143
ありがとうございます。使いこなすのはかなり難しそうですががんばります。
>>142
パソコン以外の環境でシステム開発を約5年間やって、その後
成り行きでAccess97をボチボチ触りだしてなんとなく。
ISAMやRDBを対象としたプログラミング経験があると、短期間で
それなりに取り扱えるようになると思います。

未経験の人は初めにVBA+SQL文(Select,Insert,Update,Delete)で
テーブル操作をみっちりやった方が良いと思います。
それと並行してテーブル設計の理論を学ぶべきでしょう。
このあたりに慣れてからシステム作りに入るのが望ましいと思います。
146名無しさん@そうだ選挙にいこう:02/07/30 20:01
>117
解説ありがとうございます !!
でもゴメンなさい、もう少し教えてください。

オプションボタン1個1個にコードを書かないとダメみたいですが
オプショングループ自体のイベントはどんな時に使える物なのでしょうか?

それと
> 他にも考慮しなければならない点があるので、この1行だけじゃだめですけど。
て、どんな事が考えられるのでしょうか?

VBAトーシロなので、質問君なってすみませんが
ちょっとアドバイスをお願いします。
147137:02/07/30 20:29
>137
>>140
Accessのバージョンは2002です。
印刷するプリンタの種類はインクジェットです。
プリンタのメーカー名/型番は、hp deskjet 957c
です。枠線の色はデフォルトのままですね、、。
148140:02/07/30 21:22
>137-147
う〜ん、僕は2000までしか触った事ないし、hpのプリンタも使った事無いんだよね。
とりあえず今までそんなことなったことがないんだ。
フォームで単票フォームのページ設定でデータのみ印刷するにしてから
データシートビューにすると枠線無しの印刷になっちゃうけど
プレビューから枠線無しだしテーブルじゃあ出来ないし。
DataSheetGridLinesBehaviorプロパティかなとも思ったけど、
ここでは普通の表示から枠線無しとかならできるけど、
印刷時のみとかできなそうだし。

枠線の色を黒に指定して印刷して見る、と
新しいデータベースを作ってそこに全部インポートして試して見る、を試してみて。

>146
もう少し脳みそのしわ活用した方がいいよ。
で、オプションボタン群の周りのフレームの更新後処理イベントに

Private Sub フレーム0_AfterUpdate()
Select Case Me![フレーム0]
Case 1
Me.Controls("埋め込み0").SourceObject = "フォーム1"
Case 2
Me.Controls("埋め込み0").SourceObject = "フォーム2"
Case 3
Me.Controls("埋め込み0").SourceObject = "フォーム3"
Case Else
'まあ普通ここに来ないから何にもしなくていいかな。なんならMsgboxでも。
End Select
End Sub

>オプショングループ自体のイベントはどんな時に使える物なのでしょうか?
についてだけどこの通り使える。で、オプションボタンのクリック時のイベントに
書けば1行×3。オプショングループの更新後処理に書くとこの通り増えると。
まあ機能はどっちでもおんなじさね。

> 他にも考慮しなければならない点があるので、この1行だけじゃだめですけど。
は、メインのフォームとサブフォームでリンクを貼る必要があるかないかとかかな。
リンク関係無いなら一行でいいんじゃない?
149名無しさん@そうだ選挙にいこう:02/07/30 21:51
レポートを一頁にまとめるのに良い方法はありませんか?
行数が少なかったらフォントを大きくし、行数が多くて一頁に収まりきらないようなら
フォントを小さくしてもう無理やり一頁にまとめたいんですが。
150名無しさん@そうだ選挙にいこう:02/07/30 21:53
>148
まだプログラムのなんたるかが、まだよく分かってないので
ホントに感謝です !!

> についてだけどこの通り使える。で、オプションボタンのクリック時のイベントに

イベントは組み合わせなんですね。
コードを見て良く分かりました。

> は、メインのフォームとサブフォームでリンクを貼る必要があるかないかとかかな。

メイン/サブでリンクは張ります、張ります!
今リレーションシップで、必要なサブフォーム分のa,b,cに張ってますが
これとは別に コードに書かないとダメなんですか?
151名無しさん@そうだ選挙にいこう:02/07/30 22:56
固定長エクスポートで数字を右揃えにするにはどうしたらいいの?
ウィザードだと
4 8と設定すると

11  2222
111 22222

にしかできない

 11  2222
111 22222

って感じにしたいんだけど

152148:02/07/31 01:09
>149 Lenで文字数調べてFontSize。
>150 LinkMasterFieldsとLinkChildFields。
>151 Lenで文字数調べてString。
使い方はHelpとGoogleで頑張ってみ。
153151:02/07/31 18:23
自己解決

MS技術サイトに載ってた。

>>152ありがd
154名無しさん@そうだ選挙にいこう:02/07/31 21:47
文字数じゃなくて行数を調べたいときはどうすればいいんでしかね?
155自信はないが:02/07/31 22:00
>>154
instr(string,$h13)は使えませんか?
156名無しさん@そうだ選挙にいこう:02/08/01 10:34
タブページにサブフォームを張っていますが、新しいレコードで入力した時
そのタブを触ると、
  「インデックスまたは主キーには、Null値を使用できません。」
と、蹴られてしまいます。

ただ開発したマシンでは、このエラーは発生せず別のマシンでしか出ません。
別のマシンでしか、エラーが発生しないと言うのが曲者なのですが
どう言った問題点が、考えられるのでしょうか?

Accessを熟視しているエキスパートのかた
すみませんが、教えてください。
157156:02/08/01 10:59
今回Access単体での使用ですが
コミットとかのトランザクションは関係するのでしょうか?

ちなみに新しいレコードを作成し、主テーブル/主キーのオートナンバーが
新しい番号が発行された時(どれかのフィールドに入力した時点)に
レコードを一度更新したいと思うのですが、コードはどのように書くのでしょうか?

まだまだ不勉強な私に教えてください。よろしくお願いします。
>>156
情報不足。どんな構造のものを作っているのか詳しく書かなきゃわららないだろ。
熟視・・・・・・・・?
>>158
書かなきゃわららないだろ・・・・・・・・?
>>160
typoだ。s/わららないだろ/わからないだろ/ >>158


わかってて揚げ足とるなよ(w
typo・・・・・・・・?
>>162 typo知らない馬鹿発見!! 恥晒すな(藁
164あば:02/08/02 17:58
突然ですが、ACCESS(2000)で分数を扱うにはどのようにすればよいでしょうか?
例えば3分の1という値を入力するとき、0.3とか0.33では足したり引いたりする時
、当然ですが誤差が生まれます。
これを解消するために、1/3というように入力すると、これまた当然のように「数値
型のフィールドに文字列を入力しました」と言われてしまいます。
どのようにすれば、「3分の1」とか「5分の1」というような値を入力することが
できるのでしょうか?
165名無しさん@そうだ選挙にいこう:02/08/02 18:33
できまへん
166あぼ:02/08/02 20:40
げ・・・できないんですか・・・。^^;

例えばですねぇ、倍精度浮動小数点型の3つのフィールドに1/3の結果
を放りこむとします。これは値の代入でできますね。
その時、目に見える値は「0.333333333333333」です。
その3つに放り込んだ「0.333333333333333」を再び値の代入で別の
フィールドに放り込むと「1」と表示されます。
これが「0.999999・・・」ではなく「1」と表示されたということは、
「0.3333・・・」と表示されていた3つのフィールドの値はきっかり
1/3だということですよね。

この1/3をこういったマクロの式を使わずに直接記入することは本当に
できないんですか?
167あぼ:02/08/02 21:00
なぜかsageてしまったのでage
168あぼ:02/08/02 22:42
あ・・・しまった。166の記事で訂正です。

> その3つに放り込んだ「0.333333333333333」を再び値の
> 代入で別のフィールドに放り込むと

         ↓

その3つに放り込んだ「0.333333333333333」を再び値の
代入で「全部足して」別のフィールドに放り込むと

169名無しさん@そうだ選挙にいこう:02/08/03 01:08
>>163
typoって何か教えれ
typo: 打ち間違い、入力ミスのこと。誤変換も含むかな?
>>164 >>166-168
分数は値ではなく算術式だろ?式は数値フィールドに入れられないんだよ。
「できる方法があるはずだ」って思い込みの激しい性格なのか?
>>168
> その3つに放り込んだ「0.333333333333333」を再び値の
> 代入で「全部足して」別のフィールドに放り込むと

Accessは計算の結果、特に指定しなければ四捨五入するんじゃ
なかったけ?
173名無しさん@そうだ選挙にいこう:02/08/03 11:14
初心者まるだしの質問で申し訳ありませんが、教えてください。
しかも、いまどきACCESS95なんですが(^^;

顧客テーブル(顧客IDで顧客情報を管理)
支店テーブル(顧客IDと、支店IDで支店情報を管理)
作業テーブル(顧客IDと支店IDで作業を行った場所を特定)

の三つのテーブルがあります。

そして、
作業フォーム
を作り、作業をしたばあい、フォームで作業テーブルにデータを登録したいです。

このとき、作業フォームのコンボボックス(支店IDを入力したい)で、フォームで入力
した「顧客ID」と、支店テーブルの「顧客ID」が一致したレコードの支店IDだけを表示
したいのですがどうやれば良いのでしょうか?

選択クエリーで抜き出すのかな?と思ったのですが、別画面で一覧が出てしまいます。
値集合ソースでやってみると・・・顧客IDを変更したとき、前の顧客IDと一致するのが
でてしまい巧くいきません。

お願いします。
システムの目的を明確にしない最悪の質問の仕方。
作業テーブルってなによ。データベースサーバと通信するための
テンポラリテーブルか?違うんだったら違う名前にすれ。具体的に何のデータを
管理したいのか(売上?見積もり?)説明すれ。
あと、作業フォームのレコードソースは作業テーブル(またはそのクエリ)で
いいのか?
175173:02/08/03 11:32
>>174
すみません・・・
作業テーブルはテンポラリテーブルではないです。
名前を変えるとすると・・・売上です。

フォームのレコードソースはおっしゃるとおり作業テーブル(改め売上テーブル?)です。

売上があったら、どんどん登録していく形のシステムをくみたいと思っています。
お客さんが支店をもっておりまして、顧客テーブルで支店も管理しようとすると難しそうなので
支店テーブルに分けて見ようかな・・と思ってます。

言葉足らずかもしれませんが、よろしくお願いします。
>あぼさん
>これが「0.999999・・・」ではなく「1」と表示されたということは、
>「0.3333・・・」と表示されていた3つのフィールドの値はきっかり
>1/3だということですよね。
ではないです。0.3333・・・は、かなり1/3に近いですが、きっかりではないです。
で、0.999999・・・をどこぞの桁で四捨五入すると1になりますよね。
ちなみに2/3は0.666666666666667と表示されるよ。これはきっかり2/3じゃないよね?
(172さんの書いた四捨五入ってこと)

んで、あぼさんが結果まで分数でっていってるなら「量子コンピュータできるまで待ってね」って
話なんだけど、(素因数分解が係って来るからね)
上記の0.333・・・(ほぼ1/3)でいいなら、分母フィールドと分子フィールドを作って、
割り算ボタンを押したら分子割る分母を行って結果フィールドに入れる、ならできるよ。
Private Sub 割り算_Click()
Me![結果] = Me![分子] / Me![分母]
End Sub

174さんちょっと言い方きつ過ぎるよ。もすこし、まったりいこう。

>173
支店IDの更新時のイベントで
Private Sub 支店ID_AfterUpdate()
Me![顧客ID].RowSource = "SELECT 顧客テーブル.顧客ID, 顧客テーブル.顧客名, 支店テーブル.支店ID" _
& " FROM 顧客テーブル INNER JOIN 支店テーブル ON 顧客テーブル.顧客ID = 支店テーブル.顧客ID" _
& " WHERE (((支店テーブル.支店ID)=" & Me![支店ID] & "));"
End Sub
とするとできるけど、支店テーブルの主キーは顧客IDなんだから支店IDを顧客テーブルに持っている
方がいいような気がするよ?
Private Sub 支店ID_AfterUpdate()
Me![顧客ID].RowSource = "SELECT 顧客テーブル.顧客ID, 顧客テーブル.顧客名, 顧客テーブル.支店ID" _
& " FROM 顧客テーブル WHERE (((顧客テーブル.支店ID)=" & Me![支店ID] & "));"
End Sub
177名無しさん@そうだ選挙にいこう:02/08/03 13:23
>>175
客は個人客ではなくて企業、支店は貴方の支店ではなくて顧客の
支店(直送先)ということでよいかな?

顧客マスタ
  フィールド:顧客ID(PK)、名前他。 請求先、直送先の基本データをすべて突っ込む)
直送先管理マスタ
  (フィールド:直送先管理ID(PK)、請求先ID、直送先ID。
   請求先ID、直送先IDは顧客マスタと参照整合。
   マスタメンテナンスは顧客マスタフォームにサブフォームで連結。
売上テーブル
フィールド:伝票番号、請求先ID、直送先ID、商品名、金額、その他

売上テーブルの入力フォーム(売上フォーム):
請求先ID コンボボックス 値集合ソースは直送先管理マスタの請求先IDのみグループ化したクエリ
直送先ID コンボボックス 値集合ソースは直送先管理マスタを
WHERE 直送先管理マスタ.請求先ID=[forms]![売上フォーム]![請求先ID]
で絞るクエリー

で、請求先IDのafterupdateイベントで
Private Sub 請求先_AfterUpdate()
Me!直送先ID.Requery
end sub
と記述する、で、どうよ?
178173:02/08/03 14:12
>>176さん、>>177さんありがとうございます。
巧くいきました。

ざっとみて、>>177さんのやりかたの方がやりやすそうなのでこちらでやって、巧くいきました。

>客は個人客ではなくて企業、支店は貴方の支店ではなくて顧客の支店(直送先)ということでよいかな?
そのとおりです。また言葉たらずでもうしわけありませんでした。

動きてきには請求先IDをいれたらRequeryで直送先IDのコンボボックスを読みなおす・・・で良いんですよね?
本当にありがとうございます。
これでなんとか先が見えてきました!
179176:02/08/03 15:13
ああ、そういうことか。
>お客さんが支店をもっておりまして
ここ見落としてたよ。自社の支店だと思い込んでた。
ごめんね。
180173:02/08/03 15:59
>>179
いえ、勘違いしそうな感じになってしまいすみませんでした。

SQLってこうなんだなぁ、って参考になりました。
また、疑問が出てきたらよろしくお願いします。



そういえば、みなさんお勧めの参考書って何でしょうか?
私の場合、まったくの初心者なので「できる!」シリーズが好きなんですが(^^;
181あぼ:02/08/03 19:33
なるほど・・・ようやく不可能だということを理解しました。^^;

実は私がやりたかったのは、大雑把にいってプロ野球の選手の成績を
データベース化だったんですが、その際、投球回というのがあります
よね。あれで3分の1がどうしても必要だったわけです。

4回と3分の1とかってのを「4.3」、3分の2なら「0.6」みたいに
ルールを決めて記入していけばそのデータそのものを参照するにあた
っては確かに問題ありません。

しかし、各選手のキャリア通算投球回数を算出する時に、どうしても
誤差が出てしまいます。これは、小数点以下の桁数をいくら増やして
も同じですね。

で、どうにかならないかな・・・と。
まあ、皆さんのお話を伺った限りでは、3分の1回とか3分の2回と
いった端数は予め別のフィールドに入力しておき(それぞれ1、2と入
力)、キャリア通算を算出する時に(整数フィールドの合計)+(端数
フィールドの合計/3)をするのが現実的かな、と思います。

どうもありがとうございました。
182名無しさん@そうだ選挙にいこう:02/08/03 21:15
>>181
176さんの説明でいいのかもしれないけど、少しだけ書かせて頂きます。
訳の分からない誤差は浮動小数点型によるものです。
Excelなども同じです。
コンピュータ内部の浮動小数点型の整数桁の数値は、
1桁目が2の0乗(1)
2桁目が2の1乗(2)
3桁目が2の2乗(4)
・・・
小数点以下の数値は、
−1桁目が2の−1乗(0.5)
−2桁目が2の−2乗(0.25)
・・・
といった持ち方をしています。
10進数で表現できる数値が正確に表現できない場合が有ります。
たとえば、0.5は正確に表現できますが、0.1は正確に表現ができません。
正確に表現できない数値は近似値となります。
0.1と入力した値でも、0.1という正確な値ではありません。
計算結果においても同じです。(計算の誤差は切り捨てだと思います)
(AccessやExcelで0.1を何度かプラスして実験すると誤差を確認できます)
この辺のことを理解されてると、今後、小数点以下の数値を扱う場合に
トラブルがないかと思いまして・・・。

こんなこと書くと、逆に混乱するかな???
183あぼ:02/08/03 22:11
>>182

浮動小数点型における正確な表記が不可能な例は、今回の作業においていく
つか発見されていました。
初めに長整数型で値をいくつか入力したフィールドのデータ型を、浮動小数
点型に変更した際、値が近似値に置き換えられてしまっているのをいくつか
発見したからです。ただ、それがなぜなのか分かりませんでした。
ご説明ありがとうございます。

> この辺のことを理解されてると、今後、小数点以下の数値を扱う場合に
> トラブルがないかと思いまして・・・。

そう思います。
ありがとうございます。
私はまったく野球のことは分からないのですが、データを3倍して
持たせておくのではだめですか?
185ドキュンデゴメソ:02/08/04 04:29
オートナンバーをクリアしたいです。つまり、もう一度“1”から番号を振りたいのです。
教えてくだしい。
186名無しさん@そうだ選挙にいこう:02/08/04 05:41
>>185
オートナンバーのフィールドを削除したいとかそういうことじゃなくて?
じゃ、ないだろうなあ・・・・1から手で振りたいってことか?
オートナンバーを振り直したいってこと?

どっちかわからんけど、オートナンバーフィールドをテーブルのデザインビューで削除して、
あたらしくナンバーフィールドを設けてみては?
187名無しさん@そうだ選挙にいこう:02/08/04 05:42
>>184
なんのために3倍にしたいのよ?
全部3倍にするなら、元のままでもいい気がするが・・・・
188ドキュンデゴメソ:02/08/04 06:05
>>186
ありがと。
つまり、オートナンバー型にしてあるレコードを削除しても、
そのナンバー(オートナンバーで振られた)自体は二度と使えず新たな番号が振られてしまいますよね。
例えば、1、2、3、4とオートナンバーで番号が振られた後、ここでレコードを全て削除してしまうと、
次のレコードに充てられるオートナンバーは“5”からになってしまいますよね。
これを、もう一度、“5”からではなく、“1”のナンバーから振りたいわけです。

拙い文章でどうもすいません。ご教授の程よろしくお願いします。
>>188
FAQだね。Accessのヘルプ、MicrosoftのWebサイトにも載っている。
Googleなどで検索すれば幾らでも見つかるけど。

ヘルプ等を読んで「意味がわかりません」ってのは無しね
190名無しさん@そうだ選挙にいこう:02/08/04 07:29
>>187
1/3x3=1, 2/3x3=2 で整数として持てるからじゃない。
元の数に戻すとき、3で割った余りを文字列扱いして "/3" つなげればすむ。
元の数が無限小数になって正確に復元できないのが問題なわけで。
> これを、もう一度、“5”からではなく、“1”のナンバーから振りたいわけです。

元テーブルと別名同形のものを作成(コピー不可)し、クエリーで
オートナンバー型フィールド以外を流し込んでやれば…

192名無しさん@そうだ選挙にいこう:02/08/04 13:23
>>188
あ、なるほど。みんながひっかかるところだね。
オートナンバーの振りなおしって方法はあるけどね。
めんどくさいから連番で使っていきたいならオートナンバーはやめたほうがいい。

ttp://support.microsoft.com/intl/japan/personal/default.asp?nav=kl&GSSNB=1

これでどうだろ。
193名無しさん@そうだ選挙にいこう:02/08/05 13:27
サブフォームからのデータを計算する為に
メインフォームに貼った ”非連結” のテキストボックスの内容を
レポートで表示させたいのですがうまくできません。

買ってきた本にも載っていなく分かりませんでした。
ご親切な方、とっても初心者の私にすみませんが教えてください。
よろしくお願いします。
194名無しさん@そうだ選挙にいこう:02/08/05 14:55
質問です。
レポートにワードアートを使いたくて、以下のアドレスの記事を参考にしたのですが‥‥

ttp://homepage1.nifty.com/tsware/tips/tips_141.htm

オブジェクトの挿入の段階で、
"Microsoft�WordArt�3.2"なるものが見つからなくて、
そこでつまづいてしまいました。
"Microsoft�WordArt�3.2"というオブジェクトは、
なにかを追加インストールしないと、表れないものなのでしょうか?
あるいは、この方法以外にも、レポートに
フィールドのテキストを使用したワードアートを使用する方法があるのでしょうか?
教えてください。
ちなみに、私の環境は、OSはXP HomeEditionで、Office2000を使っています。
よろしくおねがいします。
>>193
> ご親切な方、とっても初心者の私にすみませんが教えてください。
などと口走ると親切じゃない人ばかりなんで誰も答えなくなる罠(w
・・・なぁんて戯言をおいといて・・・

レポートデザインにて配置したテキストボックスの
 プロパティ-コントロールソース
に =Forms!メインフォーム名!参照したいテキストボックス名
か =Forms!メインフォーム名.Controls("参照したいテキストボックス名")
と参照したいフォームのコントロールを指定するですよ。
>>194
> "Microsoft�WordArt�3.2"なるものが見つからなくて、
これに拘り過ぎると何も見えなくなるですよ。

・フォームデザイン中に メニューバーの挿入(I) -> オブジェクト(O) を選択
・ダイアログのオブジェクトの種類(T)から Microsoft Word 図 を選択、OK押下
・Wordが起動して画面が切り替わったらWordのメニューバーから挿入(I) ->
 図(P) -> ワードアート(W) を選択
・ダイアログのワードアート スタイルの選択(W) から使いたいスタイルを選択、OK押下
・Wordを終了する
・Accessに戻ったらフォームデザインを継続する
って作業の流れでできるでしょ?
197194:02/08/05 19:19
>>196
解答ありがとうございます。
さっそくやってみたのですが、このあと、ワードアートの文字列を、
テーブルの文字列に置き換えるには、どうしたらよいのでしょう?(T_T)
198193:02/08/05 19:58
>>195
ありがとうございます。
ただ教えて頂いた方法を、式ビルダでさっそくやってみたのですが
レポートの表示が #Error と出てしまいます。

記述ミス以外にどう言った原因が考えられそうでしょうか?
すみませんがもう少し教えてください。
>>198
レポートをオープンする時、コントロールの参照元のフォームは開いてる?
200193:02/08/05 21:34
>>199
参照元は開いてました。…すみません
でも閉じて、レポートをプレビューしたら
#Name? でやっぱり欲しい数字が表示されませんでした。
>>200
いや、参照元のフォームは開いてなきゃ駄目なの。
レポートのフィールドに #Error って出るのは、どこかに誤りがあるんでしょ。
で、その誤りの原因が何なのかは聞かれても答えられない。
っていうか、ここに至るまでに自分がどんなモノをどの様に作っているのか
その内容については一切説明がなされてないからね。あとは自力で頑張れ
202193:02/08/05 23:08
>>201
サブフォームで伝票をつけて合計した物と、入金金額(これはフィールド)とで
メインフォームの上で、非連結のテキストボックスで ”差額” を表示しています。

この ”差額”をレポートで印刷したかったのですが、
そうですよね、中身が分からないと答えようが無いですよね。

ごめんなさい、自分では行きづまってここに来たので
もう一度よろしくお願いいたします。
>>202
=Forms!メインフォームにつけたフォーム名!差額
204名無しさん@そうだ選挙にいこう:02/08/06 07:32
>>202 たぶん原因は合計の部分。サブフォームのフッターでsum合計したテキストボックス
を親フォームで直接参照すると、計算しないことがある。原因はわからん。
差額のテキストボックスに =me!入金金額-sum(me!サブフォーム名.form!伝票金額)
と書いてみてくれ。
205名無しさん@そうだ選挙にいこう:02/08/06 09:47
>200
お約束のネタなのか?・・・・・。
アンタ >193で
>メインフォームに貼った ”非連結” のテキストボックスの内容を
>レポートで表示させたいのですがうまくできません
って言ってんじゃん。なんでフォームを開かずにテストすんのよ。
206176:02/08/06 11:38
>205
だからまったり行こうって言ってるでしょ。
フォームを開いてテストしてたら失敗した。そこで199さんに
>フォームは開いてる?
って聞かれて、「あ、開いてたらダメなのか」って思うじゃんよ。よく知らなかったら。
204さんが開いててもダメなケース上げてくれてるんだから、
このタイミングでそんな事言ってたら国語の成績悪かったでしょ?だよ。
久々にここ見に来ました。
ここで聞いていいか判りませんが、もし知っている方いらしたらご教授願います。

PCにExcelの2000とxpを両方入れてて、デフォルトがxpなんてことはよくあると
思いますが、AccessのVBAから、以下の方法でExcelを起動するとき、そのままだと
xpが開きますが、これを2000を開きたい(Excelのバージョンを指定して、無い場合
にはエラー)場合には何か簡単な方法はありますか?

Dim objExcel As Object
Set objExcel = CreateObject("Excel.Application")
'この後、シートをコピーしたりセルにテーブルのデータを出力したり...

Accessは2000です。OSは98,Me,Xpです。
208207:02/08/06 12:15
1つのテーブルから作ったクエリ1つ、後のクエリ2つは同じテーブルから
クエリで抽出し分解したクエリです。この合計3つのクエリを1つにまとめよう
としてクエリの新規作成で作ったのですが、レコード数が11件しかないにも拘らず
1331件表示されます。
原因がまったくわからなくてこまっています。どなたかご教授ください。
>>206
答え書きながら"これって2ch恒例の釣りか?"って勘ぐることありますよ。
他人に示された手順をそのまんまなぞって「駄目でした」みたいな反応
されるとね。努力というか試行錯誤した跡が感じられないというか。

適当に>>205さんみたいなツッコミ役がいてくれたほうがいいと思います。
現に質問投げてくる人って、他人に対して意思伝達する能力が欠落して
いるんじゃないの?って首傾げたくなるような、言葉足らずな文面が多いし。
これで「詳しく教えてください」なんざ、虫が良すぎるんじゃないかと。

# まぁ、言葉使いの悪さや煽りも含めて2chと割り切ってますけど?
# それが嫌なら他のコミュニティ探せばいいわけですから
やっぱ、意味不明瞭な質問があったら触らずに放置しとけってことですかな?

>>207
CreateObjectの引数にバージョンを指定できるようです。
 Excel.Application.X
 X=バージョン番号
>>208
そういう「箱の蓋を開けずに中身を当てろ」みたいな相談の仕方はやめてください。
原型のクエリ3つと新たに作ったクエリのSQL文をここに掲示してくだされば
一緒に原因を探ってさしあげます。(答えがみつかるかは別の話だが・・・)
213176:02/08/06 14:22
>209 210
僕もダメな質問は流したり、も少し詳しく言わないとわかんないよとか言うから、
>>200の直後に205さんのレスならわからんでもないんだけど。
200>参照元は開いてました。…すみません
の一文で最初は開いて試してたって読み取れるけど(201さんは読み取ってレスしてる)
流し読みで勘違いしたってこともあるだろうし。
でもさ、>>201-204のやり取りで「閉じてたから参照できなかったんじゃなくて
合計使ってるから参照できないんじゃないか?」って別の理由の可能性が提示されてる後に、
205>お約束のネタなのか?・・・・・。
全然読み取ろうとしてないじゃん。ツッコミ役はいたほうがいいね。
けど、ずれてるツッコミはいらないし、今回の205さんのは僕から見たら
いわれのない批難に見えたよ。

#他人にああだこうだ言うときは自分もああだこうだと言われることを覚悟して言うよ。
#僕も。205さんもツッコミ入れるなら的確なヤツか笑えるの頼むね。

>208
212さんに同意。たぶんクエリの間の結合をしていないとかだろうけど、
難儀なことしてるみたいだから違う原因かもしれない。
>>1の1行目>質問する人は可能な限り具体的に書くこと
214オリジナル207:02/08/06 14:56
>>211
Set objExcel = CreateObject("Excel.Application.9") 9=Excel2000のバージョン番号
で行けました。感謝!

やっぱ2chは回答早くて嬉しいですね。
215193:02/08/06 15:32
昨日、非連結のテキストボックス内容をレポートで印刷する方法を伺った者です。 >>193 >>202
皆さんからのイロイロなレス、ありがとうございます。

>>240
サブフォームのフッターで合計処理した物を、親フォームで直接参照していました。
教えて頂いた方法でさっそくやってみたのですが

>差額のテキストボックスに =me!入金金額-sum(me!サブフォーム名.form!伝票金額)
#name? で蹴られてしましました。
確認の為に、 入金金額のみで表示される事を確認した後
=me!入金金額 に書き換えたらやはり #Name? でダメでした。

使ったのは、コントロールソースの式ビルダです。
いろいろ試したのですが、勝手に [ ] で項目が閉じられたりしました。
カッコを消したり、括る位置を書き直したりもしましたが やっぱりダメでした。

>>206
その通りです。
フォームは開いてる?と聞かれたので、開いていては不味いのかな?
と思いテストをして結果を書きました。ちょっとうかつでした。

結局、まだ非連結テキストボックス内容をレポートで表示/印刷ができてないです(泣)
216193:02/08/06 15:33
>>240>>204の書き間違いです。すみません。
>>215
具体的なフォーム名、コントロール名と設定している関数、式を漏れなく書いてくださいよ。
それとエラーが起きている場所(フォーム又はレポートのコントロールどちらなのか)も
書いてください。 とにかく省略はしないで、箇条書きでもいいからキチンと書いて。
218193:02/08/06 16:49
>>217
はい。
親フォーム名は、F_メイン
子フォーム名は、F_請求伝票 そして金額をフッターでSum[金額]と書いて”伝票合計”として
親フォームで、入金金額−伝票合計で差額を計算しています。(入金金額はフィールド有)

その差額計算は、非連結のテキストボックスのコントロールボックスで(名前を”差戻し金”)
=[入金金額]-[F_請求伝票]!伝票合計
と書いて、差額を表示してます。

問題のレポートで、
=[Forms]![F_メイン]![差戻し金] と書いて #Error と失敗している所でここに来ました。

それとレポート上で直接計算もやってみましたがダメでした。
消費税の計算などもまだやりたい事があるので
フォーム上の非連結テキストボックスからの表示/印刷がしたいです。

こんな内容で良いでしょうか?
それではよろしくお願いします。
>>215
あまりにも不透明&不毛な話が続いてるんでサンプル作って検証してみだですよ。

サブフォーム用テーブル 
 テーブル名:Tdetails
 フィールド:{{d_id,テキスト型}, {value, 長整数型}}

サブフォーム 帳票形式
 フォーム名:Fdetails
 レコードソース:Tdetails
連結コントロール:d_id, value
 非連結コントロール:total -> フィールドvalue の集計用
 式: total のコントロールソースに =Sum([value]) を設定

メインフォーム 非連結・サブフォーム含む
 フォーム名:Fmain
 非連結コントロール:m_id -> サブフォームとのリンクフィールド
  amount -> 数値入力用
  diff -> amount から サブフォームの total の値を減算し結果を保持
式: diff のコントロールソースに =amount - Fdetails!total を設定
 サブフォーム:Fdetails
 メイン/サブリンクフィールド:親リンク -> m_id / 子リンク -> d_id

レポート
 レポート名:Rtest
 非連結コントロール:test -> フォームFmainのコントロールdiffを参照出力
 式:test のコントロールソースに =Forms!Fmain!diff を設定

環境 Windows2000Pro.SP2 Access2002 SP-1

はしょって作ってみたけど、こんなのでもキチンと出てるんだけどなぁ・・・
Accessのバージョン違いで振る舞いが異なるのか?
220名無しさん@そうだ選挙にいこう:02/08/06 18:04
以前から思ってたんだが、質問用のテンプレートみたいなものがあったほうが良くないか?
少なくとも、AccessやOSのバージョンは明記しておかないと、機能や振る舞いが違う部分
もあるし、ヘルプへの導き方なども違うから。
>>220
以前から明記して欲しいことをお願いしてるんですけどねぇ・・・
そもそも質問/相談してくる人は過去ログは読んでなさそうだし
トップ>>1の断り書きすら読んでいないようですから、どこまで
効力があることやら・・・無いよりはマシだと思いますけど。

# ボトルネックはログ読まずに飛び込んできて質問投げる人ですよねぇ
# ま、そういう人はサーチエンジンで調べることもしてなさそうだし
222名無しさん@そうだ選挙にいこう:02/08/06 19:54
ある一定の時間がきたらクエリを起動するようなプログラムは可能でしょうか
毎日同じ作業してるんですけど。
223名無しさん@そうだ選挙にいこう:02/08/06 20:07
↑os:win2k、アクセス2kです。
>>222
Webサイト巡回していると、そのようなネタをチラホラ見かけますが。
-> スケジュール管理による自動実行
225≠222:02/08/07 03:50
>>224
ファイルを開けると自動的にそのクエリを実行するようにしておいて、
タスクスケジューラー等を使えばいいってことですか?
>>225
そうですね。SQL処理部分とタスク実行部分を切り分けて考えれば
実現できそうな気がしてくるでしょ?

NT/2000系OSならスケジュール管理の部分は、タスクスケジューラの
他に Atコマンドという選択肢もありますね。
227225:02/08/07 06:55
ファイルを開くと自動的にクエリーを起動するってのは、
どうやればいいんでしょうか。
AutoOpenを使えばいいのかなと思ったのですが、
具体的にどこにどう書けばいいのか分かりませんでした。

あと、
1 クエリーやマクロのショートカットをスケジュールソフトに登録する
2 WSHで操作を書いてそのスクリプトをスケジュールソフトに登録する
というのを思いついたのですが、1は(Windowsに付属の)タスクスケジューラーでは
動きませんでした。2は試してません。

自分はWin98SE、Access97です。
>>227
Windows2000Pro.SP2 Access2002 SP-1 な環境しかないので該当する部分だけ
拾い読みしてください。

Accessに関する部分
MDBファイルを開いた時に自動実行したい場合は、そのファイルに AutoExec と
いう名前のマクロを1個作成しておけばできます。
AutoExec をキーワードにAccessヘルプ参照してください。

AutoExecマクロに登録するアクションは
・SQLの実行
 「Insert into 〜 Select * from 〜 」のような1行で表記できる単純な
 処理ならばSQL文を直接記述して登録する
・クエリーを開く
 あらかじめ用意したクエリーを実行したい場合は、そのクエリー名を記述して
 登録する
・プロシージャの実行
 SQL文、またはクエリーを開いて処理するVBAプロシージャを作成しておき
 そのプロシージャ名を記述して登録する

以上のいずれかを選択すればよいと思います。

これでAccessの担当する部分がまとまります。
MDBファイルオープンから処理実行までの単体テストもできるでしょ?

「え〜、マクロ?」とか考えずに手抜きできる部分は素直に手を抜くほうが
簡単に実現できるケースもあると思うですよ。
>>228の続き
MDBファイル格納ディレクトリ: C:\work
MDBファイル名: test.mdb

タスクスケジュールに関する部分
・Access.exeのショートカットを作成
 Windowsスタートボタン - 検索(C) - ファイルやフォルダ(F) を選択
 access.exeをキーワードに検索
 見つかったMSACCESS(表記は違うかもしれない)のショートカットを作成
 C:\workディレクトリにショートカットを放り込む
・ショートカットのプロパティの変更
 作成したショートカットのプロパティを開く
 リンク先(T):の引数を補足
  オリジナル
  "C:\Program Files\Microsoft Office\Office10\MSACCESS.EXE"
  変更後
  "C:\Program Files\Microsoft Office\Office10\MSACCESS.EXE" "C:work\test.mdb"
 変更を保存

この作業で作成したショートカットを開くと、あらかじめ指定しておいた
MDBファイルを開いてAccess.exeが起動します。
230204:02/08/07 08:35
漏れも忘れてたが、サブフォームとサブレポートは別モノだ。
レポートをどうにかしたいっつうことで、まずフォームの世界のことは全部忘れれ。

親レポート
  |
  伝票Noで連結
  |   
  子レポート
    伝票No 金額

で、子レポートの金額合計を出す場所だが、ページフッターに書いてはいかん。
子レポートで、伝票Noでグループ化して伝票Noのフッターを表示する。
で、そこに 金額合計というテキストボックスをを作って、=sum([金額]) と書く。

親レポートの 入金−金額合計を計算するテキストボックスは、
=[入金]-[子レポート名].[report]![金額合計]

だ。
ちなみに >>214 >やっぱ2chは回答早くて嬉しいですね。
つーのは、まぁ悪気がないんだろうけど、うちらサポートセンターじゃねぇんだから。
画面の向こうにいるのは、これに答える義務のない人間だということを忘れんなよ。
 漏れなんかなぁ、インターネットのない時代からやっててなぁ、一冊5千円以上もする
本買ってなぁ、NIFTY-SERVEなんて「お、こんな世の中に便利なものが」っていそいそと
質問したらエリート気取りのやつばかりで「てにをは」一つで叩かれてなぁ、ラワァァァン..以下略
231204:02/08/07 08:37
230 >> 215の回答 失礼!
>>229の続き

タスクスケジュールに関する部分
・スケジューラへの登録
 Access起動用(同時MDBを開く)ショートカットを選択し、実行日時を指定
 諸々の設定が終わったら登録

これでスケジューラからのAccess起動からクエリ(SQL)実行まで通しで
テストできます。
残件でクエリ処理終了後のAccess終了処理がありますけど、試作しながら
どこに組み込むか決めてやればいいでしょう。

こんな感じでやってみましたが、いかがでしょうか?
233225:02/08/07 09:17
>>228-229 >>232
タスクスケジューラーは、プロパティの[実行するファイル名]の所が

  "(Accessの実行ファイル)" "(開きたいファイル)"

になってないとダメということですね。
これで、227でダメと言った1もうまく行きました。
自分的に

  Scheduled Tasksのフォルダに開きたいファイルをドロップ
   ↓
  プロパティの[実行するファイル名]の頭に「MSACCESS(半角スペース)」と加える

というやり方で行こうと思います。フルパス書かなくても分かってくれました。

AutoExecもうまく行きましたです。
 アクション:プロシージャの実行
 プロシージャ名:モジュールに書いた関数
というのを試しました。

非常にすっきりしました。ありがとうございました。
234225:02/08/07 09:19
>プロパティの[実行するファイル名]の所が

すみません。自分のは[実行するファイル名]でした。
235完全無料:02/08/07 20:34
幼女、コギャル、女子高生、盗撮モノ!全て無料公開!!
これっきゃないでしょう!
http://ninkirank.misty.ne.jp/02/enter.cgi?id=madrix01
236名無しさん@そうだ選挙にいこう:02/08/08 01:09
質問です。よろしくお願いします。
ユニオンクエリにフィルタをかけたいのですが可能でしょうか。

フォームで、テキストボックスに入力した文字列を、
ユニオンクエリの中から曖昧検索させて、
結果をサブフォームに表示する画面を作っています。
選択クエリだと出来るんですが、ユニオンクエリはどこに式を書いて良いのか分かりません。
237225:02/08/08 05:09
>>234は無視してください。
これは普通のショートカットは、ウチのも[リンク先(T):]になってます<当たり前。
ボケてました。すみません。
238225:02/08/08 05:13
あ、まただ。

これは普通のショートカットは

ショートカットは

たびたびすみませぬ。
239名無しさん@そうだ選挙にいこう:02/08/08 09:51
>>193が解決したかどうか知らないけど(あれから現れてないし)
Windows2000ProSP1, Access97SR-2の環境で>>219でやったのと
同じことを試行した結果、エラーは発生しませんでした。

原因がわからないからお手上げだわ・・・
240名無しさん@そうだ選挙にいこう:02/08/08 14:22
厨房な質問しても良いですか?

本にWORDに差し込んで印刷ってあるんですが、リポートで雛型作って印刷とどっちが
ベターなんでしょうか?

なーんか、WORDに差し込むのめんどくさそうで・・・
リポートで十分じゃないのかなぁ??

こう言うときはWORDに差し込むと良いよって事例とか教えてくれると嬉しいです.
241名無しさん@そうだ選挙に出よう:02/08/08 19:12
>ユニオンクエリーにフィルター
ユニオンクエリをテーブル作成クエリにして、
その出来たテーブルにフィルターをかけるクエリーを作ってみては?
だけど、SQLの本を読んで文法の勉強をしたほうがいいかも?
SQLは文法がわかってしまうと案外簡単!
SQLで書くと、ユニオンクエリーの部分をFrom句に持ってきて、
あとは普通にWhere句にフィルター条件を書けばよいです。
242名無しさん@そうだ選挙にいこう:02/08/08 22:19
すいません。
アクセスって、あとから「この項目いらなかなったなぁ
で消したり、「こういう項目入れたい!」
って加えることできますか?
>>242
質問されている範囲でYESかNOの二値で答えろと言うならば、YESです。
244242:02/08/08 22:46
頭が悪くて質問があいまいすぎでしたね・・・
詳しく書くべきでした。しいません。

今住所名前入力してるのですが、名前は姓名分けた方がいいんでしょうか?
今空白で1つにしてますが、後から分けて姓名にすることできますか?
そのときは今1つの姓名の項目を消して、改めて入力しなおすのでしょうか?
自動的に分割したりできますか?
>>244
「話の内容のうち、1/3は理解され、1/3は誤解され、1/3は通じない」そうです。
それだけ、相手に意思を伝えるのは難しいということです。気になさらずに。

名字となまえを1項目で持つ場合と、名字で1項目、なまえで1項目に分割して
持つ場合のどちらが良いのか?と言うことですよね。
それぞれ利点、欠点があるはずですので、どちらとも言えません。
データの取り出し方が、自分のニーズに合っているほうを採用すればよいと
思います。

> 今空白で1つにしてますが、後から分けて姓名にすることできますか?
> そのときは今1つの姓名の項目を消して、改めて入力しなおすのでしょうか?
> 自動的に分割したりできますか?
後半部分の結論は、テーブルの中に既に存在する名前フィールドとは別の
フィールドを追加することはできますが、フィールドそのものを分割する
ことはできません。
 名前フィールド+なまえフィールド
 名前フィールド+名字フィールド+なまえフィールド
はOKですが
 名前フィールド -> 直接分割 -> 名字フィールド+なまえフィールド
とはできないのです。

*説明が長くなるので、ここで区切ります
246244:02/08/08 23:52
・・・MEが点。むずい。
つまりできないんですね。一応分割して作ることにします。
ありがとうございました。!
>>245の続きです
上記で説明したようにテーブル内の1フィールドを直接分割はできないので
そのフィールドに既に書き込まれているデータを”自動的”に分割すること
はできません。
既存データを新たに設けたフィールドに分割して書き込む処理を、クエリーや
VBAプロシージャを作成して”自動的”に行うことは可能です。
ただし、元のデータが「山田 太郎」のように名字となまえを分割するポイント
が明確な場合はクエリー、VBA等で処理可能ですが、「山田太郎」のように分割
するポイントが不明(決定できない)な場合は手作業となるでしょう。

大まかな流れは
 フィールド追加 -> 既存データを分割して新規フィールドへ書き込み ->
 旧フィールド削除
となるでしょうか。

まぁ、答えは一つじゃないと思います。
ケースに応じて、たどり着く答えは幾通りか存在するでしょう。
その中から自分のニーズに合った答えを選択するのだと思います。
248名無しさん@そうだ選挙にいこう:02/08/09 00:22
連結オブジェクトフレームである条件時に画像を表示させたいんですけど、
何故かPCによって表示できたりできなかったりするです。
何か原因に心当たりないでしか?
249236:02/08/09 06:09
>>241
レス遅れました。ありがとうございます。
確かにSQLが全然分からない!のでテーブル作成しました。
でもちょっとカコワルイ(´Д`)
頑張ってSQL勉強してみます。
>240
ん〜例えばさ、ワードに差込印刷したら、新規文書に差込だかできるでしょ?
自動で名前とか数字差し込んで文書を作って欲しい、けどレイアウトもその時々でいじりたいよ、
って要望とかならフォーム/レポートじゃ無理ぽだからワードに持って行くかな?
>>240
250と被るけど、Wordだと修正可能だからね。
レポートの内容の一部分を、他の書類(ドキュメント)でも
再利用したいとか、そういう場合には、Wordが便利。
252240:02/08/10 13:54
>>250-251
なるほど、よく判りました。
ありがとうございます。

じゃあ、決められた形に印刷する場合はレポートで大丈夫そうですね。

また、疑問点出てきたら質問させていただきます。
よろしくお願いします。
253名無しさん@そうだ選挙にいこう:02/08/10 18:26
保守age
254名無しさん@そうだ選挙にいこう:02/08/10 19:14
Access2000で、電話番号を定型入力で、!\(9999")-"9999\-9999;;_
として、電話番号0120-55-1234となるように入力しても、
0120-5512-34となります。これはどこを変更すれば直りますか?
255名無しさん@そうだ選挙にいこう:02/08/10 20:25
、!\(9999")-"99\-9999;;_
256254:02/08/10 20:53
>>255
0120-55-1234も、
01-2345-1234も
入力したい場合はどうすればいいですか?
257名無しさん@そうだ選挙にいこう:02/08/10 20:54
不可
258名無しさん@そうだ選挙にいこう:02/08/10 21:43
電話番号というのは、

( a )-( b )-( c )

aは2〜4桁の市外局番
cは必ず4桁
bは残り

で合ってますか?
こんな感じの規則があれば、市外局番のテーブルを使って
- を入れる場所決めれませんかね?
259258:02/08/10 21:45
>>258
定型入力の話じゃないです。
260名無しさん@そうだ選挙にいこう:02/08/10 21:52
>>258
可能、ただし、プロパティーの定型入力の欄には書けない(と思う)
電話会社でもない限り、そのような細かな仕掛けは不要とオモワレ
どうしても嫌なら、入力用のテキストボックスを3つに分ければヨロシ
261名無しさん@そうだ選挙にいこう:02/08/10 22:05
印刷するときは [市外局番] & "-" & [局番] & "-" & [番号] とすれば、
思ったとおりに印刷される。
262名無しさん@そうだ選挙にいこう:02/08/11 04:08
>>254
!\(9999")-"9999\-9999;0;_
にしろ。
263名無しさん@そうだ選挙にいこう:02/08/11 04:43
>>258
最初の2桁が3桁(03-x->03x)に変わったり4桁が3桁(042x->042-x)に変わった例が
今までにあるんだから、- で区切ってしまうのはまずいんじゃないの?
数値だけ持って、表示や出力の時に整形すればいいじゃん。
>263
いや、数字だけ持ってても区切りが判らないから。
別で区切りの情報を持っているんでも無いかぎり。
変わったときは変わる地区の局番だけクエリで抽出して
更新クエリか数が少なければ手で直すかするんじゃない?
僕は定型入力使わないで-入れて入力するよ、電話番号は。
フォームを表示したらダイアログぽっくすが出てきて、
担当者名を入れると、フォームの一部に、
担当者:入力した名前
と表示したいんだけど、どうすればいいでしょうか。
この担当者名のデータは、テーブルには、保存しません。
ただ、表示するだけなんですが。
266名無しさん@そうだ選挙にいこう:02/08/11 19:47
age
267名無しさん@そうだ選挙にいこう:02/08/11 21:08
フォームにコンボボックスを配置したら、
ウィザードが走りませんか?
「コンボボックスにテーブルまたはクエリーを表示」を選択し
テーブル(クエリー)等を選ぶだけでOKです。
268名無しさん@そうだ選挙にいこう:02/08/12 01:18
>>265
本当にそれだけでいいのなら、
(1)フォームにテキストボックスを用意
(2)フォームの開くときイベントで
Me.用意したテキストボックスの名前.Value = Inputbox("メッセージ","ボックスのタイトル","規定値")
269名無しさん@そうだ選挙にいこう:02/08/12 12:20
アクセス2000プロジェクトにて、ビューからフォームの値を参照するには
どうすれば良いでしょうか?
mdbのクエリのときは LIKE '[forms]![フォーム名]![コントロール名]'で
参照できましたが、ビューで同じようにしても参照できないんです。

やりたい事はフリガナ検索フォームにのフリガナ部に入力された値をビューで
参照させて別フォーム(サブフォーム)に表示する、ということなんですが。
お願いします。
270名無しさん@そうだ選挙にいこう:02/08/12 12:42
>>269
ビューでは不可能。
ストアドプロシージャ使え。
271269:02/08/12 13:33
>>270
ありがとうございます!ビューじゃ無理だったのですね。。
272名無しさん@そうだ選挙にいこう:02/08/12 14:27
???
273名無しさん@そうだ選挙にいこう:02/08/12 15:10
うんこ板に遊びに来てくださいです。。
http://jbbs.shitaraba.com/news/532/unkounko.html
274270:02/08/12 15:26
275269:02/08/12 15:49
>>274
重ね重ねありがとうございます。
ストアドはインアウトが出来るもののフォームに連結表示が出来ないために
いったんビューにしてフォームに連結表示するわけですね。
なんか出来そうな気がしてきましたよ!
276269:02/08/12 15:58
↑自己レスです。ちょっと間違った表現をしたかなぁ。
って誰も気にしてないかな(^-^ゞ
277名無しさん@そうだ選挙にいこう:02/08/12 16:18
>>274
そんな機能が有ったんですね!
全然知りませんでした
勉強勉強っと
278名無しさん@そうだ選挙にいこう:02/08/13 00:25
今までテーブルだけで十分に間に合ったのですが
クエリっていつ使うのですか?
決定的な必要性ってあるのですか?
>>278
必要な人には必要、必要じゃない人には必要じゃない。
しかし
必要に迫られてクエリを使う人もいるし、
必要じゃないのにクエリを使う人もいる。
なんとも言えないね。
280:02/08/13 05:43
テーブルに式って書けます?
簡単な式を書くのでもクエリにしないとダメと理解してるんですが。
食べ物に例えると、”テーブル”は生の素材。
大根・ニンジン・肉・メロン・生肉。食えるものもあるし食いにくいものもある。
”クエリー”はそれらを組み合わせて料理したもの。
282名無しさん@そうだ選挙にいこう:02/08/13 10:30
Access97でつくってあるファイルをAccess2002で開こうとしたところ
開けないとの、メッセージが出てきてしまいました。
これを開くにはどうしたらよいのでしょうか?
レポートに配置されたテキストボックスの境界線を表示させたまま
でも中身は印刷しない ということは可能でしょうか?
データは何か入っているという状態でです。

たとえば-999が入っている場合データのみ印刷しない
という感じにしたいのですが・・・。

本来なら四角の枠を使い、そしてテキストのVisibleをFalseにするのが
いいと思うのですがコントロールが多いのでこれ以上増やせないのです。

やはり無理ですよね・・・。なにか良い案ないでしょうか・・・。
282です。
失礼しました。出来ました。
>283
Access2000以降なら条件付書式でできるよ。
286Tommy:02/08/13 12:08
>>87
しばらく市販の本を読んで上手く動作しない原因を探していたのですが、
教えていただいた通り、Exit Subを作ってやったら上手く行きました。
まだまだ道のりは長いですが、また一歩進みました。
どうもありがとうございました。
287283:02/08/13 13:12
>285
すみません、ちょっと良くわからないのですが
条件付書式で設定してデータのみを表示させないようにする
ということなんでしょうか?
どのようにやるのかよく解らないのです・・・。
条件付書式はフォントの設定だけしかできないものだと思っていたもので・・・。
288名無しさん@そうだ選挙にいこう:02/08/13 13:35
VBAでfor・・・next文のループの途中をスキップして再び
for文の条件式にもどるのはどうすればいいんで
しょうか?
for・・・next文のなかにGotoをいれるしか無いんでしょうか?

例)
Dim rs as new ADODB.Recordset

For i = 0 to 10
.......................
.......................
if rs.recordcount = 0 then
(レコードカウントが0の時はこれ以降を
   飛ばしてカウンタの値を+1してループを
   継続したい)
.......................
.......................

next i

というようにしたいのです。
助けて・・・
>>288
For i = 0 to 10
 .......................
 .......................
 if rs.recordcount <> 0 then
  (レコードカウントが0の時はこのif 〜 end if の中は実行されない)
  .......................
  .......................
 end if
next i
290名無しさん@そうだ選挙にいこう:02/08/13 15:23
Access2000を使っています。
テキストCD テキスト名   学習内容
  1    WORD
  2    Excel

という感じで作ったときにテキストの種類によって学習内容に表示される
コンボボックスの種類を変更したい場合はどうすればよいでしょうか?
>>200
コンボボックスは1種類しかないんじゃないのか?
292名無しさん@そうだ選挙にいこう:02/08/13 15:46
1
293名無しさん@そうだ選挙にいこう:02/08/13 15:50
>290
291 の指摘通りコンボボックスの種類はAccessでは1種類しか
選べないですが、多分、コンボボックスのリスト内容を変更したい
ということだと解釈してみる。

この場合、VBAでコード書くのが手っ取り早いので、
タイミングはテキスト名、あるいはテキストCDの更新後処理がベスト。
コンボボックスのRowSourceをイジってみるべし。
ただし、ソースタイプには気をつけて。
294288:02/08/13 17:29
>>289
ありがとうございます。すっかり<>の存在を忘れてました。
自分が情けない、鬱だ死のう・・・・

  ;y=ー( ゚д゚)・∵. ターン
  \/| y |)
>>278
>クエリっていつ使うのですか?
>決定的な必要性ってあるのですか?
例えば、
@情報を選びたい場合:
 項目が 住民番号、世帯番号、続き柄、生年月日、氏名、性別、住所の7項目のテーブルがあるとします。
 このテーブルから、今年小学校一年生になる児童を抽出して入学案内状を作りたい場合に、
 クエリーで生年月日を条件に抽出する場合にクエリーを使います。
A複数のテーブルを連結させたい場合
 @の処理で、更に世帯主の氏名を入学案内状に含めたい場合に、
 テーブルを連結させて、世帯番号、続き柄、を元に世帯主の情報を取得します。
 これもクエリーを使用します。
クエリーを使えば、テーブルに対して他にもいろいろな処理をさせることが出来ます。

>>280
>テーブルに式って書けます?
>簡単な式を書くのでもクエリにしないとダメと理解してるんですが。
テーブルに式を文字列としてなら格納できます。
おそらくテーブルを開いたときに式を書いた項目には計算結果を表示させたいのだと思います。
その値をテーブルに格納する必要がある場合は、入力フォームに計算式を記述して、入力時に計算させます。
しかし、通常計算結果は“導出項目”という事で、テーブルに格納することはあまりありません。

>>283
>レポートに配置されたテキストボックスの境界線を表示させたまま
>でも中身は印刷しない ということは可能でしょうか?
>データは何か入っているという状態でです。
条件付書式について:
 コントロールのコントロールソースが整数の場合には、
 プロパティー・書式に例えば 0;(0);;"Null" と書くと、値がゼロの場合はカッコ付きで、
 負の場合は何も表示されず、NULLの場合は"NULL"と表示させる事が出来ます。
 4つの書式をセミコロンで区切って書けば、正の場合、0の場合、負の場合、Nullの場合の
 書式を定義できるのです。
他の方法:
 =IIf([社員コード]=1,"",[社員コード])
 他のコントロールである、[社員コード]が、1の場合は、当該項目を表示させなくできます。
 枠は表示されます。

>>288
>VBAでfor・・・next文のループの途中をスキップして再び
VBAには他の言語の continue に相当するステートメントはありません。

>>290
>コンボボックスの種類を変更したい場合はどうすればよいでしょうか?
コンボボックスに表示される情報を、他の入力された項目の値によって変更させたいという事でしょうか?
それには、コントロールの集合ソース(クエリー)を工夫する必要があります。
また、他の項目が更新された際に requery を実行しないと、集合ソースに反映されないので注意が必要です。
296名無しさん@そうだ選挙にいこう:02/08/13 18:25
Access2000を使っています。
VBAで、あるフォームを開くときにソースを変えることって
できますか?
つまり、AというボタンをおすとA1というテーブルをソースに
フォームが開き、BというボタンをおすとB1というテーブルを
ソースにフォームが開くという風にしたいのです。
この場合、フォームは1つです。
フォームを開く際、ソースを指定するやり方があれば
教えてください。
297名無しさん@そうだ選挙にいこう:02/08/13 18:45
>>296
フォームに複数ボタンを貼り付け、それぞれのボタンクリックで
個別のフォームを開くって指定すればいい。別に特別な操作じゃないよ。
298名無しさん@そうだ選挙にいこう:02/08/13 19:06
>>296
"レコードソース"
でヘルプを検索してみてください。
フォームを開いているときにダイナミックにレコードソースを変更する方法があります。
案外簡単
299g:02/08/13 21:04

-------風俗の総合商社・MTTどこでも-------

〇デリバリーヘルス〇デートクラブ〇女性専用ホストクラブ〇
〇ハードSM奴隷クラブ〇レズビアン倶楽部〇ホモ・オカマ倶楽部
〇変態痴女と遊ぶ会〇痴漢・覗き趣味の会〇変態同好会・各種!
●楽しく遊べます! 090-8002-8356番
-----------美男・美女会員など多数在籍中-----------
  http://www.mttdocomo.jp/
-----女性アルバイト随時募集・高収入(日払い)月100万円可能-----
-----レズビアン・スタッフ●ホモスタッフ●女性専用ホストスタッフ同募-----
http://www.mttdocomo.jp/
------------------------------------------------
300296:02/08/13 21:35
>>297さん、298さん
レスありがとうございます。
>297さん
すみません、「個別のフォームを開く」というのはそれぞれフォームを
作っておくということですか?できればフォームは1つにしたいのですが。
ちょっとよくわかっていないので、取り急ぎヘルプで検索します。
すみません。
>298さん
早速みてやってみます!
301285:02/08/13 23:56
>283
条件付書式でフォントの色をテキストボックスの背景色(普通は白だね)と
同じにする。
302名無しさん@そうだ選挙にいこう:02/08/14 01:25
教えて下さい。2002を使っています。
クエリのフィールド名覧にselect case文を入れる方法はありますで
しょうか?もしかしてあそこに入れれる条件分岐はIIfだけですか?

それとIIfやselect case文に同じ処理に対して、複数の条件式を入れる時は
どうしたら良いのでしょうか?
>>302
前半部分
Select Caseを直接は無理。
Switch関数か、ユーザー定義関数で対応しる。

後半部分
言ってる意味が良くわからん・・・
304名無しさん@そうだ選挙にいこう:02/08/14 06:04
SQL(Oracl,SQL)はCASE文をサポートしているので、
アクセスで、SQLを直接入力すれば、何とか使えるのでは?
305304:02/08/14 06:14
確かに意味が良く解らん
具体的に説明してちょ
>302
> それとIIfやselect case文に同じ処理に対して、複数の条件式を入れる時は
> どうしたら良いのでしょうか?

[データ]がAだったらXをBだったらYをそれ以外はZということ?

IIf([データ]=A , X , IIf([データ]=B , Y , Z ))こんな感じ?
307304:02/08/14 11:04
お答えありがとうございます。
前半の部分swich文を調べてみます。

後半の部分ですが、後から自分で読んでも
良く意味が分かりませんでした!すんません!

例えば、5000<5500と、7000<7500の二つの条件
に当てはまるときに、同じ一つの処理をしたい場合は
どうすれば良いのでしょうか、、、?たぶん二つの
分岐文に分ければ良いのですが、あのフィールド名に
入れられる文字の数が限られているので、、。
この説明もおかしいかな、、、。
308283:02/08/14 11:24
>295
感謝!遅レススマソです!
309名無しさん@そうだ選挙にいこう:02/08/14 13:25
>>307
無理せずに、母国語で書き込んでみてくれ
誰かわかるかもしれん!
310307:02/08/14 20:22
>>309
うう、、。国に帰ります。
>304,307,310
>例えば、5000<5500と、7000<7500の二つの条件に
>当てはまるときに、同じ一つの処理
ここがなにが言いたいかわからないねえ。
「5000<5500と、7000<7500の二つの条件」は、君が僕らと同じ数学を使う
知的生命体ならこの宇宙のどこでもいつでも真なはずなんだけど。
ちなみに僕は三次元のものだけど、念のためにお聞きしますね。
どちらの次元からお書込みでしょう?

それなりに解釈すると
5000<a<5500かつ7000<b<7500か、
5000<a<5500または7000<a<7500かな。
「二つの条件に当てはまる」を重視すると上だし
「同じ一つの処理」に重みを置くと下だねえ。

例えば、じゃあなくてどんな条件でどんな処理をしたいのか書いてみたら?
312307:02/08/15 21:26
多分三次元です。いっしょです奇遇ですね。

>>5000<a<5500または7000<b<7500か、
これです!

実際はあるフィールドに1から10000までの数字がたくさんあります。
それを分類する為に、1から299は「山田さん」、300から
499までは「伊藤さん」等とクエリで表示される様にしたいのですが、
特別な場合がありまして、5000から5500と、7000から7500は
両方とも「長谷川さん」と表示されなくてはならないのです。
こういう処理ですが、どうでしょうか?やっぱりダメですか?
313303:02/08/15 22:33
>>312
「または」って処理をするのなら「OR」を使えばいいよ。
IIf([フィールド名] Between 5000 And 5500 Or [フィールド名] Between 7000 And 7500,"長谷川さん","モナー")

更新クエリかVBAを使う方が楽な気がするのは気のせい?
314名無しさん@そうだ選挙にいこう:02/08/15 22:36
VBAで関数を作れば更新クエリーで可能です。

Function getname(intCode As Integer) As String
if intCode >= 1 and intCode <= 299
getname = "山田さん"
elseif intCode >= 300 and intCode <=499
getname = "伊藤さん"
elseif ( intCode >=5000 and intCode <= 5500 ) and ( intCode >= 7000 and intCode<=7500 )
getname = "長谷川さん"
else
getname = "該当なし"
end if
End Function

として、
更新クエリーのレコードの更新のところに
getname([あるフィールド])

とすれば、OKです。

他に、もっと簡単な方法もあるかも知れません。


315名無しさん@そうだ選挙にいこう:02/08/16 01:26
数値FROM 数値TO 分類名
1 299 山田さん
300 499 伊藤さん

5000 5500 長谷川さん

7000 7500 長谷川さん

という分類テーブルを作って、

SELECT T_データ.ほげ, T_データ.数値, T_分類.分類名
FROM T_データ, T_分類
WHERE T_データ.数値 BETWEEN T_分類.数値FROM AND T_分類.数値NUMTO

他にも手法はあるはず(FromとToでなく、299,499...という各分類の上限
値だけ持たせるとか)。データベースらしい使い方、というのを追求してみ
るのも悪くないかもね。
316名無しさん@そうだ選挙にいこう:02/08/16 05:06
>>278さんの質問見て、ちょっと質問したくなりました。
自分はクエリ・ビュー・マクロをデバッグでは使いますが、納品物では使いません。
これがあると、何となく中途半端な製品のような気がしまして・・・。
好みもあるんでしょうね。
みなさん、どうされてます?
初歩的な質問ですみません
SQLのWHERE句で不特定多数の文字を表す方法ってあるんでしょうか?

Windowsの検索とかで使うところの「*」みたいのは無いのでしょうか?

具体的にやりたい事は、ある言葉を含むレコードを抜き出したいのです。

千葉
新千葉
幕張
浦安

ってあったとして、「千葉」を含むレコード(千葉と新千葉)を抜き出すとしたらどうやったらいいのでしょう?

ttp://www.planners.co.jp/hyperdb/man-sql/where.htm
を読んでもどうにも理解できません(TT)
お教えください。お願いします!
318名無しさん@そうだ選挙にいこう:02/08/16 06:30
>>316
Access自体が途中半端なので、これを使って開発することがあまり無いです

>>317
LIKE 演算子 を調べて
319318:02/08/16 06:32
Accessは便利なのでスキだけどね!
>>318
ありがとうございます! 巧くいきました!!
短いながらも的確なアドバイスに感謝!!
321名無しさん@そうだ選挙にいこう:02/08/16 23:17
サブフォームにカーソルがあるとき、ファンクションF6ボタンを押すと
親フォームの項目にカーソル(フォーカス)を移動させたいんですが
Private Sub Form_KeyDown _
(KeyCode1 As Integer, Shift As Integer)
Select Case KeyCode1
Case vbKeyF6  '画像コードにカーソル移動
Forms!親フォーム名.Form!画像コード.SetFocus
End Select 
End Sub
このような記述を親フォーム・サブフォーム中にしてもうまくいかないんです。
アドバイスお願いします
322コギャルとHな出会い:02/08/16 23:30
http://s1p.net/nnn1

   朝までから騒ぎ!

  ヌキヌキ部屋へGO

   女子高生とH
323名無しさん@そうだ選挙にいこう:02/08/17 00:08
テーブルでAフィールドに
Bフィールド/Cフィールド
を自動入力させるにはどうすれば良いのですか?
324名無しさん@そうだ選挙にいこう:02/08/17 01:19
何がどううまくいかないのか>>321
F6押下を感知しないのか?
F6押下は感知するが、親フォームのコントロールへのセットフォーカスがうまくいかないのか?
>>321
・フォームのプロパティ-イベント-キーボードイベント取得を
  "いいえ" から "はい"
 に変更してあるか?
・既にF6キーに機能が割り当たってないか?
 デフォルトでコントロールの移動が割り当ててある模様

あたりを見直してみたら動作する。(と断言していいのだろうか?)

ちなみに”うまくいかない”ってのは、どういうことよ?
意味不明な表現だね
>>323
質問を読む人間が、この表現で内容を正確に理解できるとでも思っている?
327307:02/08/17 01:49
みなさんお答えありがとう!
教えてもらった事を今から研究します。
取りあえずお礼まで。
328321:02/08/17 04:08
>>325
レスを読んで落ち着いて見直してみたらできました。
Forms!親フォーム名.Form!画像コード.SetFocus を
Forms.親フォーム名.Form!画像コード.SetFocus に変えたらフォーカスが
移りました。ありがとうございます。
329311:02/08/17 04:50
>323
またえらく日本語が不自由な人が来たもんだね。
とりあえずテーブルじゃあできんからフォーム使いなさいな。
で、フィールドAに何をを入力したらフィールドBに何をフィールドCに何を入れるの?
例えばAに顧客番号を入れたらBに別テーブルの顧客名と電話番号を入れたいとか、
BとCには規定値として今日の日付と時刻を入れるんだけどAに入力が無いときには
入れちゃダメだとか具体的に言いなさいな。
なんだ・・・>>323さん来てないのね。
どう言うことかちょっと期待してたのに。
>Bフィールド/Cフィールド
の/はわり算の記号の事ではないかと思う。
つまりAフィールドにその二つを割った値を
自動で入れたいと。そう言う事ではないだろうか?
332名無しさん@そうだ選挙にいこう:02/08/18 20:26
>>323
こういうことじゃないかな
BフィールドとCフィールドは、入力項目なんだ
Aフィールドも入力項目かもしれないけど、B/Cの計算結果なんだ
そして、A,B,Cフィールド全て、テーブルには保存したいんだ

だとすれば、モジュールに書く方法になると思うよ!
若干手間がかかるよ!
すんません>>323じゃないですけど質問です!
モジュールってなに?(^^;

この時点で?な人間でごめんなさい
334名無しさん@そうだ選挙にいこう:02/08/18 23:31
VBA
335名無しさん@そうだ選挙にいこう:02/08/19 07:25
                 ┌─┐
                 |も.|
                 |う |
                 │来│
                 │ね│
                 │え .|
                 │よ .|
      バカ    ゴルァ  │ !!.│
                 └─┤    プンプン
    ヽ(`Д´)ノ ヽ(`Д´)ノ  (`Д´)ノ    ( `Д)
    | ̄ ̄ ̄|─| ̄ ̄ ̄|─| ̄ ̄ ̄|─□( ヽ┐U
〜 〜  ̄◎ ̄  . ̄◎ ̄   ̄◎ ̄   ◎−>┘◎
      ↑     ↑     ↑
   モジュール モジュール モジュール
336名無しさん@そうだ選挙にいこう:02/08/19 07:53
>>335
根性なし!
337名無しさん@そうだ選挙にいこう:02/08/19 17:51
空白の判定が出来ないのですがどうすればいいでしょうか?
If IsNull(nget) Then
Exit Function ←ngetは空白なのにこの処理を通らないんです
EndIf
ngetという変数には空白" "が入っているからダメなのかと思うんですが
string型で桁数を指定してるからか必ず空白が入るようです。
単純に if nget = "" then でも通りませんでした。
こういう場合はどんな判定のやり方をすればいいのでしょう?
>337
if trim(nget) = "" then
マイクロソフトはNULLや空白の考え方が特殊です!
一度も触られていない項目(バージン)=NULL
何か入力したけど、消しちゃったよ=””
となります
また、338さんの指摘の通り、
スペース3つなら=" "
になるので、TRIM(トリム)で、ワンちゃんの毛を刈ります!
340名無しさん@そうだ選挙にいこう:02/08/19 19:32
クエリの計算結果で[1のフィールド]÷[2のフィールド]
を実行したら0.452955735564になりました
これを.453にするにはどうしたらよいのでしょうか?
341名無しさん@そうだ選挙にいこう:02/08/19 19:36
四捨五入してくれる関数を見つけるのじゃ!
使い方は多分
=四捨五入関数(計算結果の変数,四捨五入したい桁の位置)じゃ
では、健等を祈る
>>338 ありがとうございます。出来ました。
343名無しさん@そうだ選挙にいこう:02/08/19 23:09
>>341
ありがとうございます
一応表示はされたのですがどうしても0.453になってしまいます
.453と表示するにはどうすればよいのでしょうか?
344名無しさん@そうだ選挙にいこう:02/08/19 23:37
テーブルでオートナンバーが入ったレコードを削除すると、オートナンバーが飛び番になります。
飛び番にならずにオートナンバーが詰まるようにするにはどうしたらよいでしょうか?
345:02/08/20 02:08
2002/07/19 \4000
2002/08/01 \5000
2002/08/03 \1500
というクエリがあるのですが

これを2002/8だけの金額を合計して出力させるにはどうしたらよいのでしょうか?
簡単な質問ですがよろしくお願いします
346名無しさん@そうだ選挙にいこう:02/08/20 07:41
>>343
フィールドのプロパティー、書式に .00 と書けば、
小数第二位迄表示し、かつ、整数部が 0 の場合は表示しません。

>>344
多分出来ません。
飛び番になったのを直す方法はあります。

>>345
それはクエリではありません。
347343:02/08/20 11:34
>>346
サンクス
>344
オートナンバーは連番と言うよりは「ユニークな値を自動で発行する」ものだから
オートナンバーでは344さんのは出来ないねえ。

ちゅーことで、テーブルのフィールドは数値型にして

1.クエリでそのフィールドの集計に最大を指定する。
新規入力字には、このクエリを開いて現在の最後の番号を見て、
それ+1を手で入力する。

2.モジュールで関数を作る。モジュールを新規作成して以下をコピペ。
Public Function GetMax(TableName As String, FieldName As String) As Long
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("SELECT Max(" & TableName & "." & FieldName & ") AS MaxNo FROM " & TableName)
GetMax = rst("MaxNo")
rst.Close
dbs.Close
End Function
これを最大値取得とでも名前をつけて保存。
新規入力のフォームにボタンを作ってクリック時のイベントに
Me![フィールド名]=GetMax("テーブル名","フィールド名") + 1
と書く。と、こんな感じかな。

1.は何してるか自分でもわかると思う。2.はややこしい事してるけど動作はスマート。
まあ1.か2.か、好きなほう使いなさいな。
349名無しさん@そうだ選挙にいこう:02/08/20 14:45
>>345
SQLビューに下記SLQを貼り付けてみ
実行はしてないんで動くかどうかは分かりませんが。

SELECT DISTINCTROW month(日付), Sum(金額) AS 合計金額
FROM 元のテーブル
WHERE month(日付)='8'
350名無しさん@そうだ選挙にいこう:02/08/20 14:56
>>345
ヘルプでDsum関数を調べて見れ
>348
自前で連番を発番するやり方として申し分ないのだが、まだまだアマイ。
>344をよく読んでみれ。レコード削除したとき連番を振り直したいらしいぞ。

352名無しさん@そうだ選挙にいこう:02/08/20 19:53
>>344
オートナンバーフィールドを削除してから
データベースの[最適化/修復]をやった後
再びオートナンバーフィールドを作ってやれば
飛び番号はなくなるよ。
353348:02/08/20 20:05
>351
あ〜なるほど、ありがと。
じゃあ使いそうな桁数+1桁(1万ぐらいまでなら10万までとか)ぐらいの連番のテーブルを
準備してそれとの不一致クエリを昇順で並べて頭のレコード持ってくるかな?

T連番と言うテーブルに連番と言うフィールドを作って連番でうめる。
(ためしに作ったのは1〜65536まで。エクセルのオートフィルで作ってコピペしたから)
モジュールに以下をコピペして未使用値取得とでもして保存。
Public Function GetNotUseNo(TableName As String, FieldName As String) As Long
Dim TestTimer As Single
TestTimer = Timer
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("SELECT Min(T連番.連番) AS NotUseNo FROM T連番 LEFT JOIN Tテスト ON T連番.連番 = " & TableName & "." & FieldName & " HAVING (((" & TableName & "." & FieldName & ") Is Null));")
'Set rst = dbs.OpenRecordset("SELECT T連番.連番 AS NotUseNo FROM T連番 LEFT JOIN Tテスト ON T連番.連番 = " & TableName & "." & FieldName & " WHERE (((" & TableName & "." & FieldName & ") Is Null)) ORDER BY T連番.連番;")
GetNotUseNo = rst("NotUseNo")
rst.Close
dbs.Close
Debug.Print Format(Timer - TestTimer, "Fixed")
End Function

「Set rst =〜〜」が2行有って一行コメントアウトしてある。イミディエイトに何秒かかったか
出力するようにしてあるので速い方を使ってね。65536件と10件でテストしたら上の方が1.3秒前後
下が2秒前半だったので一応速かった上を生かしてある。件数によって変わるかもかな?
354名無しさん@そうだ選挙にいこう:02/08/20 22:36
アクセスプロジェクトでsaでMSDEに接続してるんですがバックアップがとれません。
バックアップ方法はdosのbcpユーティリティです。
sa以外のバックアップロールメンバユーザでログインすればとれるのですがsaでも
とる方法ってないでしょうか?saをバックアップロールに追加しようと試しても追加が出来ませんでした。
>>349
下記のSLQってどの部分の事ですか?
結構SQLやDBなど自信があったのですが、すいません、まだまだ勉強不足ですわ
>>355
SLQってSQLのタイプミスだと思うんだけどなぁ そういうことじゃなくて?

>>349のSQL文をどこで使えばいいのかってことなのか?
皮肉
358名無しさん@そうだ選挙にいこう:02/08/21 00:29
>>353
SQLをVBAでかけるのは、凄いです!!
HAVING は使ったことが無いので、良く解りません。
ただし、>>351が言っているのは、既に番号が振られているレコードに対しても、
ダイナミックに連番を振りなおす必要があるのでは?という事なのでは?
>>348 と同じ事をより複雑な方法で実現してるにすぎないよね!

結論から言うと、
通常オートナンバーの項目が飛び番になったからといって、頻繁に番号を振りなおすことは行いません。
番号を簡単に変えてしまうと、いろいろと問題が起きるのです。
例えば、それが社員番号なら、会社を辞めた人が出るたびに社員番号が変わってしまいます。せっかく覚えたのにまた、覚えなおさなくてはなりません。
例えば、それが電話番号なら、新規加入者に間違い電話が沢山かかってきます。
例えば、それが住民番号なら、転出者がでるたびにその自治体の住民番号が変わってしまい、住民課、福祉課、水道局、いま話題の部署はてんてこ舞いです。
だから、番号が飛んでも「そういうもんだ」という事で我慢するのです。
だけど、個人の住所録等、ごく小さいシステムなら、そんなに問題が起きないだろうから、それでもたまにメンテナンスという事で、番号を振りなおしてもいいかもしれません。


359名無しさん@そうだ選挙にいこう:02/08/21 06:57
>>355
VBAが使えるのであれば、DSum関数を使った方が
スマートだと思うよ。
教えてください。

いまレポートで検索結果をプリントアウトしたいと思っているのですが。
項目の内容が長くなると後ろの方が切れてしまいます。
これ、「入りきらないときは縮小」する方法ってありますか?

フォントを小さくするしかないのかな・・・
361名無しさん@そうだ選挙にいこう:02/08/21 10:32
>>360
VBAを使って下さい。
レポートを開いた時、Len関数で文字の幅を出して一定数以上であれば
テキストボックス等のFontsizeプロパティに値を指定してやればいいよ。
362名無しさん@そうだ選挙にいこう:02/08/21 10:51
現在、ACCESS97で組んでもらっているシステムがあるのですが、最近データ量が
増えてきて、「ACCESS97で管理するのは難しいのでORCLEにしませんか」(1000萬ナリ)
とぼったくられそうになっています。
ACCESS2002では97の時より扱えるデータ量が増えている、と聞いたことがあるのですが、
どのくらい違うのか教えてください。もし、97より大幅に増えていれば、2002に移行することで
開発費を抑えたいので・・・・・・
363名無しさん@そうだ選挙にいこう:02/08/21 10:55
ちょっと話が変わるのですが、フリーのサンプルとか、ツールとか
私は「VECTOR」を利用するのですが、ほかに、展示している
ホームページがありますか。
364名無しさん@そうだ選挙にいこう:02/08/21 11:38
>>362 まず作業の中心となっているテーブルの現在のレコード数を
おしえてください。
365362:02/08/21 12:15
>>364
テーブル数が78で、
そのうちメインとなる2テーブルのレコード数はそれぞれ40000件弱です。
>>362
MDBファイル容量の上限
JetDBE3.51まで 1GBytes
JetDBE4から   2GBytes

登録できるレコード数の上限
1つのMDBファイル容量上限を超えないかぎり無限

Access2000からデータ内部形式が変更になったんで容量が増えたという
話があるけどね。レコード数上限に差異がなかったらどうする?
367362:02/08/21 13:01
>>366
データ容量が問題ではなく、レコード数が問題、ということでしょうか?
レコード数の上限が97でも2002でも同じであれば、オラクルか他のデータ管理ソフト
に移行せざるを得ないですね。
もしくは古いファイルをメディアにでも保存しておいて、テーブルから削除するとか
ですかね。
368名無しさん@そうだ選挙にいこう:02/08/21 13:21
>>365
そのくらいならわりと楽勝なんじゃないの?
私がAccess2000で管理してるのはテーブル数で同じくらい、
30万件超のテーブルも複数あるけど特に問題なく動いてるよ。
(データ用MDBを分離させてリンクテーブルにしてたりはするけど)
369名無しさん@そうだ選挙にいこう:02/08/21 13:55
オラクルの真価が発揮されるのは
同時に多数のクライアントが同一テーブルをアクセスするような環境においての
安定性、高速性、排他処理の確かさ、
サーバーがダウンした場合のデータの保証等だと思います。
370362:02/08/21 14:21
ありがとうございます。
ACCESS2002に移行で再度見積もるよう、ソフト会社に要請します。
ところで、97で組んでるソフトを2002もしくは2002等に移行するのって、
最初組んでもらったときより高くなることはないですよね?
最初は500万くらいだったんですけど、どのくらいの金額を言ってきたら妥当なんでしょうか。
200万前後位ですかね?
371362:02/08/21 15:00
↑訂正。
2000もしくは2002でした。
ところで、JetDBEってなんですかぐぐってみたんですけど、1件しか該当がなくて、
よくわかりませんでした・・・・・
すいません。
>>371
JetDBE = Microsoft Jet DataBase Engine の略
SQLの解釈、実行 データベースファイルへの入出力を司るソフトウェア

AccessはこのDBEにユーザインターフェースをかぶせたソフトウェア
>>370
・技術者単価の上昇
・追加仕様による別途料金の発生
などの要素がからむと一概に安くなるとは言えないかも。
まぁ、ソフトウェアの対価については標準が無いですからねぇ

しかし、世の中どこを向いてもコストダウン要求はあたり前の風潮だから
交渉次第じゃないですか?

あとは、そのソフト会社が貴方のところをどの様に見ているかですよね。
今後とも付き合いが必要と思ってれば、譲歩してくれるだろうし
そうでなければ さよなら もあり得るし。

# スレ違いの話ですいません
374360:02/08/21 16:22
>>361
ありがとうございます。巧く行きました。

ただ、グループ化して、詳細にでてくるデータのなかで長いのだけ縮小ってやりたかったので
「詳細」のフォーマット時のイベントでチェックするようにしてみました☆
375362:02/08/21 16:31
372さん、373さん、
ありがとうございます!
感謝、感謝!です。
376 :02/08/21 18:40
Access2000で固定長テキストのインポート定義を作っていたところ、
それを保存するときに下から2つ分削除されてしまいました。
フィールド数は41で1レコードは227バイトです。
なにか問題がありますか?
377348:02/08/21 19:17
>>358
>ただし、>>351が言っているのは、既に番号が振られているレコードに対しても、
>ダイナミックに連番を振りなおす必要があるのでは?という事なのでは?
>>>348 と同じ事をより複雑な方法で実現してるにすぎないよね!

ああ、どういう動作を意図して作ったか書いてなかったね。ごめん

オートナンバー型の場合 一度使った番号は削除したものでも使用しない。

>>348 一番最後のレコードを見てその次の番号を発行する。例えば入力を二重に
行ってしまい、最大の番号のレコードを削除した場合は番号が飛ばない。
ただし、途中のレコードを削除した場合は飛んだまま。

>>353 現在使用していない番号のなかで最小の値を返す。
1,2,4,5,6となっていた場合、3を返す。

>>344
>飛び番にならずにオートナンバーが詰まるようにするにはどうしたらよいでしょうか
確かに351さんのレスを読むと352さんのレスのように「全部振り直し」に読めるけど
344さんのレスだと>353とも読めないかな?
378名無しさん@そうだ選挙にいこう:02/08/21 23:53
>>370
そのくらいだったら 俺1人で2ヶ月くらいで出来そうだよ!
多分高すぎる!
379名無しさん@そうだ選挙にいこう :02/08/22 00:42
初歩的な質問ですが、
ACCESS(97)のDAOでサーバーのDBMS(ORACLE等)を直接アクセスできますか?
380名無しさん@そうだ選挙にいこう:02/08/22 00:55
ODBC経由でアクセスしてたよ!
381名無しさん@そうだ選挙にいこう:02/08/22 01:45
Accessってcountif関数って使えないのですか?
=COUNTIF([aaa],"リンゴ") とやれば#Name?が出てくるのですが
382名無しさん@そうだ選挙にいこう:02/08/22 08:48
>>381
使えません。
DCount関数を使ってください。
詳細は、ヘルプで
383名無しさん@そうだ選挙にいこう:02/08/22 13:02
フォームについて教えてください
一覧表示と明細表示を1つのフォームで出来ませんか?
384名無しさん@そうだ選挙にいこう:02/08/22 13:18
>>383
サブフォームを組み込めば出来るよ。
385名無しさん@そうだ選挙にいこう:02/08/22 13:42
>>380
ども
386名無しさん@そうだ選挙にいこう:02/08/22 15:01
>>384
ども
387名無しさん@そうだ選挙にいこう:02/08/22 19:37
自分のファイルのパス取得する関数はなんでしたっけ?
あと、パスを編集する関数ありましたっけ?
(1階層上に編集みたいなの)
388名無しさん@そうだ選挙にいこう:02/08/22 19:44
もうひとつ。
データと連結しないただのフォームって作れないんですか?
普通に作ると、えーと・・・なんてゆーか・・・
レコード操作するボタンとか勝手についちゃうじゃないですか。
あれ邪魔なんですが・・・
>387
Application.CurrentDb.Name で、データベースのファイル名付きパスがわかる。
で、ここからデータベース名を除いたものがパスだね。こんな関数かね。

Public Function dbDir() As String
Dim dbName As String
dbName = Application.CurrentDb.Name
dbDir = Application.CurrentDb.Name
Do
  dbName = Mid(dbName, InStr(dbName, "\") + 1)
Loop Until InStr(dbName, "\") = 0
dbDir = Left(dbDir, Len(dbDir) - Len(dbName) - 1)
End Function

で、ChDirでCurDirが変更できるから、カレントディレクトリを
データベースのパスに変更したり、上のディレクトリに移動したりできるよ。
適当なフォームに適当にボタン作ってイベントにしてみてね。
イミディエイトウインドウに色々表示する。

Private Sub コマンド0_Click()
Debug.Print "ファイル名付パス " & Application.CurrentDb.Name
Debug.Print "DBのパス     " & dbDir
Debug.Print "変更前カレント  " & CurDir
ChDir dbDir
Debug.Print "変更後カレント  " & CurDir
ChDir "..\"
Debug.Print "一つ上のパス   " & CurDir
End Sub

>388
書式の移動ボタンとかレコードセレクタとかをいいえに変えてみ。
390名無しさん@そうだ選挙にいこう:02/08/22 21:52
>>387

Left(CurrentDb.Name, Len(CurrentDb.Name) - Len([自分のファイル名]))
391389:02/08/22 22:05
ああ、データベースのファイル名は分かるんだから
390さんのやり方の方が簡単で良いね。
392名無しさん@そうだ選挙にいこう:02/08/22 22:19
>>389-341
親切な人達ありがとさん
393名無しさん@そうだ選挙にいこう:02/08/22 22:21
>>388
作れますよ!
フォームを新規作成する際に、ウィザードを走らせなければよいです。(デザインビューを選ぶ)

質問
フォームで簡単にレコード移動を禁止するメソッドか何かありませんか?
394名無しさん@そうだ選挙にいこう:02/08/22 22:41
>>393
どうも。
でも下部にレコード移動させるボタン勝手に付きませんか?
>>394
フォームの移動ボタンプロパティをいいえにする
このあたりは基本書を読んだほうが良いかもしれない。
396名無しさん@そうだ選挙にいこう:02/08/22 22:57
>>395
できますた
ありがとう
397393:02/08/22 23:51
俺はまだわからんぞ!
398名無しさん@そうだ選挙にいこう:02/08/23 08:32
DAO用のVBAなんですが、ADOに変換するとどういう風になるのでしょうか?
ACCESS2000では動かないようなんです!

Dim dbs As Database
Dim rst As Recordset
Dim fld As Field
Set dbs = CurrentDb

Set rst = dbs.OpenRecordset("T_社員名簿", dbOpenDynaset)
With rst
.MoveLast
.FindFirst "社員名 = '" & Pname & "'"
If .NoMatch Then
.AddNew
!社員名 = Pname
!査定 = Pvalue
.Update
Else '更新
.Edit
!査定 = Pvalue
.Update
End If
.Close
End With
>387
ほぼ解決してるが、2000なら「CurrentProject.Path」が使えるぞ。
パス編集は文字列編集がシンプルだ。同じく2000なら「InstrRev()」が使える。
GUIで好きなパスを得たいならAPIだ。

※次からバージョン書いとけよ!
400名無しさん@そうだ選挙にいこう:02/08/23 09:37
>>398
動かないというのがどういうレベルのものなのか不明なんでアレあれだけど、
Find系はDAOとADOで動作違うんでヘルプ見てみるとよろし。
あるいは
http://www.microsoft.com/japan/msdn/data/techmat/ado/dao2ado.asp
移植に関してはまさにここが参考になるかと。
>393
レコード移動を禁止するんなら、発想を変えて非連結なフォームにしたらいいんじゃないか?
>>398
ADOは使わないからわかんないや、DAOが動かない理由の方について。

1.VBAのウインドウの「ツール-参照設定」で「Microsoft DAO 3.6 Object Library」
にチェックしてるか。

2.データベースやレコードセットの宣言時にDAOならDAOとADOならADOと明記する。
Dim dbs As DAO.Database
Dim rst As DAO.Recordset

97で動いてたのが2000で動かなくなったのならこんなもんじゃないかと思う。
他にも「ここチェックしてみ」ってのある方、おられましたらフォローよろしく。
>398
実際のモジュールから一部分だけを抜き出したからかもしれないが、
これだけだったら『ネタ』だな。
404名無しさん@そうだ選挙にいこう:02/08/23 12:27
>>393
フォームのTabキー移動プロパティをカレント レコードにすればいいんじゃない?
405名無しさん@そうだ選挙にいこう:02/08/23 13:40
>>398
ADOでシステム組んだこと無いのだが、単純に書き換えるならこんな感じ?

Dim Cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset

Cnn.Open CurrentProject.Connection
With rst
.Open "T_社員名簿", Cnn, adOpenKeyset, adLockPessimistic, adCmdTable
.MoveFirst
.Find "社員名 = '" & Pname & "'"
If rst.EOF Then
.AddNew
!社員名 = Pname
!査定 = Pvalue
.Update
Else '更新
.Edit
!査定 = Pvalue
.Update
End If
.Close
End With

「Microsoft ActiveX Data Objects 2.x Library」等の参照設定をお忘れなく。
406398:02/08/23 15:03
涙・・・
皆さんありがとうございます。
>>402 さんのご指摘の通り、参照設定の中にDAOがありませんでした。
また、ただ追加するだけじゃなくて、順番も重要のようでした。ありがとうございます。
>>405 さんの方法は、早速試してみます。
レコード移動の禁止については、
>>404 さんの方法は実行していますがPageUp,PageDownでレコードが移動してしまいます。
>>401 さんの方法も以前使ったことがありますが、今回は見送りました。
方法としては、データ入力用に1レコードのみのテーブルと連結し、フォームは追加、削除を禁止します。
更新ボタンで、本来のテーブルに追加するようにします。

結局移動禁止の方法として、
新規レコード追加の場合は、フォームをデータ入力用とし、レコード移動イベントで、追加禁止にしました。
既存レコード修正の場合は、レコード移動イベントで編集禁止とし、ごまかしました。
何かインチキ臭いですが、とりあえずこれでいこうかと考えています。

皆さんありがとうございます。今後もよろしくお願いします。
407403:02/08/23 16:35
>406
アレッ、参照設定の中にDAOがないって、そういうオチだったのか。
漏れはまた、MoveLastでFindFirstしてるからAddNewばっかりっていうことかと・・・

逝ってきます・・・・・・。
408 :02/08/24 01:47
MDBのA,Bと自分があって、それぞれに同じテーブルXがある。
で、ボタン操作で自分のテーブルXの内容をMDBの(A+B)にしたいんですが(インポートみたいなもん)、
これ簡単に実現する方法ありますか?

地道なのはそれぞれ1件ずつ読んで自分のテーブルにINSERTですが、どうでしょ?

409名無しさん@そうだ選挙にいこう:02/08/24 04:05
>>408
すごく簡単な方法で・・・
1.自分のMDBにA,BのテーブルXをリンクしてテーブルAX,テーブルBXとする。
2.テーブルXをクリアする削除クエリを作成する。・・・削除
3.テーブルXにテーブルAXを追加する追加クエリを作成する。・・・追加A
4.テーブルXにテーブルBXを追加する追加クエリを作成する。・・・追加B
5.マクロを作成する。
  メッセージの設定・・・いいえ
  クエリを開く・・・削除
  クエリを開く・・・追加A
  クエリを開く・・・追加B
  メッセージの設定・・・はい
6.フォームのボタンのクリックにマクロを設定する。
410名無しさん@そうだ選挙にいこう:02/08/24 08:43
OS:WINXP ACCESS:2002 SP1

ウィザードで作ったくらいのレベルのレポートで、
プリンタによって1枚目のページが重複して印刷される不具合が起こっています。
正しくは全4ページです。
キャノンのレーザープリンタだと4ページで、NECのレーザープリンタだと
1ページ目と2ページ目が同じ内容になって、5ページ出るんです。

対応策として、プレビューを出しておいてCTRL+Pで印刷すると、4ページ出ます。
プリンタのドライバは最新版にしてあります。
正しく、印刷されるレポートもあります。

何か原因分かりませんか?
>410
ちょっとそれは環境に依存してそうなので、わかる方はいないんじゃないかと。
僕なら、こんな感じであがいて見ます。
1.ウイザードは以外と難儀な事してたりするので同じレポートを手で作る。
2.プリンタのドライバのバグならば、もしかしたら「最新版のみのバグ」かも、
と古いドライバと差し替えて見る。
3.新しいMDBを作ってそこに全部インポート。
4.Officeの再インストール。だめならOSから再インストール。
このぐらいかな?
412名無しさん@そうだ選挙にいこう:02/08/24 12:05
データベースの修復・最適化も一応試してみて!
413名無しさん@そうだ選挙にいこう:02/08/24 17:46
フォームで郵便番号の項目のプロパティで定型入力に000\-0000;;_とすると
入力時に自動的に-で区切られるんですが、登録したあとに再度開くとハイフンが
入らずに7桁全部くっついて表示されます。
表示上も-で区切るのはどうすればいいでしょうか?
414名無しさん@そうだ選挙にいこう:02/08/24 18:04
>>413
ACCESS2000だけど、000\-0000;;_をじっくり調べてないけど、
とりあえず定型入力に張り付けてみて、問題なく表示されるよ。
フォームを開き直してもフォーカスが他に移動してても
-で区切られて表示されてるよ。
415名無しさん@そうだ選挙にいこう:02/08/24 18:45
アクセス2000なのですが 初めて触ったソフトなので
坊なしつもんかもしれないのですが
只今顧客管理のデータを作っています
それでDMの送信≠ニいう欄を
テーブルで YES/NO 型にしてあるものを
YES(チェックマーク付)の方だけ
ひとつのクエリにまとめるには
どうしたらよいのですか?
416名無しさん@そうだ選挙にいこう:02/08/24 18:47
>>409
ありがと。
やってみます。
>415
クエリー結果でいいなら、クエリーの「新規作成」からクエリー作れば?
そうじゃなくて、プロシージャ内でクエリー(SQL)動かしたいのかな?
それとも、クエリーの作り方(Access2000の操作法として)がわからないの?
418名無しさん@そうだ選挙にいこう:02/08/24 19:32
>>417
すみません、言いたいことは分かります。
せっかく酒の肴に書いたんで、とりあえず貼っておきます。

>>415
つまり、テーブルからDMの送信フィールドがYESのレコードだけを
抽出したいということだね?

クエリの新規作成でデザインビューを選択し、
抽出元のテーブルを選択し、
追加ボタンを押して閉じるボタンを押す。
ウィンドウの下の方の横に並んだ表が抽出したいフィールドを
選択するところだ。
表のフィールドのマスをクリックするとテーブルのフィールドが
選択できる。
とりあえず左から順番に全フィールドを選択してね。
(テーブル.*は全フィールドってことだけどそれは選択しない)
フィールドがずらっと並んだかな?
DMの送信フィールドの抽出条件にyesと入力する。
このクエリを名前を付けて保存する。
で、クエリを開くとYESのものだけ選択されて表示される。

クエリいじってれば理解できると思うよ。
>408,409
すごく気になるんだけど、
テーブルA/Bには、まったく同じデータは絶対に存在しないの?
そういった仮定の上でならば>409のやり方でいいと思うけど。
私だったら、単にテーブルAXにBXを追加するのではなく、
追加時の条件付け(BXの中でAXにないもののみ追加)をお忘れなく。
あるいはプロシージャとかで一件一件AXのデータをBXと照合してないものを
テーブルCXに書き込む(当然BXのデータもAXと照合しないと行けない)とか?
これだと処理が重くなるので追加クエリーに条件付けするか、
重複排除のクエリーを作って、
AXにBXを追加したCXから重複データを排除する必要があると思う。

それに何回もCXに追加していく場合は、当然、
前回までのデータと重複しているデータがないことを確認する必要があると思う。
これら重複に関しては「絶対にありえないと思う」と思っても、
何度でもしつこいくらい確認するマクロかプロシージャを作って、
追加のたびに実行した方がいいと思うよ。
だってDMでしょ?自分に2通も3通も来たらいやじゃない?

長々カキコ、スレ汚しでスマソ
>417、ありがとう
>415さん、ごめんね。言い方きつかった。
2つとも書こうとるとすると長くなるから、
どっちかな?と思って悩んでたの。

誰かが答えてくれると思うから、わからなかったらまたどうぞ。
Access97なのですが、複数の様式のレポートをマクロでまとめて
出力しようとする際に、通しでページ番号は付番されるのでしょうか?

試しても見ずに勝手に諦めてしまい、

1.目次用のテーブルを用意する。
  フィールドは[様式名][開始ページ][終了ページ]
2.それぞれのレポート様式に出力されるデータ行数を求め、
  その値から必要なページ数、開始ページ数、終了ページ数を求め、
  1.で作成したテーブルに書き込むモジュールを作成する。
  (別に目次も必要で、それには開始ページ、終了ページを記載する必要があるため)
3.それぞれのレポート様式のページフッターに
  [page]&dlookup("[開始ページ]","目次用テーブル","[様式名]='様式名'")-1
  をセットする。

みたいなことをやってしまいました。

結果的にはうまく動いてくれているようですが、
データの内容によっては、モジュールの内容に不備があり、
番号がずれてくると言うこともあり得ます。

普段は普通にクエリーを作成し、Excelにはき出した上で
Excel上で必要な様式に作り替えて印刷するのですが、
3ヶ月間出張に行くことになってしまい、
作業を係長に任せなければならなくなったので、
ボタン一発で作成できるようにと挑戦してみたのですが......

無駄な努力だったのでしょうか.......
422415:02/08/24 19:45
418さん ありがとです
Like "*@*" ←これはEメール摘出ようなのですが
こんな感じで Like "*yes*"とやってた自分に鬱です
これで新店舗OPENの為のDM送信が楽になりそうです
ありがとうございました 

417さんのは今の僕には理解不能です・・
  すいません
423417:02/08/24 20:12
>420の「>417」は本来、>418と書き込むべきところでした。
重ね重ねのご無礼、逝って来ます。

415さん、解決して良かったね。
424名無しさん@そうだ選挙にいこう:02/08/24 20:54
>>421
>試しても見ずに勝手に諦めてしまい、
ってのと
>結果的にはうまく動いてくれているようですが、
ってのと
>データの内容によっては、モジュールの内容に不備があり、
>番号がずれてくると言うこともあり得ます。
で読んでて頭が混乱しています。

>3.それぞれのレポート様式のページフッターに
>  [page]&dlookup("[開始ページ]","目次用テーブル","[様式名]='様式名'")-1
>  をセットする。
ってページフッターのテキストにですか?
良く分かりませんが、&が気になるのですが、+ではないかと・・・。

考え方は間違ってないと思います。
2001 年 12 月に実施されました、Access Conference 2001 の模様
を Microsoft Producer for PowerPoint? 2002 で編集し、臨場感あ
ふれるコンテンツとして提供します。

http://www.microsoft.com/japan/office/access/acconf/
426おまいら:02/08/25 02:31
すんげぇすんげぇすんげぇ

「親切」

ビクーリしますた。
ここは凄い良スレですね。

私のように弱小企業がゆえに自分でどうにかしなけりゃいけない場合

このスレがなかったらと思うと・・・ガクガクブルブル
428名無しさん@そうだ選挙にいこう:02/08/25 10:50
質問お願いします
帳票フォームを作成しています。
社員番号のコンボボックスを配置して、社員番号を入力できるようにしました。
社員番号は社員マスターを参照します。
入力した社員番号に応じて、氏名も表示させたかったので、氏名のテキストボックスを配置しました。
社員番号が更新されたら、Dlookup関数を使用して、氏名のテキストボックスに社員マスターにある氏名を表示させようとしました。
いざ、実行してみたら、表の1つの行の社員番号を入力すると、全行の社員氏名が同じ人になってしまいます。
こういうものなのでしょうか?
社員番号コンボボックスの表示を2列にしたらだめ?
社員番号と社員名(あればid)を抜き出すクエリーを作って、
コンボボックスのプロパティ/データ/テーブル・クエリーで
抜き出しクエリーを指定、連結は1(できればidなければ社員番号)にする。
表示の指定では2列にして、幅を1;2(これは1cmと2cmに指定の意味で、
idがある場合はidの表示は0でみせない)にしてコンボボックス内に一緒に表示させてしまう。

私も似たようなこと考えたけど、結局、うまく行かなくて・・・
1つの社員番号に対して社員名1つだけ(ユニーク)だと考えたら、
隣のボックスに表示させなくても同じボックス内に表示させればいいやとあきらめた。
それに隣のボックスに表示させると、うまく隣のボックスに名前が表示できても、
次に社員番号を変更した時にうまく連動して社員名が変わってくれなかったりして、
(リクエリーとか画面の再表示がうまく組めなかった)うまく連結できなかったの。
もっとも、私の場合は社員番号が変わったのを感知して、
社員名を自動的に変更させたかったからなんだけど。
参考になるかな?
430429:02/08/25 11:53
あと、単純に何も考えなければ、社員番号と社員名抜き出しクエリー作って、
社員番号の条件付けのところでビルダーを起動して帳票フォームの社員番号を指定。
つまり、このクエリーはフォームに入力されている社員番号に当たる
社員番号と社員名を見つけて表示させるクエリーなのね。
だからクエリー単体を実行すると、社員番号は何?って聞いてくる。
で、そのクエリーを社員名テキストボックスのもとにしてあげれば、
表示は出来ると思う。(ボックスの表示列は2列で番号は0cm、連結列は番号かな?)
ただし、一度表示させると次に番号変えた時に再クエリーと
画面の再描画させないと変えた番号が反映されないけれど。

そんな方法もあるよ。
431429:02/08/25 12:01
>427
市販のAccessの本に結構いいのがあるよ。
私はナツメのハンドブック以外にも、結構買い集めて使ってる。
実際にはやりたい方法を本の中から探して集めて、
自分でテスト版を作ってあれこれ試行錯誤してるけど。
Access97と2000で7冊をあれこれやりながらひっくり返してる。

それでも結構、「何ちゃってデータベース」風が作れるよ。
頑張ってね!
432429:02/08/25 12:13
>428さん
ごめんね、良く読んだら一つのフォームに
複数の社員番号入力コンボボックスがあるの?
それだと430の案は428の現状と同じ問題を抱えてしまうと思うので却下。
(実際やってみないとなんとも言えないけど、多分、同じ状況になると思う)

今、自分のメインPCが壊れてるから、
今までやったAccessのデータ引っ張り出して実験できないのが辛い!
いつもの調子で「sage」てしまった。
>428 429
え?なんでできないの?ん〜と、社員名フィールドのコントロールソースに
=Dlookup("社員名","社員マスター","社員番号 =" & Me![社員番号])
っていれてたりするかな?もしかして。

1.帳簿フォームのレコードソースのテーブルに社員マスターからはの主キーのみ
入力するフィールドがある場合(正規化されている場合ね)
 主キーをコントロールソースにしたコンボボックスのフィールドを2つ作る。
 1つは社員番号、もう一個は社員名と言う名前にする。
 どちらも値集合タイプをテーブル/クエリ、値集合ソースを社員マスターにする。
 フィールド社員名の列数を2、列幅を0cm;3cm、リスト行数を100(解像度やフォントに
 寄ってはもっと増やしてもいいよ)にする。

2.帳簿フォームのレコードソースのテーブルに社員マスターから主キーの他に
社員名フィールドがある場合(冗長化されている場合)
 社員番号というコンボボックスのフィールドと社員名というテキストボックスの
 フィールドを作る。社員番号の値集合タイプをテーブル/クエリ、値集合ソースを
 社員マスターにする。
 社員番号のイベントの更新後処理をイベントプロシージャにして[...]みたいな
 ボタンを押すとVBAのウインドが開く。
Private Sub 社員番号_AfterUpdate()

End Sub
 と表示されてると思う。この間に以下を入力する。
If Isnull(Me![社員番号]) then
Me![社員名]=""
else
Me![社員名]=Dlookup("社員名","社員マスター","社員番号 =" & Me![社員番号])
end if
434433:02/08/25 12:44
正規化されている1.の利点/欠点
データ量が少なくてすむ、社員マスターの社員名を変更すると(結婚して姓が変わったとか、
誤字に気付いて修正とか)フォーム等でみると帳簿の方も変更されている。
欠点は間違えて社員マスターのレコードを削除してしまったり、
社員マスターのテーブルごと削除した場合、帳簿には社員番号しか残っていない。
辞めた社員のデータは消さずに残す必要がある。チェックボックスで退職者のチェックをして、
値集合ソースを「退職者にチェックがついていない社員」クエリとすると、退職者の
名前が表示されない。入れ替わりの激しい会社の場合、入力時にながーいリストの中から社員を
選ぶ事になるので、我慢するかうまい処理を考えて上げないといけない。

冗長化されている2.の利点/欠点は上記の逆となる。データ量は増えるし、名前の変更等
した場合、帳簿のデータを直すかそれをふまえた処理をしないといけない。
そのかわり社員マスターのデータを消しても帳簿には名前が残る。最悪社員マスターの
テーブルごと削除してしまった場合でも帳簿から再作成できたりする。
値集合ソースを「退職者にチェックがついていない社員」クエリとすると現職の社員のみ
のリストとしても、退職者の名前が表示されなくなったりしない。
435433:02/08/25 12:50
補足
>433 主キーをコントロールソースにしたコンボボックスのフィールドを2つ作る。
社員マスターの主キーのことね。帳簿の主キーじゃなくて。
>434 クエリとすると現職の社員のみのリストとしても、
なんか日本語おかしいね。
正:クエリとして現職の社員のみのリストとしても、
436429:02/08/25 13:08
>433
Private Sub 社員番号_AfterUpdate()
If Isnull(Me![社員番号]) then
Me![社員名]=""
else
Me![社員名]=Dlookup("社員名","社員マスター","社員番号 =" & Me![社員番号])
end if
End Sub

なるほどです。勉強になりました。
ここでDloockupをこういう風に使えばいいんですね。
いつか使ってみよう…
すみません!質問です。

〆日を手で入力して、請求を出す処理を遣ろうと思ってます。

そこで、
クエリー1
請求先ごとにで値段を集計して、それを請求金額テーブルに入れるクエリー

クエリー2
請求先ごとの値段の一覧を作るクエリー(このクエリーの値を利用して、レポートを作ってます)

クエリー3
使用したデータに請求済みチェック(YES/NO型で、YESだと請求済み)を入れるクエリー

といった感じに複数のクエリーを使っています。が!
〆日を各クエリーごとに入力しなけりゃいけない状態で困ってます。

一度〆日を入れて、ソレを他のクエリーで使いまわす方法ってありませんでしょうか?
どうか、お教えください。
>437
新規にフォームを作ります。レコードソースは空のままでいいです。
名前は「F締日処理」とでもしましょうかね。
「締日」というフィールドを作ります。コントロールソースは非連結。
既定値は=DATEとか空のままとか。
クエリ1と2と3の抽出条件の部分を=Cdate([Formas]![F締日処理]![締日])とか
>=Cdate([Formas]![F締日処理]![締日])とかします。
2002/8/1〜2002/8/31とかで抽出したい場合は「締日から」と「締日まで」というフィールドにして
>=Cdate([Formas]![F締日処理]![締日から]) And <=Cdate([Formas]![F締日処理]![締日まで])
にするなどそれなりに。
で、ついでにクエリ1.2.3を開くマクロをそれぞれに作ってそれをクリック時に実行する
ボタンなどを「F締日処理」に作ると使う方に喜ばれるでしょう。
>>438
うまくいきました!ありがとうございます。
フォームに値を持たせれば良いなんて盲点でした(^^;
440428:02/08/25 22:55
ありがとうございます。
状況は帳票フォーム(表形式のフォーム)に氏名ラベルコントロールを配置して、
配置している社員番号コンボボックスの更新イベントで、氏名ラベルも更新させようとしていました。
実行すると、表の全行のラベルが一斉に同じ値で更新されてしまうという状況でした。
結局、テーブルに氏名項目を追加して、ラベルではなく、氏名項目と連結したテキストボックスにして回避しました。
また、帳票フォームの場合、行ごと(レコード毎)にコントロールのプロパティーを変更する事は出来ないようですね!

テーブルやクエリーを参照するコンボボックス使用においては、プロパティー・書式の列数を2として、、列幅を2;4 とか
指定すると、連結列は1でも、他の列を表示させることが可能で、便利です。
また、社員番号コンボ -> 社員名テキストボックス でテキストボックスに社員名を表示させる簡単な方法は、
VBAを使わなずに、社員テキストボックスのプロパティー・データ・コントロールソースを
=DLookUp("氏名","T_社員","社員番号 = " & [社員番号コンボボックス])
という風にすると、実現できます。
441名無しさん@そうだ選挙にいこう:02/08/26 14:16
フォームのボタンからレポートの印刷プレビューを開くのに、フォームを閉じずに
DoCmd.OpenReport stDocName, acPreview
としていますが、そのプレビューを閉じるとそれまで最大化していたフォームが
普通の大きさにもどります。
プレビュー画面は最大化の指定をしてるんですが、閉じてもフォームが最大化のままにするのはどうすればいいでしょうか?
442名無しさん@そうだ選挙にいこう:02/08/26 16:40
>>441
そのフォームが常に最大化で表示しておいて良いのならば
フォームのActive時にDocmd.Maxmizeをいれておくというのはどう?
443名無しさん@そうだ選挙にいこう:02/08/26 19:28
Accessを始めて3日目位の初心者です。よろしくお願いします。
OSはWinXP、Accessは2002です。

Sub FCopy()
FileCopy "c:\work\hoge.dat", "c:\work\hogedat.csv"
FileCopy "c:\work\hoge.hdr", "c:\work\hogehdr.csv"
End Sub

というファイルコピーを行うモジュールをクラスモジュールに置きました。
これを、VBEditorの「実行->Sub/ユーザーモジュールの実行」から行う
とちゃんと動作するのですが、マクロの「モジュールを開く」に組み込んで
動作させると「FCopy()プロシージャをみつける事が出来ません」と
冴子先生に怒られてしまいます。どうすれば怒られなくなるのか何方か
ご教授願いたく、よろしくお願いいたします。
444名無しさん@そうだ選挙にいこう:02/08/26 20:01
>>443
そのSubステートメントを標準モジュール側に書いて

クラスモジュール側に
Private Sub Button1_Click()
FCopy
End Sub

とすれば出来るでしょう。
445444:02/08/26 20:04
失礼! 間違えました。
クラスモジュール側のSubステートメントは必要ありませんでした。
446名無しさん@そうだ選挙にいこう:02/08/26 21:13
クエリ式でfindって使えないの?なんか未定義の関数とか言われちゃうんです。
ところで何故にここは未だに「名無しさん@そうだ選挙にいこう」なのか?
もう丸二年経つぞ、、、
448名無しさん@そうだ選挙にいこう:02/08/26 21:37
>>443
クラスモジュール内に書かれたプロシージャは、
そのクラス内でしか参照する事が出来ません。
449441:02/08/26 22:25
>>442ありがとうございます。ACTIVE時の指定をしたら最大化のままになりました。
450名無しさん@そうだ選挙にいこう:02/08/26 22:35
初めてここに書き込みします。よろしくお願いします。
OSはWindowsXP、Office(Access)は2002を使用しています。

テーブルA
管理番号:建築物名称:築年数
01    :ビル01    : 15
02    :ビル02    : 10
03    :ビル03    : 8
01    :ビル04    : 13
04    :長屋01    : 60
        :
        :
テーブルB 
管理番号:建築業者
01    :●●建設
02    :大工◎◎
03    :△△工務店
04    :▼▼建設
        :
        :
という2つのテーブルがあり、テーブルAとテーブルBの管理番号を照らし合わせ、
番号が一緒のものを纏めてそれぞれをCSVファイルにエクスポートします。
テーブルAは大体20万件位あります。

01-●●建設.csv
建築物名称:築年数
ビル01   :15
ビル04   :13

管理番号全てのファイルを作成しなければいけないのですが、クエリを使って抽出
するやり方は何となく思い浮かぶのですが、管理番号全てを廻す関数の書き方が
イマイチよくわかりません。
ExcelVBAであれば思い浮かぶのですが、当方Accessは触り始めてまだ2日目で、
締め切りが明後日と急かされており、難儀しております。(T-T
Web等も検索してみましたが「これ!」というものに辿り着けず、
解りにくい書き方ですがどなたかご教授下されば、と。よろしくお願いいたします。
質問です。
テーブルAとテーブルBを次のように結合します。
select * from a,b where a.id = b.id

このとき
テーブルaのIDの中身が「Y(大文字のワイ)」
テーブルbのIDの中身が「y(小文字のワイ)」
でも条件を満たしてしまい出力されてしまいます。

このようなとき大文字小文字の区別をつけるようにするには
どうすればよいのでしょうか?
>>446
クエリ(SQL)でfindを使わなきゃならん必然性が思いつかないのだが?

>>450
ExcelでVBA書けるんならAccessVBAの書籍買ってきて勉強したら?
クエリ思いつくんなら、それをここに示したら?
他人にプロシージャ作らせようって魂胆が見え隠れしてないか?

VBA記述する能力と、どんなSQL投げればよいのかわかるんなら
半日もかからずにできるぞ
453名無しさん@そうだ選挙にいこう:02/08/26 23:32
>>450
>>テーブルAは大体20万件位あります。
>>管理番号全てのファイルを作成しなければいけないのですが、
ファイルを20万個作成するという事???

質問が全然わかりません!!
>>451
Access(と言うかJetDBE)の仕様では"英大文字小文字の区別はしない"
ようなので、どうしようもなさそう。
# すくなくとも わたしゃ 成す術を知らん

どうしても区別してもらわにゃ困るのならば、Database Engineの部分を
英文字大小を区別するモノに、すげ替える必要があるのでは?
SQLServer(MSDEもか?)とか

# dBASE,Paradoxなどは大小区別するんだけど、これはこれで
# SQLを投げるときに工夫が必要になるんで、一長一短あり
455名無しさん@そうだ選挙にいこう:02/08/27 01:16
初心者なんで、ひどい質問かもしれないけど・・・

条件によって計算方法を変えるための式を入力するにはどうすればいいのですか?
例えば
a=3% のときは d=b+c
a=6% のときは d=0.06b
a=1% のときは d=b
みたいなことなんですけど。。お願いします。
>>453
テーブルBの管理番号の数だけファイル作るんだろ?

管理番号がいくつか書いてないから何個ファイル作る気かはシランが、
1000も2000も管理番号がある訳じゃないだろうに

まーでも>450も書き方悪いわな。反省しる!(w
457 :02/08/27 02:35
夜分遅くこんばんは。

DAOであるテーブルの列数を取得したいんですが、
どうやればいいのですか?
(Tabledefsあたりの使い方が今市分かりません)
おながいします
>>455
クエリ(SQL)の中ではswitch関数とか
プロシージャの中ではselect case文やif else文
>>457
tabledefsオブジェクトが内包するfieldsオブジェクトの
countプロパティで取得する
460名無しさん@そうだ選挙にいこう:02/08/27 11:22
Access2002ってアクティべーションいりますか?
461名無しさん@そうだ選挙にいこう:02/08/27 11:33
http://www2.freenet.jp/muneo/index.htm
超悪徳会社 J−COM(ジェイコム)の定期点検を大儀名文とした
勧誘営業に困っていませんか?
点検と言いつつ何もせず、結局はインターネット等の契約をして欲しい
の話へもっていく腐れ外道集団。
断ると「テレビの映りが悪くなっても知らんぞ」と脅迫メッセージをぶつけてくる。
苦情は総務省へ直接電話をすること。
マスコミはケーブルTVとは仲がいいので、テレビで取り上げることはまず無い。
2ちゃんねるパワーでジェイコムを追い詰めよう!!
>>460
ここを見なされ つぅか調べるのがそんなに億劫なのか・・・
http://www.microsoft.com/japan/office/evaluation/indepth/oaw/#package

463名無しさん@そうだ選挙にいこう:02/08/27 14:56
アクセス2000使ってますがコマンドボタンを押すと終了するようにと
Application.Quit
としてボタンを押すと画面が消えるようになったんですが、
アクセスがタスクバーにゴミみたく残ってしまいます。
そのタスクバーのアクセスをクリックすると消えます。
タスクバーからも消す方法はないでしょうか?私のコンピュータだけかな?
>451
Ascでなんとかならんかね?

>450
ぐるぐるするのはDo...loopとかFor...Nextとか。
CSV書き出しならDocmd.TransferTextとかOpenステートメントとか。

エクセル得意ならエクセルでやればいいんじゃないのかね。管理番号順に
並べ替えて5万件ぐらいづつやれば出来そうなもんだけど。
465450:02/08/27 15:45
あー、頭がちょっとテンパッた状態で書いたので色々な方にご迷惑を
お掛けしたようで…申し訳ありません。
>>452
滋賀の田舎町なものでコンピュータ書籍を置いてある書店が近くにあ
りません。先日東京に出張した時に書店に立ち寄った時は夢のような
状態で、色々買い漁りましたがその中にAccess本は含まれておらず、
昨日発注しましたが届くのは1週間後だそうです。
あ!Amazon.comとかで注文した方が早かったでしょうか…後の祭り
ですが…
>>453>>456
反省してます。Table-Bには大体100件のデータがありますので、作成
するファイルは100個程になるかと思います。
>>464
Webを参照して、試しに以下のような

Private Function RecCount(kanri)

Dim iCnt As Integer
Dim MakeCnt As Integer
Dim Sql1 As String
Dim Sql2 As String

iCnt = DCount("管理番号", "Historytmp")
MakeCnt = 1

Do While iCnt <= MakeCnt
Set kanri = Hogetmp.Cells(MakeCnt, 1)
Sql1 = "SELECT * INTO "
Sql2 = " FROM Hoge"
Set Qdf = Hoge.CreateQueryDef("Hogeクエリ", Sql1 & kanri & Sql2)
MakeCnt = MakeCnt + 1
Loop
End Function

コードを記述してみましたが、>>443氏と同じく冴子先生に怒られてしまいました。
Excelの時はこんな事名褐炭ですが、運が良かっただけなんでしょうね
466450:02/08/27 16:03
名褐炭って何だ…「無かったん」ですね。

>>464
>エクセル得意ならエクセルでやればいいんじゃないのかね。管理番号順に
>並べ替えて5万件ぐらいづつやれば出来そうなもんだけど。

最初はExcelでそのような処理させていましたが、何故か上司はその方法が気に
入らないらしく、他の処理法を試す事になった事と、途中より「日付を入力し
てその範囲を抽出する」処理が入った事により結果Accessを使う事となりました。
>>465
「ExcelでVBAが書ける」 NOT 「DBのレコードに対する処理が書ける」ってこっちゃ

>>450のお題に対しては以下のようなプロシージャ書けばできるだろ
あらかじめCドライブに名前CSVというディレクトリを作っておく
Function outcsv()
Dim db As DAO.Database
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim outputname As String
Dim sql_str As String

 Set db = CurrentDb
 Set rs1 = db.OpenRecordset("テーブルB")
 Do While rs1.EOF = False
  outputname = "C:\\CSV\\" + rs1!管理番号 + rs1!建築業者 + ".csv"
  sql_str = "SELECT 建築物名称, 築年数 FROM テーブルA " _
  & "WHERE 管理番号 = '" & rs1!管理番号 & "';"
  Set rs2 = db.OpenRecordset(sql_str)
  If rs2.EOF = False Then
   Open outputname For Output As #1
   Do While rs2.EOF = False
    Print #1, Chr$(34) + rs2!建築物名称 + Chr$(34) + Chr$(44) + Chr$(34) + rs2!築年数 + Chr$(34)
    rs2.MoveNext
   Loop
   Close #1
  End If
  rs2.Close
  rs1.MoveNext
 Loop
 rs1.Close
End Function

ADOやDAOでデータベーステーブルにアクセスする方法を知っていれば
ExcelでもVBAで書ける処理だよ
468643:02/08/27 17:07
Access2000の自動ふりがな機能ですが、たとえば会社名の
ふりがなを表示したいとき、「株式会社」「有限会社」などは
ふりがなが出ないようにする方法はありますか?
せめてこの2種類、難しい場合は頭につくのだけでも表示されないと
嬉しいです。「筆まめ」にそういう機能があって便利だったんです。
よろしくお願いします。
469468:02/08/27 17:08
すみません! 名前の643とsageは間違いでした。
470名無しさん@そうだ選挙にいこう:02/08/27 18:11
顧客一覧テーブル中に入っている顧客コードを全てTable1に追加作成
したいのですが、
INSERT INTO Table1 SELECT 顧客コード, 0 FROM 顧客一覧
これだと一番最初は良いのですが2回目以降からは顧客一覧とTable1の
顧客コードが重複してるとエラーがでてしまいます。
重複コードは無視して増えた分だけ追加していくSQLはどんな風でしょうか?
471 :02/08/27 18:17
エクセルだとセルの書式設定で縮小して全体を表示するってオプションが選べるじゃないですか?
アクセスのフォームやレポートでも同じように文字が枠からはみ出たら自動的に縮小するように出来ないですか?
472名無しさん@そうだ選挙にいこう:02/08/27 19:02
>>463
いいレスが付かないかと、密かに注目しておりました。
こういうの、Accessに限らず、よくあるね。
今の自分(Win2000+Access2000)の環境ではあまり見ないけど、
ユーザーに行くと、よくそんなマシンを見ます。
何でしょね。
引き続き、いいレスが付くことをお祈りします。
>>472 >>463
MSのサイトにはこれくらいしか情報がないね
http://support.microsoft.com/default.aspx?scid=kb;ja;jp246953

Accessに限らず、他のプログラミングツールで作成したソフトウェアでも
発生する現象みたいだね。
一昔前の情報によると"Windowsの仕様"の範疇で起こる現象だったそうだ
>>473の追加
Access97はこのあたりをチェックせいってことらしい
http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q190074&
475名無しさん@そうだ選挙にいこう:02/08/27 20:11
>>471
出来ますよ
VBAを使って下さい。
476450:02/08/27 20:30
>>467
ありがとうございます。出来ました。
実は他にも作成するCSVに埋める項目があって、その型の違い等で
多少弄らせて頂きましたが、何とか形にする事が出来ました。
1週間後に届く書籍で勉強します。
とは言え、実は来週で仕事辞めてしまうのですが。この経験を多少は
生かせる職に就きたいと思います。
さて後はID書と試験書…やっぱり今夜も徹夜…
477 :02/08/27 21:25
>>459
できますた
ありあとやんした
478名無しさん@そうだ選挙にいこう:02/08/28 00:17
>>471
プロパティーに自動拡張というのがあるので試してチョ
479名無しさん@そうだ選挙にいこう:02/08/28 01:34
テーブルの中にある「整理連番」というオブジェクトがあります。
この数字は1づつ増えるのですがそのタイミングでレポートを
改ページしたいです。どのような方法がありますか?
480479の補足。:02/08/28 01:47
整理連番は1レコードに対して1づつ増えるというわけではなく、
1件〜20件毎に変わっていきます、例えば連番1は4件、2は20件など。
481名無しさん@そうだ選挙にいこう:02/08/28 02:07
>>479
単純に、
表示−並べ替え/グループ化
をいじるだけではダメなのでしょうか?
482名無しさん@そうだ選挙にいこう:02/08/28 09:14
Application.Quitでなく、Docmd.Quitを使います。
>>482
-Accessヘルプからの引用-
DoCmd オブジェクトの Quit メソッドは、Access 95 との互換性を保つためのものです。
通常は Application オブジェクトの Quit メソッドを使うようにしてください。

>470

1回目、2回目と考えるよりも顧客一覧からTable1にない顧客コードのみ
追加すると考えろ。

INSERT INTO Table1 ( 顧客コード )
SELECT [顧客一覧].[顧客コード] FROM 顧客一覧
LEFT JOIN Table1 ON [顧客一覧].[顧客コード]=[Table1].[顧客コード]
WHERE ((([Table1].[顧客コード]) Is Null));
485名無しさん@そうだ選挙にいこう:02/08/28 12:27
相当基本的なことだと思うのですが、質問させて下さい。

あるイベントの参加団体の管理にAccessを使っています。

参加団体の基本情報を入力したテーブルを持ったデータベースファイルがあり、
作業をする担当者が各自で
[ファイル] → [外部データの取り込み] → [テーブルのリンク]
で基本情報データベースにリンクさせて作業を行っています。

で、自宅で作業しようと思い、基本情報データベースと自分の担当用データベース
(普段は同じフォルダに入れています)を両方持ち帰って開いてみると、
リンクが切れてしまっています。

htmlでたとえれば、絶対パスでなく、相対パスを使って、リンクするテーブルを指定したいのです。

方法をご教授願えますでしょうか。
486 :02/08/28 12:29
>>454
>>464
ascによる文字コードへの変換で解決できました。
ありがとうございました。
487名無しさん@そうだ選挙にいこう:02/08/28 12:55
>>485

起動時に開くフォームに


Private Sub Form_Open(Cancel As Integer)
Dim DataPATH AS String
DataPATH = Left(CurrentDb.Name, Len(CurrentDb.Name) - Len([システム部ファイル名])) & [データ部ファイル名]
DoCmd.DeleteObject acTable, [テーブル名]
DoCmd.TransferDatabase acLink, "Microsoft Access", DataPATH, acTable, [テーブル名], [テーブル名]
End Sub


を記入すれば可能です。
それぞれの振る舞いはヘルプを見て勉強してね。
488名無しさん@そうだ選挙にいこう:02/08/28 13:50
あるMDBファイル(DB)のテーブルをほかのMDBファイルにエクスポートしたんですが、
エクスポートされたテーブルに並び替えが反映されてないんです。
手動で並び替えをする以外にテーブルの並び替えは設定できますか?
教えてください。
>485
手動なら、リンクテーブルマネージャ使うといいよ。
490名無しさん@そうだ選挙にいこう:02/08/28 14:16
>>488

テーブルは並べ替えデータを格納していないので手動でやる以外方法がありません。
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
どうしても同じ並べ替えで閲覧したいのであれば、クエリーを使えば良いと思います。
491479:02/08/28 20:01
>481様、ご助言ありがとうございます。

>単純に、
>表示−並べ替え/グループ化
>をいじるだけではダメなのでしょうか?

それだとグループ化したものごとの集計、分類にはなるようですが、
印刷物の改ページには影響しないようなのです、、。

どなたかお分かりになられる方、引き続きお待ちしております。。
492491の補足:02/08/28 20:11
例えば、
HOGEという名のテーブル内には「カテゴリ連番」「商品名」「価格」「件数」があり、
そのHOGEテーブルのフィールド「カテゴリ連番」が変わる毎に
HOGEHOGEという名称のレポート上で改ページされる、というような
記述はVBA等で、できますでしょうか?

カテゴリ連番1、商品名HOGE、価格100円
カテゴリ連番1、商品名HAGE、価格140円
********ここでページ的にはまだ余裕があっても改ページされて********
カテゴリ連番2、商品名AGE、価格150円
カテゴリ連番2、商品名SAGE、価格200円

というようにレポートを出力したいのですが。

よろしくお願いします。
>479-491,492
ばかだなあ、あほだなあ、教えてもらってもできないなんて。
並べ替え/グループ化の設定で改ページとかも設定できるよ。
カテゴリ連番を選んで下の同一ページ印刷をグループ全体にしる。
494470:02/08/28 21:12
>>484さんありがとうございます!感謝!
495443:02/08/28 21:23
>>444さん、>>448さん、お返事有難うございました。
急な出張でココ覘けなかったのでお礼が遅れました。
結果的には「モジュールを開く」ではソースコードが開いてしまい、
思った結果が出せなかったのですが、「プロシージャの実行」で
モジュールをマクロで動作させる事が出来ました。
お恥ずかしいやら何と言うか…
496名無しさん@そうだ選挙にいこう:02/08/28 21:34
Accessは2002、OSはXPです。質問なのですがよろしくお願いします。
AccessのマクロでAutoexecを作りました。流れは
テキスト変換 (CSV1->テーブル)
テキスト変換 (CSV2->テーブル)
テキスト変換 (CSV3->テーブル)
テキスト変換 (CSV4->テーブル)
クエリを開く
プロシージャの実行
オブジェクトの削除 (テーブルcsv1)
オブジェクトの削除 (テーブルcsv2)
オブジェクトの削除 (テーブルcsv3)
オブジェクトの削除 (テーブルcsv4)
です。
これを実行させた所、最初のテキスト変換の処理が終わった所でそれ
以降のマクロが動作しません。試しにテキスト変換の順番を変えて
みましたが、やはり一番始めのテキスト変換が終わった段階で動作が
止まってしまいます。どなたか同様の経験がある方、またはその対処法
をご存知の方、ご教授下さい。
497名無しさん@そうだ選挙にいこう:02/08/28 22:41
>>487 >>489
ありがとうございます。何とかなりそうです。
498名無しさん@そうだ選挙にいこう:02/08/29 02:51
下の検索がOpenRecordsetで「テーブル無しエラー」になる。(実際はもちろんある(w
  
  'ORACLE7.3
Set dbsSvr = wsp.OpenDatabase("XXXXX", False, False, "ODBC;UID=XXXXX;PWD=XXXXX")

strSQL = "select CtlChar3 from K_ControlMTb "
strSQL = strSQL & "where Code1 = 'NEND' "
Set rstSvr = dbsSvr.OpenRecordset(strSQL)



で、直接繋ぐ代わりに、ORACLEにリンクしたMDBを用意して経由してアクセスすると検索できる。(↓)

Set dbsSvr = wsp.OpenDatabase("E:\TestData\XXXXX.mdb")

この原因心当たりある人いたら、おながいします。
499名無しさん@そうだ選挙にいこう:02/08/29 09:41
重ね重ねすみません。

>>489さんの書き込みにある
リンクテーブルマネージャを使おうとしたのですが、
ヘルプに書いてあった[ツール] → [アドイン] には表示されませんし、
アドインマネージャにも出てきませんでした。
CD-ROMからセットアップし直そうとしても、アドインの項目は見あたりませんでした。

どうすれば使えるようになるのでしょうか。
質問お願いします。
win98/Access2000です。

メインフォームの非連結コントロールに入れた値で
サブフォームにフィルターをかけようとしています。
メインフォームのコントロールは

1.受付日(日付/時刻型、書式:日付(L)、提携入力:9999\年99\月99\日;0;*)
2.ユーザーコード(テキスト型)
の2つです。

それぞれの更新後処理に次のようなプロシージャを書きました。
----------------------------------------------------------------------------------
If (Me![ユーザーコード] <> "Null") Then
Me![オンコール内容].Form.Filter = "[ユーザーC] ='" & [ユーザーコード] & "'"
Me![オンコール内容].Form.FilterOn = True

Else
Me![オンコール内容].Form.FilterOn = False
----------------------------------------------------------------------------------
If (Me![受付日] <> "Null") Then
Me![オンコール内容].Form.Filter = "[受付日]=#" & [受付日] & "#"
Me![オンコール内容].Form.FilterOn = True

Else
Me![オンコール内容].Form.FilterOn = False
----------------------------------------------------------------------------------
それぞれテストをしてユーザーコードでのフィルタはうまくいったのですが
受付日の方がうまくいきません。
フィルタはかかっているのですが、レコードが1件も表示されなくなってしまいます。
エラーは出ないので期待した値でフィルタがかかっていないようです。

このときのサブフォームのプロパティのフィルタの値が
[受付日]=#02/04/01#(2002年4月1日でフィルタをかけました)

になっていました。
ためしにサブフォームのコントロールにフォーカスを合わせてツールバーの
選択フィルタを実行したのですが、同じくサブフォームのプロパティの値は
((Qオンコール処理内容.受付日=#4/1/2002#))

となっていました。おそらくこの辺りが原因ではないかと思うのですが
どうして良いのか分かりません。どなたか教えていただけませんでしょか。
>496
そのマクロをAutoexecとしてではなく普通のマクロとして動かしてもそうなのかな?
各行のマクロ名に何か入力したかな?

>500
>Me![オンコール内容].Form.Filter = "[受付日]=#" & [受付日] & "#"
をMe![オンコール内容].Form.Filter = "[受付日]=cdate('" & [受付日] & "')"
でどうかな?
502500:02/08/29 11:38
>をMe![オンコール内容].Form.Filter = "[受付日]=cdate('" & [受付日] & "')"
でどうかな?

できました!!
501さんありがとうございました。
助かりましたm(__)m
503496:02/08/29 13:04
>>501さん
普通のマクロとして動かしても正常に動作してくれませんでした。で、
>各行のマクロ名に何か入力したかな?
この一文が気になってマクロ名を全部削除した所、正常に動作するように
なりました! (本当に)×100 ありがとうございました!!
504access:02/08/29 13:22
ここに、Accessのコードを自動生成するツールがあるよ。

http://www.vector.co.jp/soft/win95/business/se252104.html
505500:02/08/29 13:26
501さん先ほどはありがとうございました。
後学のために質問させてください。

例えば書式で日付(L)が設定されたテキストボックス(定型入力なし)に
「20020401」と入れようとするとエラーが返ってきます。
「2002/04/01」と入れるとOKです。
のことから非連結テキストボックスのデータ型は書式に依存すると思っていました。

501さんに教え頂いたコードではcdate()でデータ型を日付型に変えていることから
・非連結テキストボックスのデータ型はテキスト型
・書式の設定に合わないデータは弾かれるが
 書式によってデータ型がテキスト型以外に変わっているわけではない
と思うのですがこの考え方であっているのでしょうか?
>>499
メニューを以下のように辿る by Access2002
ツール(T) - データベース ユーティリティ(D) - リンクテーブル マネージャ(L)
507名無しさん@そうだ選挙にいこう:02/08/29 15:43
>>498 もおながいします(ペコペコ
508501:02/08/29 16:15
>504
試してみたけど...ぼくはいらないな。テーブルしか指定できないし、
(クエリを選べない。マスタ管理用だから?)ベクターにもReadMeにも対象バージョンが
書いていないのね。Access2000ではエラーで止まったよ。2002用かな?ADO使ってるし。
(ADOって2000以降だよね?97以前じゃ動かないんじゃないかな、これ。まあ2000でも
動かないけど)アドイン作れるぐらいだから作者さんそこそこスキルあるんだろうけど、
マスタテーブルの管理がしたいだけならあんな手の込んだ事しなくてもいいしねえ。

>500-502-505
非連結テキストボックスの数字をCIntしなくても数値型に放りこめるから
たぶんVariant型じゃないかな?
普段日付の入力をするテキストボックスに書式を設定しないから
書式でデータ型が変わるかなんて気にした事もなかったなあ。
書式を設定すると今年の日付を入力するのに20020829と8文字。
しないと8/29で4文字。去年だと02/8/29で7文字であまり変わらないけど、
今年の入力の方が多いからね。

>498-507
ごめん、オラクル使った事ないんよ。誰か知ってる?
509500:02/08/29 17:13
>508
試してみました。また一つ勉強になりましたm(_ _)m
テキストボックスだからテキスト型だろうと初心者丸出しの思い込みをしてました。
あ〜恥ずかしい(汗)

日付はいろいろなサイトで2001年問題とかあるから年は4桁の方が良いよってあったので
日付(L)にしました。「/」なんかは定型入力で入るし、ほとんどは当日の入力なので
規定値にdate()入れてます。当日分以外はオペレータさんに頑張って貰うってことで(^^;
510名無しさん@そうだ選挙にいこう:02/08/29 23:26
アクセス2000+win98では日付の定型入力に##/##/##とすると表示は
02/08/29となり、入力もそれに合わせてできますが
アクセス2000+winXPで全く同じファイルを使うとなぜか表示が
2002/08/29となり、わざわざ02/08/30などと年の上2桁を削らないと定型入力エラー
になってしまって困りました。
このような点を踏まえるとどんな日付型が良いんでしょうかね?
511名無しさん@そうだ選挙にいこう:02/08/30 00:52
Aという顧客テーブルがあります。 Bのテーブルの日付フィールドに日付を入力するとBの顧客名フィールドにAの顧客名すべてが入力されるようにするにはどうしたらよいでしょうか? お願いします。
512名無しさん@そうだ選挙にいこう:02/08/30 02:55
>>511
質問が不充分で答えようがありません。
質問の中にクエリやフォームの単語がありませんが、ご存じでしょうか?
それらの使用目的を理解されて質問し直された方がいいと思います。
それから、>>450さんのようなテーブルのイメージを書かれますと、
少々説明文が不完全でも意志が伝わりやすいと思います。
513511:02/08/30 09:28
>>512
申し訳ないです。
Aテーブル
顧客名:商品数
愛甲:10
畠山:15
仁科:22
袴田:18

Bテーブル
日付:顧客名

というテーブルがあります。
Bテーブルに日付を入力すると自動的にAテーブルの全員の顧客名がBテーブルの顧客名に入力になるようにしたいのです。お願いします
>>510
Win98側の設定を「yyyy/mm/dd」に統一する。
コンパネ→地域→日付で、短い形式をyyyy/mm/ddにして定型入力を####/##/##にする。

xp側を変えるなら、コンパネ→地域と言語のオプション→地域オプション→カスタマイス→日付で、
短い形式を変える。

どちらも再起動必要かも。
515名無しさん@そうだ選挙にいこう:02/08/30 10:23
>>513 リレーショナルデータベースという意味をご存知かすぃら。
ついでにテーブルの正規化という単語も。
想像するにAテーブルとBテーブルの間にはなんら関連性がありません。
何のシステムなのかもっと具体的に書いてください。
作業の実現だけでいいなら、Aのリストの顧客名をBのリストの顧客名の
ところにコピー&ペーストするのが開発もいらず一番簡単でしょう。
516489:02/08/30 10:36
>>499
Access97だよね?うーん、標準でインストールされないのかな?
漏れのところのOfficeはカスタムインストールでAccessの中の「その他のウィザード」もチェック入れてるけど。
517名無しさん@そうだ選挙にいこう:02/08/30 10:54
>Bテーブルに日付を入力すると自動的にAテーブルの全員の顧客名が
>Bテーブルの顧客名に入力になるようにしたいのです。

????????????????
この仕事を与えた上の人にちゃんと話聞いた方がいいと思われ
>511-513
なんだかAccessのテーブルをエクセルのセルと同じ様な物だと
思ってるんじゃないかな。
一応あなたのやりたい事は更新クエリを使えばできるけど、
設計やデータベースってなんぞやの部分で誤りがあるんじゃないかと思うよ。
519510:02/08/30 12:28
>>514
ありがとうございます!
アクセスの設定だけでなくwinの設定もからむんですねー。
520残暑お見舞い申しage候。:02/08/30 19:37
初歩質問でお手数をおかけしますが、よろしくお願いします。
(Access2002、WinMe)

顧客情報の“契約期間”を扱い、当月の契約顧客を抽出したいと思います。
契約は月単位で、例えば14年8月から14年11月までなら4ヶ月間の契約となります。

“期間”を1つの列に入力して、抽出するような形にできるでしょうか。
それとも“期間”を、契約開始月と契約終了月の
2つの列で考えたほうが、扱いやすいでしょうか。

よろしくお願いします。
521名無しさん@そうだ選挙にいこう:02/08/30 20:18
>>520
使用目的がそれだけなら1つの列が扱いやすいかもしれないけど、
抽出の条件式は複雑になりますが2つ以上の列にするべきだと思います。
(契約開始月と契約終了月)
当月契約終了の顧客一覧表を作る等の発展が出来ます。
年月をどの様に持つかも検討が必要ですね。
好みがありますので、どれがいいというのもありませんが、
・日付(2002/8/1)
・数値(200208)
・数値を二つ(2002と08)
等が出来ます。
こんばんは、レスどうも。<(_ _)>

>当月契約終了の顧客一覧表を作る等の発展が出来ます。
なるほど。それは便利ですね。何をやるにもセンスは必要だ・・・
データ構築の前の検討、計画が大事なソフトですよね。
試行錯誤してみます。

抽出の条件式などのサンプルがあるサイトがあれば、
教えていただけないでしょうか。
今回の条件式は複雑みたいですし・・・
連続ですが、お願いします。
523名無しさん@そうだ選挙にいこう:02/08/31 00:16
別に複雑でないべや
SELECT ...,format(契約開始日,"yyyymm") AS 契約開始年月,
format(契約終了日,"yyyymm") AS 契約終了年月 FROM テーブル
WHERE 契約開始年月<=200208 AND 契約終了年月>=200208
レスどうもです。
まだまだ自分が初歩の初歩にいることを感じさせられます。
精進します。
525499:02/08/31 02:53
>>489 >>506

お、見落としてました。すみませんです。
当方Access2000ですが、>>506さんと同じ方法でたどれました。
>525
お、うまくいきましたか。それではお約束で、
バージョン書いとけや、ゴルァ!
527名無しさん@そうだ選挙にいこう:02/08/31 14:46
レポートウィザードをするとグループレベルがついているときとついていないときがありますが、基準は何なのでしょうか?
528名無しさん@そうだ選挙にいこう:02/08/31 14:49
あのぉ〜、突然ですが、質問です。
あるテーブルをCSVファイルとしてエクスポートする際、なぜか「引数が無効です
」と突っ返されるんで、色々試していたら、十進型のフィールドを倍精度/単精度
浮動小数点型に直すとうまくいくことがわかりました。

なぜこのようなことが起こるのでしょう。
私としては、誤差の生じる浮動小数点型は使いたくないのですが・・・。
ちなみに、使用しているのはACCESS2000です。
529名無しさん@そうだ選挙にいこう:02/08/31 16:54
>>528
十進型、ダメですね。
通貨型ならと思ってやってみたけど、これはこれで小数点以下の数値が無視される。
どうやら浮動小数点型を使えということらしいね。

浮動小数点型って経理とかでは誤差があって使えないね。
そもそも「オフィス」って品名で売ってるのだから固定小数点型を標準にしろと
言いたくなるけど、米国の事務処理では浮動小数点型で問題ないのか不思議だね。
ヘルプなんかで浮動小数点型について殆ど説明されてないので、この誤差について
知らない人が多いと思う。
530名無しさん@そうだ選挙にいこう:02/08/31 18:37
>529
通貨型で小数点以下表示桁数でGo。
531528:02/08/31 18:43
>530

おぉ〜、なるほど、完璧だ。
いや、ありがとうございます。
532529:02/08/31 19:40
>>530
自分のやり方が悪いのかなあ。
通貨型でテーブルデザインの小数点以下表示桁数は増やしてあります。
書き込まれたCSVをメモ帳で開くと小数点以下の数値が無視されています。
533名無しさん@そうだ選挙にいこう:02/08/31 20:54
テーブルで
ID 項目
1 101
2 109
101 1401
104 102

を同じ内容をクエリにし並び替えしたら
ID
1 101
2 102
3 109
4 1401
てIDが小さいものから1から順番に来るようにできますか?
上のテーブルを単純に並びかえしたら
IDが
1
104
2
101
になってしまいます
>>533
テキスト型にしてるから。

対応:
1.項目フィールドのデータ型を数値型にする。
2.クエリでデータ型変換して見た目をよくする。(CLng関数 or CDbl関数)
535名無しさん@そうだ選挙にいこう:02/08/31 21:26
>>534
thank you
536名無しさん@そうだ選挙にいこう:02/08/31 22:31
フォームのコントロールのプロパティーをいじってセーブすると、いきなりアクセスが終了しちゃうんです!
結構再現性があります。皆さんのはどうですか?
既出かもしれへんけど、コンボボックスをクエリーから表示させるようにして、なおかつ、そのクエリーの結果はは、他のテキストボックスの値に
応じて変わるようにしたいんですが、上手くいきません。レコード移動イベントでリクエリーしたら、永久ループになってしまった!!
537名無しさん@そうだ選挙にいこう:02/08/31 22:49
>>531
本当に完璧?
>>532
オレもうまくいかない
538528:02/09/01 00:17
>>532
>>537

ホントだ・・・。
書き出されたものをチェックしたら、仰るように小数が無視されていました。
ううむ・・・どうすれば小数が使えるんでしょう・・・。
>>538 その他
Windowsのスタート - 設定(S) - コントロール パネル - 地域のオプション
 数値タグ - 少数点以下の桁数(T) デフォルト 2
 通貨タグ - 小数点以下の桁数(T) デフォルト 0
それぞれの値を変えてみなされ by Windows2000SP3 & Access2002SP-2
540529:02/09/01 02:15
>>539
すばらしい!
ありがとうございます。

しかし、MSに対しては、単なるエクスポートでここまでやらなければならないというのは
納得いかないね。
541528:02/09/01 19:29
>>539
最初に質問した私の方がレスが遅れました。^^;
どうもありがとうございます。
今日はよく眠れそうです。^^
542名無しさん@そうだ選挙にいこう:02/09/01 22:05
ちょっとスレの内容とは違うが、postgreSQL関連のスレがある
板って、どこですか?
検索してみてもみつからないもので。
>>542
WebProg、プログラマ、プログラム
エクスポートの件、モジュールだと特に設定しなくても、十進型で問題ないみたいだね。
545名無しさん@そうだ選挙にいこう:02/09/02 14:05
>>544
表現が曖昧で、どうして問題ないのかが不明だと思うのだが?

# 自分で調べろと言っている?
546名無しさん@そうだ選挙にいこう:02/09/02 14:28
VBAを使用して、レポートを開くときに、データソースの件数が0件だったら開かないという処理を
レポートから行う事は可能ですか?
OPENイベントに書くつもりで、DAOを使用して件数を求めるところまでは行ったのですが、レポートを閉じれません。
547名無しさん@そうだ選挙にいこう:02/09/02 15:00
>>546
単純に、

Private Sub Report_NoData(Cancel As Integer)
'MsgBox ("データが無いよ!")
Cancel = True
End Sub

ではダメですか?
>545
失礼、半分独り言モードだった。
エクスポートの件、モジュールだと、特に(地域のオプションを)設定しなくても、
十進型では問題ないみたいだね。

どうして問題ないのかはわからない。興味があったらマイクロソフトに聞いてみたら?
549名無しさん@そうだ選挙にいこう:02/09/02 16:25
>>546
Openイベント件数がゼロ件だったらCancel=Trueにするというのはどう?
レポートを開いた方のエラートラップ(97だとキャンセル時に
2501のエラーになる)も忘れずに。
550 ◆9qoWuqvA :02/09/02 16:48
当方ACCESS97とVBで開発している者です。
手持ちに2002がないので持っている方にお尋ねします。
2002でインストールされるものの中にMSJET35.DLLは含まれていますか?
どうか教えてください。
551546:02/09/02 17:07
>>547 ありがとう
アクセス2.0からやってますが、そんなメソッドがあるなんで知らなんだ、恥
>>550
スクラッチ(無垢)な状態からOS,Officeパッケージをインストールした場合
msjet40.dllしかありません。
 by Windows2000SP3 & OfficeXP Dev.(Access2002 SP-2)
553550 ◆9qoWuqvA :02/09/02 17:30
>>552
了解!ありがとうございます。大変助かります!
554名無しさん@そうだ選挙にいこう:02/09/02 19:45
オリジナルの様式で、クエリを作ると、プリンター設定が激ムズなんだけど
何かよい方法ありますか?
>>554
質問の意図が伝わってこないのだが、詳しく述べてくれないだろうか
・オリジナルの様式って何に掛かるのか
・プリンタ設定の何が難しいのか そもそもプリンタの設定って?
556名無しさん@そうだ選挙にいこう:02/09/02 20:26
>>555
連続している伝票とかに用紙サイズや項目の位置を設定すると
だんだんずれてくるんです。0.1ミリ単位で設定してるんですが・・・
557名無しさん@そうだ選挙にいこう:02/09/02 20:37
>>555
連続している伝票とかに用紙サイズや項目の位置を設定すると
だんだんずれてくるんです。0.1ミリ単位で設定してるんですが・・・
558名無しさん@そうだ選挙にいこう:02/09/02 20:39
アクセスを使うと何ができるのか簡単に教えてください。
559名無しさん@そうだ選挙にいこう:02/09/02 20:47
>>556
用紙サイズをインチで設定してみれば
連続用紙の場合、ミリ単位だとそんなこともある
560名無しさん@そうだ選挙にいこう:02/09/02 20:48
>>ありがとう
やってみます
>>558
情報の管理
たぶん貴方には必要無いと思うよ。

必要になるときは・・・泣きながら勉強しなきゃいけないから・・・
高いソフトだしね。
562名無しさん@そうだ選挙にいこう:02/09/02 22:24
【現象】
DAOでSQL(インサート)を実行すると、
dbsSvr.Execute strSQL, dbSQLPassThrough
下記のエラーが発生する。

「3061 パラメータが少なすぎます。<数> を指定してください 」


※dbsSvrは、ORACLE7.3とリンクしてるMDBです。(MDB経由でORACLEと繋いでる)
※インサート文自体は、ツールで実行すると正常にインサートされます。


【環境】
win98、Access97


こんな事象の経験あったら教えてください。
563名無しさん@そうだ選挙にいこう:02/09/02 22:35
ちなみに、その直前にdeleteを実行してますが、
それは問題ありません。
まず最初に上司のところへ行く

最初に「申し訳ありません、カードを抜いてしまったのでネットワークから外れてしまいました。」
次に「なぜカードを抜いたのかを客観的に報告する」(言い訳にならないように)
最後に「戻し方が判らないので教えていただけますでしょうか?」(上司がPCに疎い場合は誰に聞けば大丈夫かを聞く)

ビジネスで大切なのは反省と真摯な態度である。
・・・すみません・・・誤爆してしまいました。

カチュの書きこみボックスのタイトルをチェックしわすれました。
566名無しさん@そうだ選挙にいこう:02/09/03 15:44
age
567名無しさん@そうだ選挙にいこう:02/09/03 18:42
あるフォームでコマンドボタンを押すとIEブラウザでフォームで関連付けたファイルを開きたいのですが教えてください。
例えばText1に"my document"
   Text2に"siryou.pdf"
と入っていて
アドレス= "C:\" & Text1 & "\" & Text2
としておいて そのアドレスのファイルをIEで開くという場合です。
お願いします。
>567
Dim stAppName As String
Dim File_name1 As String , File_name2 As String

File_name1 = Me.Text1
File_name2 = Me.Text2

stAppName = "IEXPLORE.EXE C:\" & File_name1 & "\" & File_name2
Call Shell(stAppName, 1)

こんなんどうでしょ
569567:02/09/03 19:25
ありがとうございます。でもうまくいかないようです。
Pathに間違いは無いはずですが、ファイルが無いとか言われてしまいます。
570567:02/09/03 19:31
あっ、うまく行きました。"IEXPLORE.EXE"のPathもしっかり指定したらできました。
ありがとうございました。
571田中恍人:02/09/03 23:10
>>562
ゴォグルで
「パラメータが少なすぎます。」 「を指定してください 」
をキーワードに検索しる。
オブジェクト挿入で画像を入れフォーム上で表示する場合、
JPEGファイルは直接表示できないですか?

JPEGアイコンが現れ、クリックしないと表示できないです・・・。
(BMPファイルなら直接表示できるんだけど・・・)
573名無しさん@そうだ選挙にいこう:02/09/04 17:45
クエリで
列1と列2にルックアップウィザードで同じ社員テーブルを置き項目を選択できるようにし、
列1の社員と列2の社員の両方をグループ化し両方の列で選択された社員をカウントをする事って出来ますか?

つまり、列1だけなら単純にグループ化しcountすれば入力した社員名の数だけカウントされますが
2つ以上の列を一つにまとめてカウントというのが出来ません
教えてください
574名無しさん@そうだ選挙にいこう:02/09/04 17:47
accessでテーブルに単価、数量、合計金額のフィールドがあります。
そのテーブルを元に入力用フォームをつくり合計金額の部分に計算式(=[単価]*[数量])を入れました。
フォーム上では無事に合計金額が自動で出るのですが、その値がテーブルに反映されず¥0となってしまいます。(ToT)
半日ほど調べたのですが、解決できません。
解決法をご存知の方がいらっしゃいましたら、ご教授くださいますよう、何卒宜しくお願い致します。(mOm)
なお先ほどは、板を間違えてしまいました、申し訳ありません。
575名無しさん@そうだ選挙にいこう:02/09/04 17:50
>>572
過去スレの320と同じかな?
http://pc.2ch.net/bsoft/kako/965/965614164.html
>>575さん
ありがd
過去スレ320さんと、まったく同じ質問だったね。
そして、解答を見た私のリアクションも、
320さんとまったく同じですた。
過去スレ多すぎて、全部見てなかったので、すまそ。
577(´・ω・`):02/09/04 18:28
宛名ラベル作成で、
1つの住所を12個印刷とか簡単に出来る方法教えてケロ。
>>573
すまん、言っている意味がよくわからん
クエリデザインのSQLビューを開いて、そこに書かれているSQL文を
貼り付けてくれないかの?
>573
何が言いたいか読みとれん。もう少しわかり易く書きなおしてみてね。
>574
フォームの単価と数量の更新後処理にそれぞれ
Me![合計金額]=Me![単価]*Me![数量]
ってやってみて。
580579:02/09/04 18:48
>577
1.適当に12個レコードがあるテーブルを作る。
2.住所とかの宛先のテーブルと1のテーブルを元にクエリを作る。
このときテーブルを結合しないと、12倍にレコードが増えて表示される。
3.2のクエリを元に宛名ラベルを作る。
>578
かぶったね。
581574:02/09/04 19:01
>579
早速のレスありがとうございます。
実行しましたが、マクロが見つからないというエラーが出てしまいます。
どうしたらよいでしょうか?
582579:02/09/04 19:24
>574-581
ごめん。更新後処理の「イベントプロシージャ」に
Private Sub 単価_AfterUpdate()
Me![合計金額]=Me![単価]*Me![数量]
End Sub
583574:02/09/04 19:41
>582
何度も申し訳ありません。
今度は、{この値にオブジェクトを代入することはできません。}
と出てきてしまいました。(ToT)
584bloom:02/09/04 20:10
585名無しさん@そうだ選挙にいこう:02/09/04 20:29
>>579
現場テーブルがあり、その中に社員フィールドを作ります
しかし、その現場で必ず社員が一人とは限りません。二人の場合もあります
そこで、社員1と2いうフィールドを2つ作り、現場によって1人の時と2人と時とを作ります
つまり
現場 社員1 社員2
大阪 aaa
東京 aaa  bbb
山口 aaa  zzz
沖縄 bbb

そして、クエリでそれを集計したいのですが
上の例で行くと、社員1だけを集計するとaaaが3、bbbが1としか集計されません
これを社員1と社員2フィールドをまとめて集計して
aaaが3、bbbが2、zzz1と言う風にクエリに出したいのですが…
わからないので、教えてください
586(´Å`):02/09/04 20:44
>>580
ありがとう★
明日ためしてみます。
>585

SELECT 社員 ,COUNT (*) AS カウント FROM
(SELECT 社員1 AS 社員
FROM テーブル1
WHERE 社員1 IS NOT NULL
UNION ALL
SELECT 社員2 AS 社員
FROM テーブル1
WHERE 社員2 IS NOT NULL
) temp
GROUP BY 社員

こんな感じかなぁ
588名無しさん@そうだ選挙にいこう:02/09/05 00:51
教えて下さい。
ピボットグラフビューで、項目の並びはその名前の先頭の
文字のあいうえお順や、数字の順番になりますが、
それを任意の並びに変える事は出来るのでしょうか?
589(´・ω・`):02/09/05 09:50
>>580
試したら、うまくいったんですが、
住所入力支援してるせいか、xxx-xxxx郵便番号の
ハイフンが宛名ラベルウィザードでプレビューしたときに
消えてしまい、xxxxxxxと数字が繋がってしまいます。
どこかいぢるところがあるのでしょうか?
>588
デザインビューで開いてグラフを右クリ、Worksheetオブジェクト→編集。
ピボットテーブルのシートにして、移動したい項目をクリック。
おまじないで、右クリのデータ更新後、アクティブなセル枠をつまんで、移動したいところへ。
グラフシートに戻して、ピボットフォームを終了。
591初心者:02/09/05 11:10
私も宛名ラベルで質問があるんですけど、
パラメータクエリで抽出した一枚だけのラベルを
任意の場所に印刷することってできますか?
必ず左上に出てくるんです・・・。
お願いします。
>>591
そういうモジュールをウェブで見かけたことがある。
宛名ラベル 途中
宛名ラベル 任意
とかで検索したらいくつかでてきたよ。
593初心者:02/09/05 13:21
>>592
ありがとうございます・・・。
でてきたんですが、こんなメッセージが出て、そのウェブを見れませんでした。
あと他の所も見られなかったです・・・。(´・ω・`)

>指定いただいたページは、URL(アドレス)が変更または削除されたか、もしくは使われて
>いないURLである可能性がございます。
>今一度、URLをご確認いただき、再入力してください。
595579:02/09/05 16:14
>574
>この値にオブジェクトを代入することはできません。
ん〜と、テキストボックス「合計金額」のコントロールソースは
「合計金額」になってる?

>589
郵便番号の定型入力を設定しる。
596574:02/09/05 17:47
579>
合計金額のコントロールソースの変更で
無事解決いたしました。
できるシリーズ片手にやってる物で・・(恥)
何度も親切にありがとうございました。
597(´Å`):02/09/05 18:58
>579
ありがと。明日やってみます。
598名無しさん@そうだ選挙にいこう:02/09/06 02:22
テーブルのデータを、数の大きい順という条件で抽出しクエリに出す時、
このデータが大きい物から順番に並べて
1 14000
2 2000
3 1980
みたいにクエリに大きい物から1から連番で出したいのですが教えてください。
もちろん将来12000と言うデータが入れば(2 12000、3 2000)みたいになります
ちなみにテーブルのIDはかなり順不同です
1 14000
2 2000
2 2000
4 1980

とするか、

1 14000
2 2000
3 2000
4 1980

とするか、で、対処が変わってくるのだが
600名無しさん@そうだ選挙にいこう:02/09/06 14:27
今、ユーザアカウントの追加と管理をDBで行おうとしてるんですが、
テーブルにレコードを追加するときにフォームから1件1件手入力で
入力しています。

エクセルのデータでアカウント情報があるんですが、これを50件くらい
一気に追加する方法ってありますか?

エクセルもアクセスもフィールドは同じです。
エクセルのインポートしても、テーブルが2つになってしまうし、
コピペしようとしたら、テキストが長すぎます(?)などのエラーで
出来ませんでした。
>>600
一生Excel使ってれば?
602名無しさん@そうだ選挙にいこう:02/09/06 16:00
>>600
テーブルリンクでExcelのワークシートをデータベースに取り込んで
Access側で追加クエリーを作ればいいだけの事じゃ?
本を買って勉強しる
603(´・ω・`):02/09/06 16:03
楽一の質問もここで可能ですね?
604名無しさん@そうだ選挙にいこう:02/09/06 16:08
>>603
楽一て何ですか?
605579:02/09/06 16:57
>603
カシオの?スレ違い。
606名無しさん@そうだ選挙にいこう:02/09/06 17:56
>>599
上の
1 14000
2 2000
2 2000
4 1980
でお願いします
607名無しさん@そうだ選挙にいこう:02/09/06 20:34
>>606
クエリ"だけ"ではそう都合よくできないと思われ
っていうか自分で少しは考えてみたのかよ?
608588:02/09/06 21:04
>>590
お教えありがとう。
しかし、ピボットグラフビューのデザインビューって言うのは
どうやって出すのですか?もしかしてフォームに付けるグラフの
事ですか?
試しにピボットテーブルビューで並び替えてからピボットグラフビュー
を表示させても、反映されませんでした、、。
609609:02/09/07 03:31

        フィールド1    フィールド2
レコード1     6:00   レコード2-レコード1の差  
レコード2     7:10   レコード3-レコード2の差  
レコード3     7:15   レコード4-レコード3の差
レコード4     8:30   レコード5-レコード4の差
レコード5     9:20   レコード6-レコード5の差
レコード6    11:20  レコード7-レコード6の差
  ・
(以下続く)

クエリーでテーブルのフィールド1の差をフィールド2に出したいのですが
レコード間での計算をどうやってやれば良いのか分かりません

私の猿並の脳味噌では画面眺めながら時間が経つばかりで
一向に問題が解決しそうにありません・・・(>д<;)
すみません、良かったら教えて貰えないでしょうか?
610名無しさん@そうだ選挙にいこう:02/09/07 08:08
>>609
クエリーだけでは無理!
>608
元質問にバージョンがなかったのでAc2kで試したけど、どうやらバージョンが違うようですね。

>しかし、ピボットグラフビューのデザインビューって言うのは
588さんの言われる「ピボットグラフビュー」ってAccessのフォームになってないんですか?

Ac2kでは、フォームのピボットテーブルウィザードからピボットテーブル→グラフ化する→
そのオブジェクトそのものがフォームに埋め込まれる。という流れになってます。
だから、ピボットテーブルの項目の並びを手動で変更すると自動的にグラフも変更されるんですが・・・。

もしAccessXPだったら、持ってないので解りません。
>609
そういうのは表計算ソフトでやれ
>598-606 >609 DAOかADOを使えばできそうだね。まず598-606から
テーブル名 五九八
数字  順位
14000 0
1980  0 以下略
と、まあこんなテーブルがあると。適当なフォームに適当なボタン
作ってクリック時のイベントプロシージャに
Private Sub 適当なボタン_Click()
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim CountNo As Integer
Dim Juni As Integer
Dim Suuji As Long
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("SELECT 五九八.数字, 五九八.順位 FROM 五九八 ORDER BY 五九八.数字 DESC;")
CountNo = 1
Juni = 1
rst.MoveFirst
Do
rst.Edit
If Suuji > rst![数字] Then
Juni = CountNo
End If
rst![順位] = Juni
Suuji = rst![数字]
rst.Update
rst.MoveNext
CountNo = CountNo + 1
Loop Until rst.EOF
End Sub
614613:02/09/07 12:20
609は

Private Sub コマンド1_Click()
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim NextTime As String
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("SELECT 六〇九.フィールド1, 六〇九.フィールド2 FROM 六〇九 ORDER BY 六〇九.フィールド1 DESC;")
rst.MoveFirst
rst.Edit
rst![フィールド2] = 0
NextTime = rst![フィールド1]
rst.Update
rst.MoveNext
Do
rst.Edit
rst![フィールド2] = DateDiff("n", rst![フィールド1], Format(NextTime, "hh:mm"))
NextTime = rst![フィールド1]
rst.Update
rst.MoveNext
Loop Until rst.EOF
End Sub

こんな感じかな?
615名無しさん@そうだ選挙にいこう:02/09/07 13:27
Accessで、3桁ごとにカンマを入れたいのですが、
それは、#,##0だけでできますか?
こうすると、1000は、1,000になりますが、
1000000は、1,000,000となりますか?
>>615
そんなのは自分で試せば2秒で分かることだ
お前は自分では何もせず他人に作業を投げることを当然だと思っているのか?死ね
617名無しさん@そうだ選挙にいこう:02/09/07 18:44
項目があ、い、うとあるテーブルを項目別にグループ化して値段の合計を出したいのですが
あ、い、うは種類がA、B、Cとあるのですが、CだけをのぞいてA,Bだけで
グループ化してA,Bだけの合計を出したいのですが、うまい事いきません。
教えてください。よろしくお願いします
? 普通に 

あ in ('A', 'B')

でいいと思うが
>617
なにが言いたいの?元のテーブルと結果のクエリをちょっと表にしてみ。
せめてあいうABCがもとのままならそこから何が言いたいか推測する事も
可能だったかもしれんが。ど〜せ売上とか価格とか商品名とか社員名でしょ?
名前なんか佐藤田中鈴木で商品名もりんごみかんバナナとか書けばいいっしょ?
620名無しさん@そうだ選挙にいこう:02/09/07 21:04
フォームで使用可能の中のデータを「はい」から「いいえ」にすると
文字の色が黒から灰色になってコントロールが利かなくなりますが
あれを灰色にせず、黒のままで表示させる事って可能ですか?

プロパティを見ても背景や線の色はあっても文字そのものの色はありません
621名無しさん@そうだ選挙にいこう:02/09/07 21:32
>>620
ついでに編集ロックを「いいえ」から「はい」でどう?
622名無しさん@そうだ選挙にいこう:02/09/07 21:42
>>621
出来ました。盲点でした
ありがとうございます
623609:02/09/08 03:06
>>613さん、ありがとうございました
出来ました!!本当に感謝です!!

レコード間で計算させるにはフォームを使えば
良かったんですね。目からウロコでした

これでやっと先に進めるような気がしてきました
明日、さっそく会社に行って試してみます

本当にありがとう

624たそがれジイ:02/09/08 04:30
クリップボードから指定ファイルに保存したいのですが、旨くいきません。
アクテブウィンドー(Form)を画像として取り込みは出来たのですが。
VBA(一部API)での自動化したいのですが。
625613:02/09/08 12:10
>609-623
>レコード間で計算させるにはフォームを使えば良かったんですね。
んとね、613の場合はフォームで開いてるというのとはちょっと違うんだよね。
DAO(Data Access Objects)っていうのを使ってテーブル五九八を数字が大きい順に
並べたものを開いて順位を書き込んでるの。
同じようなことをフォームを使っても出来るよ。
Set rst =〜 のかわりに同じクエリをレコードソースにしたフォームを開いて、
rst.MoveNext じゃなく、DoCmd.GoToRecord acDataForm ,"フォーム名" ,acNextとか
rst![順位] とかは Forms![フォーム名]![順位] みたいにすると。流れは同じだし。
でね、DAOを使ったほうが1.フォーム開いたりしないからスマートで2.たぶん速い。
3.でもフォーム使ってやるほうは目に見えるから分かり易いかな?
626613:02/09/08 12:11
613のコメント付き。
Private Sub 適当なボタン_Click()
Dim dbs As DAO.Database '変数dbsを宣言。型はDAOのデータベース。
Dim rst As DAO.Recordset '変数rstを宣言。型はDAOのレコードセット。テーブルとかクエリを指定できる。
Dim CountNo As Integer '変数CountNoを宣言。整数型。Loopするのが何回目かをおぼえさせる。
Dim Juni As Integer '変数Juniを宣言。整数型。順位をおぼえるとこ。
Dim Suuji As Long '変数Suujiを宣言。長整数型。数字(金額かな?)をおぼえる。
Set dbs = CurrentDb '変数dbsはカレントデータベース、つまり今開いてるデータベースですよってこと。
Set rst = dbs.OpenRecordset("SELECT 五九八.数字, 五九八.順位 FROM 五九八 ORDER BY 五九八.数字 DESC;")
'変数rstにSQLを指定している。SQLってのはクエリの構造とかを文字列で表わしたもの。適当なクエリを開いて
'表示-SQLビューにすると同じような文字列が出てくるよ。ここではdbs(今開いてるデータベース)のテーブル五九八
'から数字と順位を選んで数字を降順で並び替えたクエリを指定している。
CountNo = 1 'CountNoは1から始める。
Juni = 1 'Juniも1から。
rst.MoveFirst 'たぶん一番最初のレコードにカーソルが合ってるけど念のため最初のレコードに移動してね、と。
Do '下のLoopとセットになってる。
rst.Edit 'rstをこのあと編集しますよ。
If Suuji > rst![数字] Then '下のEnd Ifとセット。もしも前回のSuujiが今回の数字より大きかったら
Juni = CountNo 'JuniをCountNoにする。
End If
rst![順位] = Juni '順位にJuniを入れる。
Suuji = rst![数字] '今回の数字をSuujiに入れる。次のLoopでIf〜で比較するため。
rst.Update 'rstを更新する。rst![順位] = Juniを書き込むため。rst.Editを必要とする。
rst.MoveNext '次のレコードに移動。
CountNo = CountNo + 1 'CountNoを1増やす。
Loop Until rst.EOF 'rstがEOF(新しいレコードのとこ)ではなかったら(Until)Doまで戻る。
End Sub
>>609

SELECT A.フィールド1, B.フィールド1-A.フィールド1 AS 差
FROM テーブル AS A, テーブル AS B
WHERE (((A.フィールド1)=(select max(フィールド1) from テーブル WHERE テーブル.フィールド1 < B.フィールド1)));

628627:02/09/08 13:15
とか。
もっとスマートな方法もあるかもしれないけど、ひとまず。
629588:02/09/09 01:06
>>611
すいませんバージョンを言うのを忘れてました。
確かにXPです。フォームと関係なくピボットテーブル
やピボットグラフが製作できるのです。しかしそれでも
テーブルでやった事はグラフにも反映してくれても良い物を。
うーん。
630名無しさん@そうだ選挙にいこう:02/09/09 02:22
SELECT 社員 FROM 社員テーブル1
UNION
SELECT 社員 FROM 社員テーブル2

で結合した2つのテーブルでその中の社員をまとめてグループ化したいのですが
単に一番下に(GROUP BY 社員)を挿入しても、UNIONの下の社員テーブル2だけの社員がグループ化されて、うまい事行きません
これを社員テーブル1と社員テーブル2の社員を全てグループ化するにはどうしたらよいのでしょうか?

すいません、簡単だと思いますが教えてください
>>630
ヒント1:
 "サブクエリ"をキーワードにヘルプやWebを検索する
ヒント2:
 ユニオンクエリをソースとするSelect文を記述する
ちなみにお題目に沿ったSQL文はキチンと書けるし結果も得られる。
SQLの基本構文を理解していれば、あとは応用だ。もう少し頑張れ

> すいません、簡単だと思いますが教えてください
こういう言葉は書かないほうがいい
"(SQLの書き方が)わからない奴がどうして簡単だと思えるのよ?"
って悪感情をいだかせるよ(簡単だと思うなら自分で考えろとか)
632名無しさん@そうだ選挙にいこう:02/09/09 04:45
>>631
恐らくサブクエリについて聞きたいのだと思うけど、>>630に書かれたSQL文だけで
サブクエリを使うまでもなく、社員テーブル1と社員テーブル2の全ての社員がグループ化された
結果になりませんか?

回答文書作ってましたが、あえて書きませんが・・・
633609:02/09/09 06:03
613さん、詳しい解説ありがとうございます

おかげで少し、モジュールに関して勉強してみようかと
思いはじめました。私のような初心者にはコードビルダーっては
なんだか敷居が高く居て入りにくかったんですが、
613さんの解説で少し取り組む気になりました

手始めに安上がりですが、モジュールに関するヘルプを全部読んで
見ます

追伸)今日、会社のファイルに613さんのコード入れてみたら
   上手く動きました
634名無しさん@そうだ選挙にいこう:02/09/09 10:45
MSDEをインストールしたんですけど、動きません。
XPホームエディションでは駄目なんでしょうか?
ポート番号はデフォルトのままでよいのでしょうか?
また、MSDEをインストールする前からアップサイジングウイザードを動かすと
「以前のデータベースのテンポラリーファイルが...削除して再実行しますか?」
なんていうメッセージが出てきまして、再実行しても進展しません。
どなたか教えてください!
635名無しさん@そうだ選挙にいこう:02/09/09 11:57
>>632
正確には
SELECT 社員,社員のカウント FROM 社員クエリ1
UNION
SELECT 社員,社員のカウント FROM 社員クエリ2
です
これではどうしても、グループ化されません
お願いします
636名無しさん@そうだ選挙にいこう:02/09/09 12:22
アクセス2000のレポートで納品書を出したいんですが、お客さんへ渡す用と
会社で控えにするもの、2枚出したいです。
ひとつのレポートを印刷すると2枚の納品書(渡す用と控え用)を出すには
どうすればいいでしょうか?控えはタイトルが「納品書(控)」になるだけで
あとは同じです。アドバイスお願い致します。
637名無しさん@そうだ選挙にいこう:02/09/09 12:28
>>636
VBA書け
>>632
その点は実際にやってみれば、すぐに気づくでしょ。
それでも他人に質問するのは、手の内で明かしていない"何か"があるんだと
思うですよ。("初めにそれを書いとけよ"みたいな)
そういう不明瞭な質問には、こちらで用意した答えがハズレてしまう場合も
あるんで、答えそのものを書くより、その答えにたどり着くためのヒントを
提供して、自分の頭で考えてもらうほうが良いと思うですよ。

# 保身のためでもあるんですけどね

まぁ、不明瞭な問いかけには触れないほうが良いと最近は思うのです
>>635=630
貴方はgroup by句を含むSQLをどのように書いたのよ?
そのSQLをここに載せてみてよ
640名無しさん@そうだ選挙にいこう:02/09/09 13:05
つーか、ACCESSとMSDEのバージョンも書け。
PCは個人のものなのか、会社のものなのかも。
会社のものの場合はNTドメイン参加の有無も。

---以下MSのサイトから---
SQL Server 2000 Personal Edition 1 および Desktop Engine
Enterprise および Standard Edition に関する上記オペレーティング システム
Microsoft Windows XP Professional
Microsoft Windows XP Home Editon
Windows 2000 Professional
Windows NT Workstation 4.0 ( SP5 ) 以降で動作する
Microsoft Windows Millennium Edition (Windows Me)
Microsoft Windows 98
641640:02/09/09 13:06
あう、>640は>634へのレスっす。
>>641
どんまい

便乗なんだけど>>634の人には
> MSDEをインストールしたんですけど、動きません。
というのが、どの様な状況なのかも書いて欲しいですよね
・サービスとして(バックグランドで)動いていないのか
・もしかしてログオンができてないだけじゃないのか
とか判断つかないし・・・
643名無しさん@そうだ選挙にいこう:02/09/09 14:08
>>630
つまり、
SELECT 社員,COUNT(社員) AS 社員のカウント FROM
(
SELECT 社員 FROM 社員テーブル1
UNION ALL
SELECT 社員 FROM 社員テーブル2
)
GROUP BY 社員
ってことがしたいの?
644636:02/09/09 14:26
>>637 どのようなVBA関数になるでしょうか?
50件前後の得意様に納品書をボタンひとつで出したいんですが
得意様A(渡し用)、得意様A(控え用)、得意様B(渡し用)、得意様B(控え用)、
という感じで出力するにはどんな関数を使えばいいのかわからないんです。
今は渡し用だけが問題無く出る状態で、得意様をグループ分けしてます。
レポートウィザードで作りました。もしかして相当面倒なVBAを組まなければ
ならないのでしょうか?
645611:02/09/09 14:37
>629
ちょっとデータベースの認識を誤解されてるようなので一言だけ。
データベースのテーブルはデータの並び順という情報を持ちません。
ですから、データを渡す時は、クエリやSQLで明示的に並び並び順を指定したり、
レポートやAc2kの例で出したように、相手方に並び替えプロパティや並び順の情報があります。

ここのところは、AcXPでも変わりないはずです。

646名無しさん@そうだ選挙にいこう:02/09/09 14:39
>>630
ついでに
UNIONとUNION ALLの違いについてちゃんと理解してね

>SELECT 社員,社員のカウント FROM 社員クエリ1
>UNION
>SELECT 社員,社員のカウント FROM 社員クエリ2

では正しく集計されないかもよ
>644

渡し用 得意様A、得意様B、得意様C、・・・ 
を印刷してから、
控え用 得意様A、得意様B、得意様C、・・・ 

ならマクロでもVBAでも1分あれば出来るが、

得意様A(渡し用)、得意様A(控え用)、得意様B(渡し用)、得意様B(控え用)、

はあなたにはまだ無理だと思う
>644
まずはレポートウィザードで作っただけから卒業汁。
そのくらいなら(多分)サブレポート使うだけでやれると思うぞ。
詳しくわからんからしらんけど。
649636:02/09/09 23:29
>>647 鋭い指摘です。。
>>648 ありがとうございます。サブレポートを利用してチャレンジしてみます。
650名無しさん@そうだ選挙にいこう:02/09/10 11:40
access2000で、入力用のフォームを作っています。

コンボボックスを使ってテーブルから抽出したコードをプルダウンで
選択して入力できるようにしたいのですが、プルダウンで選択した
瞬間に他のレコードもひけなくなり、入力もできません。

これってあたりまえですか?
わかり辛くてすみません。
なにかヒントでもありましたらお願いします。
651名無しさん@そうだ選挙にいこう:02/09/10 12:00
Access自体はたまに利用してますが、レポートを作るのが初めてなので
既存の物をカスタマイズして練習しようと思い、他人が作ったMDBファイルから
自分のMDBにレポートをインポートして、線を残して全て削除、改めて自分で
レコードソースの設定からコントロールの設置などを行いました。

で、おもむろにプレビューを表示しようとすると、「パラメータの入力」という
ウインドウが開き、「問い合わせコード」の入力を促すダイアログボックスが
開きます。これは自分のレコードソースにしているテーブルのではなく、
インポート元のテーブルのもので、このようなダイアログは出したくないのですが、
どこを探しても、これが設定されている所が見つけられません。

「ここに設定されているんじゃないか?」みたいなのを教えていただけませんか。
おながいします。
652名無しさん@そうだ選挙にいこう:02/09/10 12:06
>>651
ソースの記述を間違ってるだけじゃないのか?
>>651
線以外をきちんと消してるなら、
レコードソースのクエリにパラメータがいるとか、
実はOpenの時に何かコードを組んであるとか
654名無しさん@そうだ選挙にいこう:02/09/10 12:41
>>652
あってると思うのですが・・・?うーん。
ええと、
レポートをデザインビューで開き、「レポート」というセクションのプロパティの、
「レコードソース」ですよね。そこはコンボボックスから選択したので、
自分のMDBのテーブルです。


>>650
抽出したデータをどのようにしてコンボボックスに接続したかなど
もう少し詳しく書かれた方が。
>651
レポートのモジュールに何か残ってると思うよ。
656初心者です:02/09/10 12:46
質問です。
宛名ラベルを作るために住所の入力をしています。

<〒>  <都道府県> <市区>   <町名>  <地番>  <ビル名>
123-00**  東京都   ○○市   ××町  1-1-1  ▲▲ビル2F
↑の様に、細かく区切られているフィールドを

<〒>  <住所>             <ビル名>
123-**  東京都○○市××町1-1-1   ▲▲ビル2F
↑の様にくっつけることはできるのでしょうか?(今まで入力したデータを残したままで)

郵便局の人に指定されたフィールドと形が違っていたので
カスタマバーコードをつけることができませんでした。
可能でしたら方法も教えて下さい。よろしくお願いします。
657名無しさん@そうだ選挙にいこう:02/09/10 12:58
すみません、>>654は自分です。

>>653
レコードソースはクエリではなく、素のテーブルにしているのです。
あと、コードもうたがったのですが、イベントはどのセクションにも無いようです・・・。

>>655
今、コード、マクロ共見直してみましたが、ありませんでした。


一から作り直した方が早いかもですが・・・。なんなのだろうか・・・。
658名無しさん@そうだ選挙にいこう:02/09/10 13:03
>>657
コントロールはどう?
659650:02/09/10 13:17
>>654
ありがとうございます。
フォームでは、コンボボックスで抽出してから選択できない。。
と、思い込んでいました。
表現方法がよくわからないのですが、以下に記述します

テーブル
T_社員
(番号、人名、誕生日、備考)

クエリ
Q_番号抽出

フォーム
F_入力
コンボボックスのプロパティ
名前…番号
集合ソース…T_社員の番号
更新後処理…
Private Sub 番号_AfterUpdate()

Me.RecordSource = "Q_番号抽出"

End Sub

です。
状況は>>650です。

他にどんな情報があれば分かりやすくなるのかもお願いします。
稚拙な文章ですみません。

660名無しさん@そうだ選挙にいこう:02/09/10 13:38
>>651
「並べ替え/グループ化の設定」ってのは見てみた?
661名無しさん@そうだ選挙にいこう:02/09/10 13:43
>>656
テーブルに新しいフィールドを追加してそこに変換後のデータを入れたいの?
それともテーブルはそのままでレポートに出力する時だけその形になればいいの?
〒は全て123-00**になってるの?

一応、文字列の変換方法を書いておくと、
〒は、
Left([〒],4) & Mid([〒],7,2)

住所は、
[都道府県] & [市区] & [町名] & [地番]

ビル名は、そのまま
662651:02/09/10 14:17
>>660
備後ッ!
その中に「問い合わせコード」「昇順」ってのがありました。
それ消して、正常に動きました。サンクスです!
>>658氏もサンクスです。
>650-659
Q_番号抽出のSQLとこのクエリを開いたとき追加・編集が出来るか、
F_入力の元のレコードソースとそのSQL、F_入力は何の入力か(売上などか、社員の追加か)
T_社員以外の関係してくるテーブル、以上を出してみてね。
>>663
T_社員に入力しようとしてるような予感
665656です:02/09/10 16:00
>661
レスどうもありがとうございます。
やりたいのは
テーブルに新しいフィールドを追加して、変換後のデータを入れる方法です。
〒は123-00**以外も混ざっています。

フィールドをくっつけることばかり考えていて
新しいフィールドにデータを移すという発想までいきませんでした。
文字列の変換方法すらよく分かっていないので調べ直してきます
お手数お掛けしましてすいませんでした!
666650:02/09/10 16:32
>>663
>Q_番号抽出のSQLとこのクエリを開いたとき追加・編集が出来るか、
できます。
でも、フォームで選択した番号の下へ追加になってます。

>F_入力の元のレコードソースとそのSQL、F_入力は何の入力か(売上などか、社員の追加か)
レコードソースはT_社員です。
すみません、、どのクエリのSQLを表示すれば良いのか分かりません。。
F_入力は、備考の入力です。
ですので、社員番号をプルダウンして選択して入力したいです。

>T_社員以外の関係してくるテーブル、以上を出してみてね。
T_社員以外のテーブルはありません。
>>659で「T_社員の番号」→「T_社員」です。

>>664
……え??
だめなんでしょうか?
なにかクエリをかましてテーブルに追加しないといけないのですか?

だんだん恥ずかしくなってきました。
667663:02/09/10 16:56
>650-659-666
Q_番号抽出のSQLは?
Q_番号抽出を開いて、表示-SQLビューにするとテキストエディタみたいになって
文字列がでるからそれをコピペしてみてね。
668650:02/09/10 17:17
>>663

SELECT T_社員.番号, T_社員.人名, T_社員.誕生日, T_社員.備考
FROM T_社員
WHERE (((T_社員.番号)=[forms]![F_入力]![番号]));

です。
669663:02/09/10 18:08
>650-668
原因わかったよ。まずフォームにコンボボックスをもう一個作って、コントロールソースは
非連結に、名前を番号選択にする。値集合ソースはT_社員の番号でいいのかな?
で、Q_番号抽出を
SELECT T_社員.番〜中略〜WHERE T_社員.番号=[forms]![F_入力]![番号選択];
に、番号選択の更新後処理を
Private Sub 番号選択_AfterUpdate()
Me.RecordSource = "Q_番号抽出"
End Sub
とする。それから実験してたらT_社員のテーブルに番号だけのレコードが増えたよ。
番号を主キーにするとか、インデックスを「はい(重複無し)」にしといた方がいいかな?
670教えてクン52号:02/09/10 22:43
後方一致でダブリチェックをしたいのですが、可能でしょうか。
具体的には下記のような感じです。

テーブルAには

[email protected]
[email protected]
[email protected]
[email protected]

テーブルBには
abc.com
efg.net

で、テーブルAのメールアドレスの中から、テーブルBにあるドメインの
メールアドレスを削除、もしくは何件あるのかを知りたいのです。
上記の例で言うと、該当する件数は3という感じで。

以上、宜しくお願いします。
671名無しさん@そうだ選挙にいこう:02/09/10 22:46
明細を含む伝票を印刷したいのですが、規定の書式で用いることになっている
縦倍角文字がレポートでは使えません。
そこでwordへの差し込み印刷を試みましたが、今度は明細テーブルを差し込めません。
いろいろ考えたあげく、明細テーブルをひとまとめにメモ形式に変換してから
wordに差し込むことにしました。…が方法がわかりません。
どうすれば可能でしょうか?
また、もっとスマートな方法はあるでしょうか?
672名無しさん@そうだ選挙にいこう:02/09/10 23:11

ActiveXの中にあるCalendar Controlをフォームに貼っつけて
日付を選択させるフォームを作ったんですけど
そのフォームは月1ぐらいの頻度なので
毎回、使用する時の年月が自動的に表示されるようにはできませんか?

設計した時に貼り付けた年月のカレンダーが表示されるので
いちいち年月を選択しなおしてるんです。。。
>670

テーブルAのメールアドレスの列名が[A1]だとすると、

Right([A1], Len([A1]) - InStr(1, [A1], "@"))

でドメイン名が取得できる あとは自分で
>672
コントロールにvalue プロパティとか、year・month・dayプロパティとかがあるはずなので、
VBAでフォーム開いたときにDate()関数で現在時間取得してプロパティに設定すれ

Form_Load()
calendar1.value = format$(Date(), "yyyy/mm/dd")
End Sub
675名無しさん@そうだ選挙にいこう:02/09/11 07:59
実は仕事でAccessで収納のシステムを作成してまして、
金融機関への全銀フォーマットで口座振替依頼FDを作成しなければならないので、
データをそれぞれ作成してマクロの固定長テキストでエクスポートをしたのですが、
各データの最後に改行が入ってしまいます。
業者に頼んで作成してもらったシステムで同様のFDを作成して、
メモ帳等で中身を見ますと、改行されておらずみな続けてデータが書かれています。
Accessで固定長でテキストデータを作成する際に、改行されないようにする方法はありませんでしょうか。
それともそもそも全銀フォーマット(その他固定長テキストでデータをやり取りする場合)では
改行があってもなくても関係ないのでしょうか。
ご存知の方、是非ご教授お願いします。

[作成するデータないよう(大雑把)]
ヘッダレコード ×120字
データレコード ×120字 (×依頼件数分)
トレーラレコード ×120字
エンドレコード ×120字

[業者が作ったシステムで作成したFD]
[ヘッダレコード][データレコード](×依頼件数分)…[トレーラレコード][エンドレコード]

[Accessで固定長テキストエクスポートした場合]
[ヘッダレコード]
[データレコード]
  … (×依頼件数分)
[トレーラレコード]
[エンドレコード]
676(´・ω・`):02/09/11 08:34
ここは明らかに、先生より生徒の方が多いでちゅね。
>>675
改行抜きで書き出す引数は無いと思います。

全銀協フォーマットの仕様は金融機関に問い合わせれば
教えてくれるはずですが。
>675
僕の作ったのは改行ありでそれ送ってもちゃんと処理されてるみたい。
作るときにもらったサンプルも改行してたしね。
でも、677さんの書かれたように取引先の金融機関に確認した方がいいかも。
バイナリエディタでみると業者に作ってもらったデータにひょっこりCR+LFじゃない
改行コード入ってたりして。あ、僕が送ってるのの改行コードはCR+LF。

>676
生徒より先生が多いスレって1つの質問に回答がケコーンしまくりなのかな?
それはそれでなんかいやだね。
679675:02/09/11 13:08
>>677さん、>>678さん、ご回答ありがとうございました。
検索サイトで「全銀フォーマット」で検索をかけた際に、
Accessや桐でデータ作って、データ固定長で出力すればOK! みたいな事を書いていたので、
やってみたところ、メモ帳で開いたものが違ったものですから…

金融機関に問い合わせ、というのはもっともなお話です。早速問い合わせてみますね。

ご回答ありがとうございました。
680675:02/09/11 13:23
問い合わせてみましたところ、
>>678さんのおっしゃるように、120字ごとに改行を入れても入れなくても構わない、とのことでした。
ただし、改行を入れる場合は(入れない場合も?)1行が必ず120字でなければならず、
エンドレコード(ここは最初に「9」一文字だけ入る)も残り119文字スペースを入れなければならない、とのことでした。
(固定長だからあたりまえ、といえばあたりまえですね)

重ね重ね、>>677さん>>678さんご回答戴きましてありがとうございました。
>>670
テーブルAのフィールド名をメアド
テーブルBのフィールド名をドメイン
として

SELECT Count(*) AS 結果
FROM テーブルA, テーブルB
WHERE (((テーブルA.メアド) Like ("*" & [テーブルB]![ドメイン])));

で数は出るよ
682681:02/09/11 15:18
あー、後補足

クエリ1を↓として、

SELECT テーブルA.メアド
FROM テーブルA, テーブルB
WHERE (((テーブルA.メアド) Like ("*" & [テーブルB]![ドメイン])));

クエリ2を

DELETE テーブルA.*
FROM テーブルA INNER JOIN クエリ1 ON テーブルA.メアド = テーブルA.メアド;

としてやれば削除も出来る
683678:02/09/11 15:34
>675-680
あ、どっちでもいいんだ。勉強になったよ。
こういう風に結果をちゃんとレスしてくれるとうれしいし勉強にもなるね。
684650:02/09/11 15:44
>>669
なるほど、非連結にしてコンボボックスを作ったら
プルダウンで選択して、入力できるようになりました。

頼れる人や場所がなかったのでほんと参考になりました。
本当にありがとうございます。

…ただ、入力したときにその選択した番号も一緒に
レコードに記述されるのを狙っていたのですが、それは
ちょっと出来ないみたいです。

テーブルに記述できる入力用フォームってフォームで作るのは
ナンセンスなんですかね、、
その記述するときのレコードをプルダウンで選択して記入したいのですが
そういったことって可能ですか?
顧客名(A社〜D社)と受注日(4月〜6月)と納品日(4月〜6月)と金額が入ってるテーブル作れたんだけど
5月の顧客別請求書作りたいんだけどさっぱりわからん?
一応テーブルにはYES/NOで入金済みとか請求書送付済みとかがチェック入ってる(4月まではチェック済み)
請求書未送付の顧客 や 入金未済みの 顧客だけをピックアップずるのならフィルタってのかければできたのだが
顧客別に出さないと請求書としてなりたちませんよね でこまっています
どうか教えてください このとおりです ぺこり
686名無しさん@そうだ選挙にいこう:02/09/11 17:09
>>685
クエリーを勉強汁
687???:02/09/11 18:21
質問です。
Office2000アクセスで文字が重なるエラーが出ました。
このファイルは共有ファイルです。
この現象は、自分だけです。
Officeは再インストールしましたが直りませんでした。
この現象の修正情報がありましたら教えて頂けないでしょうか?
688678:02/09/11 18:30
>650-684
ん?ちょっと何をやりたいのかわかんなくなってきたよ?
今までのレスだと「過去に入力した社員のデータを読み出して編集」したいんだと
思ってそういう用途向けのレスを返したんだけどな。

1.「過去に入力した社員のデータを読み出してそれの備考等を編集」
2.「新規社員データの入力。その際、他の社員のデータを読み込んで入力する項目を少なくて
  すむようにしたい」
3.「社員が売り上げた伝票の入力。プルダウンで社員を選択、日付・商品・金額等を入力する」

1.の場合は、社員番号はもう最初の時に入力されている(されていないと社員番号で
呼び出すことが出来ないよね)はずだから、入力する必要はないはず。
2.の場合は想定していないのでその場合はまた違うやり方になるね。この場合に
しても社員番号は打ち変えないと新入社員が入るたびに先輩のデータが一つ消えるよ。
3.の場合は、入力済みの社員データを呼び出すっていうとこういう用途が多いから663で
>F_入力の元のレコードソースとそのSQL、F_入力は何の入力か とか聞いたんだ。
って666で >T_社員以外のテーブルはありません。 って書いてるからこれはないとは
思うんだけどね。

どれか当てはまるかな?4.その他 ならどんな用途でF_入力を使うのか書いてみて。

>685
まあ、684さんの言うとおりなんだけどさ。クエリを使うと抽出条件ってのが指定できる。
ここに日付が「>=Cdate("2002/5/1") And <=Cdate("2002/5/31")」で顧客名が「"ホゲホゲ興業"」
とか入金済みが「True」とか「False」とか指定できるよ。でまあ応用編は過去ログとかHelpとか
グーグルで検索するとか本屋さんいくとか色々あるね。ちょっとはがんばってみた?

>687
よくわからんことなってるねえ。Accessだけ?エラーってエラーメッセージをなんか出した?
それとも表示だけの問題?まあ、原因探すよりもOSから再インストールした方が早いと思うよ。
689678:02/09/11 18:33
誤:まあ、684さんの言うとおりなんだけどさ。
正:まあ、686さんの言うとおりなんだけどさ。

あと名前663ってもどすの忘れてた。
690名無しさん@そうだ選挙にいこう:02/09/11 19:01
>>685
明細型請求書ってことだったら、レポートデザインで、

 表示−並び替え/グループ化の設定

もいじってみた方がいいぞ。
>>687
そういう不具合はMicrosoftのサポートに相談したほうがいいんじゃない?
貴方の文面読むかぎり「どんな症状よ?」ってさっぱりなんですけど・・・
692???:02/09/11 19:18
>>691さん
アクセスファイルを開いて閲覧すると一部の行の文字が重なって読めなくなる現象です。
>>692 それってディスプレイドライバの不具合じゃ?
694名無しさん@そうだ選挙にいこう:02/09/11 23:19
>>692
Access2000のスナップショットで文字重複が発生する不具合については
MicrosoftのWebサイトに上がっているけど、それ以外は知らないなぁ
695???:02/09/12 09:27
>693さん ディスプレイドライバの不具合だけですと全部のファイルになりそうに思えるのでなんとも分からないですが試してみる価値がありそうです。

>694さん スナップショットで文字重複が発生する不具合についてはWebサイトで見つけましたけど修正方法がないですよね!(officeのバージョンあげる金ないですし・・・。)
>>695
>ディスプレイドライバの不具合だけですと全部のファイルになりそうに思えるので
VGAアダプタ・ドライバによっては特定アプリケーションで、誤動作を起こす場合があります。
  例)KyroというVGAではかちゅ〜しゃの右上のアニメーションが表示されない
ですので、ご自身も書かれているとおり試してみる価値はあります。
また別のVGAカードをお持ちでしたら、そちらで試してみるというのも手でしょう。
697???:02/09/12 13:57
>>696さんありがとうございました。
 今現在、試してみる時間がないので後で試させて頂きます。
698650:02/09/12 14:14
>>678
涙、涙です。

ここまで丁寧にご教授していただけるとは思っていませんでした。
自分の中で分かりやすくしてしまうために大事な勝手に部分を
勝手にはしょって混乱させてしまいすみません。

実は、T_社員のフィールドに番号1と番号2があり
番号1のフィールドには7桁の
1111111、2222222、3333333、4444444…
などの決まった数字が入り
番号2のフィールドにはそれぞれユニークな数字が入ります。

今回行いたいのは、
新規追加の時に、番号1はプルダウンで選択した数字
が入るようにして、その他は記入して新規追加
です。
699663:02/09/12 14:46
>650-698
ああ、社員番号っていうから社員ごとにユニークな番号が入るところだと思ってたけど
部署とか都道府県とかみたいに社員のなかで重複しているデータなのかな?
番号1のリストを別テーブルで持ってそれをコンボボックスの値集合ソースにすれば
いいと思うよ、普通に。
700 :02/09/12 15:07
応募者全員から数名にだけプレゼントを当てたいのです。
全レコードからランダムに数名抽出するにはどうしたらいいでしょう?
701名無しさん@そうだ選挙にいこう:02/09/12 17:07
>>700
モジュールウィンドウに貼り付けて
イミディエイトウインドゥで試してみて下さい。
(俺は、まだ試してません。)
Sub test()
Dim Cnt As Integer, i As Integer
Dim IntRnd(10) As Integer, Tyuusyutu As Integer

Cnt = 100 ' レコードの総数
Tyuusyutu = 10 ' 数名抽出の数
For i = 1 to Tyuusyutu
IntRnd(i) = Fix(Rnd(1) * Cnt)
Debug.Print i & "回目 " & IntRnd(i)
Next
End Sub

数のダブルが出ると思うので、回避を追加してください。
702名無しさん@そうだ選挙にいこう:02/09/12 20:54
>>700
試してないんですけど、
ランダマイズかなんかでランダムな数値を発生させて、
その数値を元に、対象の行番号かID番号を選択するってのは?
703名無しさん@そうだ選挙にいこう:02/09/12 22:35
HTMLのテーブルからインポートしたいとおもっていますが
問題が二つあってうまくいきません

一つめは、そのHTMLにはテーブルが上下に二つあります。
下のテーブルからだけインポートしたいのですが、
CAPTIONやTITLEのタグがないので
上のテーブルからしかひっぱってきてくれません…。

HTNLのソースをいじらずに下のテーブルからだけインポートってできないでしょうか?


二つめの問題は、HTMLのテーブルの一つのセルに、改行やスペースやスラッシュで区切って
はいますが複数のデータが入っています。
そのため、Accessの一つのフィールドに、
それら複数のHTMLデータがインポートされてしまいます。

任意のフィールドにうまくインポートしていく方法ってありますでしょうか?

どうかよろしくお願いします。
>703
う〜ん、たぶん同じような形式のHTMLファイルがたくさんあるんだろうね。
もしくは同じ処理を定期的に繰り返す必要があるか。
10や20ならあっさり手でやった方が早いと思うけど。
Openステートメントで1行づつ読みこんでInstrで<TABLEとか<TDとかを
探してその行の何文字目から何文字目は1セルと判定して、それをDAOで
テーブルに書きこむかやはりOpenでCSVファイルに書き出すか。

Openで取りこんだのを大体このあたりから2個目のテーブルって当たりが
ついたらそれ以降を新規にHTMLとして書き出してそれをインポートで
何とかなるかもしれないね。それだと
>テーブルの一つのセルに、改行やスペースやスラッシュで区切って
>はいますが複数のデータが入っています。
あたりでひっかかるかな。一度テンポラリのテーブルに入れてから
Instrで分割できればなんとかなるかな?
705名無しさん@そうだ選挙にいこう:02/09/13 12:08
フォームを作成したのですが、フォーム自体の左上のアイコンは
変更できないのでしょうか。
一番外のAccessのアイコンの変え方は分かるのですが…
706名無しさん@そうだ選挙にいこう:02/09/13 12:36
テーブルで
項目 年度 個数
りんご 2001 31
みかん 2001 34
なすび 2001 24 を
2001で一番個数が多かったのはみかんを表示するとき
年度をグループ化してその中で、個数をMAX関数を使えば
2001 34として表示されるのですが
さらにその上で項目のみかんも表示したいのですが、
どうしてもわかりません、教えてください
707名無しさん@そうだ選挙にいこう:02/09/13 12:52
>>706
クエリを勉強しませう。
708名無しさん@そうだ選挙にいこう:02/09/13 13:14
>>707
「2001年で一番多いのは」だから
年度をグループ化して、その中でMaxを求める
のは間違いないと思うのですが・・・
709名無しさん@そうだ選挙にいこう:02/09/13 14:01
>>708
SELECT TOP 1 項目,年度,個数 FROM (テーブル名) ORDER BY 個数 DESC
TOP述語でヘルプ見れ。
710名無しさん@そうだ選挙にいこう:02/09/13 17:33
2000になってから以下のコードがエラーになるようになりました。97の頃は
大丈夫だったのですが何か情報はありませんでしょうか。OpenRecordsetの
ロックの引数は試してみましたが駄目でした。後、トランザクションにしな
ければエラーになりません。
Function test()
Dim wsp As Workspace
Dim db As Database
Dim rs As Recordset

Set wsp = DBEngine.Workspaces(0)
wsp.BeginTrans
On Error GoTo Error
Set db = CurrentDb
Set rs = db.OpenRecordset("テーブル1", dbOpenTable)
rs.Edit
rs!a = "c"
rs.Update
rs.Close
db.Execute "UPDATE テーブル1 SET テーブル1.a = 'b'", dbFailOnError 'このexecuteでロックされているのエラー
wsp.CommitTrans
Exit Function
Error:
Debug.Print Err.Description
wsp.Rollback
Exit Function
End Function
>710
パッと見なんでアレですが、rs.Closeのあとリリースしたほうが・・・。
Set rs = Nothing
712bloom:02/09/13 18:06
713名無しさん@そうだ選挙にいこう:02/09/13 18:09
>>712
部落らか?
714710:02/09/13 18:25
>711 ありがとうございます。やってみましたが駄目でした。
97では問題ないんですがどうしたもんだかなぁ
同じworkspaceの同じユーザーなんで更新できてもいいと思うんですが。
試しに下のように二回連続のeditをして見ましたがこれはエラーになりませんでした。
rs.Edit
rs!a = "c"
rs.Update
rs.Edit
rs!a = "c"
rs.Update
715703:02/09/13 19:51
>>704
ご助言ありがとうございます
簡単な方法ではできないとうことですね…
勉強してでなおしてきます
716名無しさん@そうだ選挙にいこう:02/09/13 20:22
>>710
初心者ですが、密かに注目しております。
自分もテストしてみましたが、状況は同じです。
変ですね。
AddNewでレコードを追加した場合にはエラーにならないみたいですね。
EditでエラーならAddNewでもエラーが出てもいいような気がしますが、
良く分かりませんね。

いいレスが付くことをお祈りします。
717名無しさん@そうだ選挙にいこう:02/09/13 21:01
練習用に、そこそこ大きいデータはどこかに転がっていないでしょうか?
>>710
Access2000とAccessXP(2002)では、若干、振る舞いが違うのかな?
まずEditメソッドを使うにはデータ宣言部で明示的にDAOを指定しないと
プロシージャ編集中にエラーが発生する
・ADOにはEditメソッドは含まれていない
最低 Dim rs As DAO.Recordset と宣言しないと駄目だわ
まぁ、ADOもしくはDAOどちらを使うのか明示した方が良いと思う
 Dim wsp As DAO.Workspace
 Dim db As DAO.Database
 Dim rs As DAO.Recordset

次に>>711さんが指摘している点
これは
 rs.close
または
 rs.close
 Set rs = Nothing
のどちらでも処理への影響は表面的には現れてこない。
けど、解放しておいたほうが望ましいだろうね。

前振りが長くなったけど、実行結果は正常終了だったよ。
・db.Execute実行時のロックエラーは発生しない
・db.Execute実行時にSQLのエラーがあった場合はEditでの変更も含め
 すべての更新を無効とする
・処理が正常終了した場合は、すべてのレコードに対してdb.Executeで
 変更した値が反映される

by Windows2000Pro.SP3 & Access2002 SP-2
719704:02/09/13 22:52
>703-715
704で書いた下のやり方は試してみてもいいんじゃないかな〜と思ったんだけど
あきらめちゃうかい?がんばるんなら微力ながら相談にはのるよ。

>717
郵便番号-住所のデータとかどうかな?
ttp://www.post.yusei.go.jp/newnumber/index.htm
全国か1〜数都道府県かでそれなりにサイズを選べるし、各行がそれぞれユニーク、
フリガナがあって、グループ化向きの項目もある。と、結構テスト・練習向きかと。
項目がテキストばかりで日付型や通貨型が無いのはちょっとマイナスかな。
720703:02/09/14 00:03
>>719
あきらめませんっ!
ホントその言葉に感謝です!!
ただAccessを始めたのここ1週間の内の最近なもんで…
関数とVBAの辞典・例題本を買ったんですが
正直、今一飲み込めてない感覚でいるんですよね…
お勧めの本とかありませんか?
また、SQLとか他に憶えたおいたほうがいいことってありますか?
721名無しさん@そうだ選挙にいこう:02/09/14 00:38
>>720
あらかじめ辿り着くべき答えの用意されたシナリオに沿って書かれている
解説本(アンチョコ本)を何冊そろえても血肉にはなりにくいと思うなぁ。
より多く場数を踏むことによって、実力が備わってくるんじゃなかろうか?

例えば、このスレで挙がってくる質問を他人事と思わずに、その解決方法を
(答えそのものじゃなくてヒントを)自分で探るってのも有効な手段だと思うよ。
722名無しさん@そうだ選挙にいこう:02/09/14 09:56
AccessからOutLookのインスタンスを作成して
データをメールで送信出来るようにしています。

今度、メーラーがネスケに変わりそうなんですが
ネスケでのメール送信は何を参照設定すればよいでしょうか?

あぁ・・・なんでネスケなんだよぅ・・・
>703
私が使ってるあんちょこをご紹介…
これで、昨日思い余ってここに助けを求めようとしたけど、
2日間粘って解決した…

ナツメのハンドブック
(Access2000はVBAしか手に入らなかった)
Access97:SQL/VBA/DAO

プロシージャ関係
Access2000プロが作ったお手軽データベース41選
Access2000表現百科500
アクセス2000VBAのアイデア箱
Access2000関数&SQL&エラー処理
Access97アプリケーション設計のコツ
Access97機能引きテクニック集

今はほとんどAccess97のプロシージャ関係本は使わないけど
ハンドブックは引きまくってる(微妙に2000と違うみたいだけど)
今はアイデア箱/表現百科とハンドブック、たまにプロが作った…
これを脇に山済みにして作ってるよ。
後、Access関係のHPもあるから探してみれば?

あ〜Access2000のハンドブックインターフェース編が欲しい!
724名無しさん@そうだ選挙にいこう:02/09/14 20:01
フォームで日付を入力するときに2002/09などと定型入力したいのですが
プロパティのデータ・定型入力に####/##とすると、VBAで値を取得して
計算するときに計算が狂ってしまします。定型入力に何も入れないと正常に
計算されます。定型入力にしつつ日付計算をするにはどうすればいいでしようか?
計算はdate1 = DateAdd("m", 0, Me!年月)という具合に月からその月の1日や末
を取得してるだけです。
725名無しさん@そうだ選挙にいこう:02/09/15 12:24
郵便番号に連番の7桁が入ってるのをレポート出力するときにハイフンで
区切るにはどうすればよいですか?
定型入力###-####にしても連番で表示されてしまったのですが・・・
726725:02/09/15 13:21
すみません、郵便番号のコントロールソースに
=Left([郵便番号],3) & "-" & Right([郵便番号],4)としても印刷時には
Errorが表示されます。宛名ラベルで上記同様にするとうまくいくのですが
デザインビューで集計をかけたレポートの場合にerror表示されます。
なにがおかしいのでしょうか・・・?
テーブル1とテーブル2がリレーションされているとき
テーブル1のフィールドとテーブル2のフィールドを
同じフォームに表示するには
テーブル2の方をサブフォームとする以外に方法はないんですか?
728名無しさん@そうだ選挙にいこう:02/09/15 14:51
>>727
別に両方のテーブルのフィールドを全部メインフォームに
表示してもいいけど。(まあ用途によるけど。)
>>727
フォームに表示させたいテーブル1とテーブル2の
フィールドをクエリーで抽出してそのクエリーを元に
フォームを作ればサブフォームにしなくても
テーブル2は表示出来ませんか?
>>728
どうすればメインフォームに2つのテーブルのフィールドを表示できるの?
>>724
不具合の原因をつきとめる方法に工夫をしたら?
正しい結果を得るためにはどんな値を与えれば良いか、わかってるんだからね
定型入力プロパティを設定せずにスラッシュも含めて全て打ち込んだ場合は
正しい結果になるんだろ?
じゃぁ、定型入力プロパティを設定している時にDateAdd関数にどの様な値が
渡っているのか、実際にコントロールがどんな値を保持しているのか調べれば
いいじゃない
VBAプロシージャのDateAdd関数の前に
 MsgBox "入力値 = " & Me!年月
って1行を追加してやれば調べがつくだろ?
原因がわかれば対策もたてられるしね

ついでに定型入力プロパティは入力ガイド"____/__"を表示しているだけで
入力された値には影響を及ぼさない(加工もしない)ということがわかるだろ
>>725-726
新郵便番号データのみ旧郵便番号データ含まずならばFormat関数で
 =Format([郵便番号], "@@@-@@@@")
と整形してコントロールソースに渡せるけどね

エラーの原因はわかんないね
その正常なケースの例に挙げている宛名ラベルと問題のレポートの
レコードソース(基になっているテーブルやSQL)は同じなの?
両方とも同じテーブルの郵便番号列を参照しているわけ?

> デザインビューで集計をかけたレポートの場合にerror表示されます。
この1行は、なにか思惑があって書いたのだろうけど、読む側には
意味がないかもしれない
書くならエラーの再現テストができるくらいの説明がいいと思う
733725:02/09/15 18:46
>>732
(デザインビューで集計をかけた・・・は無意味なものでした、すみません)
ありがとうございます。確認してみまして、エラーになる場合はレコードソースが
ストアドプロシージャ又はビュー表を使っている場合でした。
住所録テーブルからレポートを作成した場合、郵便番号はハイフンで区切られるのですが
ストアドをレコードソースにした場合はプレビューすると、郵便番号覧に#Errorと出て
しまいます。郵便番号のコントロールプロパティは全く同じにしてもErrorになります。

ストアドは住所録テーブルと集計テーブルからSELECTしており、住所コードを
パラメータにしています。それをもとにレポートを作成しています。
ためしに=Format([郵便番号], "@@@-@@@@") としても#Errorでした。

ちなみにビューで作成した表を元にした場合でも郵便番号をハイフンで
区切ろうとすると#Errorが表示されてしまいます。
ハイフン区切りだけではなくて、例えば=("〒" & [郵便番号])というのも
ビュー・ストアドを元にするとError表示されています。
ストアド、ビューからSELECTした場合に限って出来ない、ということに気づき
ましたが、これはどうすれば出来るのでしょうか・・・?
734725:02/09/15 18:56
何度も書き込み申し訳ありません。
>>733でビュー・ストアドのときのみうまくいかないと書いてしまいましたが、
住所録テーブルから直接レポート作成しても
=Left([郵便番号],3) & "-" & Right([郵便番号],4)は#Error表示になってました。

うまくいくときは宛名ラベルウィザードに沿って作ったレポートのみでした。
宛名ラベルウィザードのレポートのレコードソースを住所録テーブルにしても、
ストアドにしても郵便番号は正常にxxx-xxxxと表示されています。
それ以外で作ったレポートが#Error表示されるようです。
私のやり方がまずいような気がしていますが何度やっても同じなんです・・・
>>725-726 >>733-734
レポート作成でコントロールを貼り付ける時に、フィールドリストから
目的の列を選んでドラッグ&ドロップしていない?
コントロール(テキストボックスだろうね)のプロパティ-その他-名前の
項目を確認してみてよ
コントロールの名前が"郵便番号"になっていないだろうか?
この状態でそのコントロールソースに
 =Left([郵便番号],3) & "-" & Right([郵便番号],4)
などの式を設定するとレコードソースの列を参照せずに自分自身を参照して
エラーになるよ

ウィザードで作成したレポートのコントロールは"テキスト0"等の名前に
なっているはず
# 想像で不具合の再現するのって難しいんだよなぁ・・・
736725:02/09/15 20:48
>>735
ありがとうございます!おっしゃるとおりでした。
ウィザードで作成したコントロールの名前はtext1などで、自分でフィールドリスト
からドラッグ&ドロップして作成したものは名前が”郵便番号”になっており、
その名前をtext11等と直したらErrorが消えて、正常に表示されました。
的確な助言に感謝してます。ありがとうございました。
737元マカ:02/09/15 20:53
アクセスで作ったランタイムアプリケーションとかないですか?
どういう感じのDBなのか知りたいので、紹介してください
738名無しさん@そうだ選挙にいこう:02/09/15 21:01
こんばんは。先月からアクセスの勉強を始めているのですが、無い知恵を絞って
も出来ませんでした。是非とも先輩方のお知恵を借りたいと思って来ました。


累計以外のフィールドが最初から有りまして、これを別のテーブルを用意して
レコードを追加するか、自身のテーブルに累計フィールドを追加して以下のよう
にしたいのです。 技を使ってクエリーのみで可能でしょか?
  
            追加フィールド
              ↓
店鋪   日付  来客数  累計  

東京   1/1   150   150
東京   1/2   170   320
東京   1/3   160   480
名古屋  1/1    60    60
名古屋  1/2    50   110
名古屋  1/3    70   180
大坂   1/1   100   100
大坂   1/2    80   180
大坂   1/3   120   300

エクセルでやればと言われそうですが、データが数千件ほど有りなんとかアクセス
で実現しいのです。
739名無しさん@そうだ選挙にいこう:02/09/15 21:11

説明不足!
多分可能!
740名無しさん@そうだ選挙にいこう:02/09/15 21:12
>>737
オフィスデベロッパーで作成可能だそうです
741名無しさん@そうだ選挙にいこう:02/09/15 21:38
>>739

説明不足ですいません。

店鋪   日付  来客数  
東京   1/1   150
東京   1/2   170
東京   1/3   160
名古屋  1/1    60
名古屋  1/2    50
名古屋  1/3    70
大坂   1/1   100
大坂   1/2    80
大坂   1/3   120

このテーブルを以下のようにしたいのです。テーブル作成クエリーや
選択・追加・更新クエリーで可能でしょうか?
           
  
店鋪   日付  来客数  累計  
東京   1/1   150   150
東京   1/2   170   320
東京   1/3   160   480
名古屋  1/1    60    60
名古屋  1/2    50   110
名古屋  1/3    70   180
大坂   1/1   100   100
大坂   1/2    80   180
大坂   1/3   120   300
742名無しさん@そうだ選挙にいこう:02/09/15 21:47
累計の項目はあえて設ける必要は無いと思います。
過去の日毎の来客数情報があれば、いつでも求めることが出来るからです。
テーブルの項目は、
店舗、来客数、日付 の3つの項目

フォームは、
このテーブルへの入力を行うものとします。

レポートで
店舗、日付、来客数、と、累計来客数を出力します。
累計数はレポートのみで実現可能です。クエリーを作る必要はありません。

以上、もっとも単純な方法です。

レポートのみで集計する方法がわからなければ、クエリーを使う方法もあります。
743名無しさん@そうだ選挙にいこう:02/09/15 22:21
>>742
ありがとうございます。

訳あってテーブルに累計を書き込みたいので、クエリーを使う方法を
御教授いただきますと助かります。
744名無しさん@そうだ選挙にいこう:02/09/15 22:53
クエリーデザイン画面で、Σボタンを押すと集計の設定が出来ます。
店舗をグループ化して、来客数を合計にすると、累計できます。
日付を指定したければ、項目に日付を追加し、Whereを選択し、条件を設定します。
累計結果を書き込むには、一旦累計のみのテーブルを作成してから、
更新クエリーで元のテーブルに書き込む方法を取ったほうが良いと思います。
店舗と日付でリンクすればOKです。
後は自分で調べてみてください。
>>743
横から口はさむ形になるけど、あんまり回答に条件つけないほうがいいぞ
「クエリーでお願いします」とか言われると、回答用意する側は解決方法
の選択肢が少なくなってしまうわけだ
もしクエリーで解決できないものだったらどうするさ
そこで話が終わっちゃうよ?
746相談ですよ?:02/09/16 00:48
現在、あるテキストボックスにFocusがされている状態から、
VBAを使用して、Focusを完全に解放したいのですが、
どうすればいいかご存知の方はいらっしゃいますか?

VBスレで質問したところ、スレ違いということでしたので、
こちらで質問させていただいているのですが、
そのときに、「SetFocus」を使えばいいという事を
教えていただきました。

他のボックスにFocusを移すというのでなく、
完全にどのボックスからも、Focusを外すという事をするには、
どういうふうにすればいいかご教授願えたらと思っています。
>>746
> 他のボックスにFocusを移すというのでなく、
> 完全にどのボックスからも、Focusを外すという事をするには、

VBスレで回答した者です。義理で回答しておきます。
コントロールが1つ以上配置されているフォームで、
すべてのコントロールからFocusを外すのは無理です。
(他のフォームにフォーカスを移せば見た目は消えますが)

透明コマンドボタンとかオプショングループのフレームを
用意してそこへフォーカスを移すことにより、
フォーカスが無いように見せかけるのが関の山だと思います。

この板には普段来ないので、後は他の人の回答にお任せします。
748名無しさん@そうだ選挙にいこう:02/09/16 07:08
>>743
Accessのみで通用するクエリ/SQLじゃ。累計をDSum関数で求めている
SELECT
 店舗, 日付, 来客数,
 DSum("来客数","SampleTable","[店舗] = " & "'" & [店舗] & "'" & " and " & "[日付]<=" & "'" & [日付] & "'") AS 累計
FROM SampleTable;

あとはInsert Into文と併用すれば"クエリだけ"でできるでしょ
テーブル構造を示す時は仮のテーブル名つけといてよ(;_;)

このSQL文は他のRDBMSでは通用しない諸刃の剣。素人にはお勧めできない

# 生まれてこのかたDSumつうかD系関数は、お爺ちゃんの遺言で使ったことが
# ないんだよなぁ・・・
# DSumの引数の与え方、おかしいと思ったら添削してね > ALL
749627@SQL修行中:02/09/16 13:04
よーし、パパ、627ではさっくり無視されたんで今度こそ頑張っちゃうぞー

>>743
SELECT A.店舗, A.日付, A.来客数, Sum(B.来客数) AS 来客数の合計
FROM TABLE_ONE AS A, TABLE_ONE AS B
WHERE A.店舗=B.店舗 AND A.日付>=B.日付
GROUP BY A.店舗, A.日付, A.来客数
ORDER BY A.店舗, A.日付

なーんかごちゃごちゃして美しくないなあ…
750田中恍人:02/09/16 13:35
>>748
日付型なら区切り子は#じゃないの?
751743:02/09/16 14:15
>>748
>>749
皆様ありがとうござます。749さんのを試したらできました。
パパさんにもう感謝感激です。パフパフしちゃいたくらいです!
752748のひと:02/09/16 14:39
>>750
日付型ならね・・・つい他のRDBMSでの癖で日付項目をテキスト型にしてもうた

>>751
おいらのSQLは駄目だったんかぃ!・・・って凄んじゃいかんね
そのままコピー&ペーストして実行しても駄目だよ
SELECTと店舗の間と来客数,とDSumの間には2バイト文字のスペースが
埋まってるし、AS 累計とFROMはくっついてしまうから1個分スペース
空けんとね

# 既に終了だから、どうでもいいけど。まっ、普通、気がつくよね
753名無しさん@そうだ選挙にいこう:02/09/16 19:55
Select パフパフ.tbl_2ch From tbl_2Ch Where resNo = 751
754744:02/09/16 20:29
せっかく簡単な方法考えたのに!
俺だってSQLくらい書けるよ、Union だって、 case 分だって使ったことあるよ!
Oracle だって、SQLだって使ったことあるよ!
ところで、フォーカス外す方法、『眼鏡を取る』ってのはどうですか?
眼鏡かけてる人限定だけど
755名無しさん@そうだ選挙にいこう:02/09/16 20:33
聞きたい事あるんだけど、SQLな生活あるいは人生とはどんなものしょうか?
756744:02/09/16 20:38
さー
757名無しさん@そうだ選挙にいこう:02/09/16 20:40
>>755
色々と話したいことはあるが、まずは君が自分の考えを述べてみよ
(°Д°)ハァ?
7592ch Acceess Users Group:02/09/16 22:25
仕事の丸投げ, 目的不明瞭な質問断固反対! いい加減疲れたよ・・・

このスレに寄せられる質問への応対から離れて、普段、このスレでは
語れないようなネタでマターリしたいと思いませんか?
そんな人は下記スレにGO (休眠スレの再利用ですのでスレタイは気にしない)

・もう『Access2002』使ってる人いるっしょ?集合!!
http://pc.2ch.net/test/read.cgi/bsoft/1006147865/l50

なお、このスレで扱われいる内容の質問等の持ち込みは無視してください
7602AUG:02/09/16 22:29
>>759
アヒャヒャ 脱字。s/このスレで扱われいる/このスレで扱われている/

欝だ。逝って来ます。。。
どうでもいいけど、2ch "Acceess" Users Groupってなんだよ(藁

疲れてるな。見直したのに
>>744

(´・ω・`) 累計できない… ただの合計になっちゃう…
763LET'S SQL:02/09/17 02:50
SQLは世界を救います。SQLは崇高な思想です。SQL…その心は般若心経。
764744:02/09/17 06:07
>>762
アレを、毎月実行すれば、ちょっと工夫すると累計になると思うよ
765名無しさん@そうだ選挙にいこう:02/09/17 11:35
VBAでレポートを印刷する際に、FlagがTrueのページのみ
処理を行いたいのですが、「ページ毎」というイベントってありますか。

DoCmd.OpenReport "rpt印刷ワーク", acViewPreview

とすると、一気に全ページ読み込んでしまって処理を挟む間も
ないんですが。。。
766名無しさん@そうだ選挙にいこう:02/09/17 12:47
>>765
これで出来るでしょう。

DoCmd.OpenReport "rpt印刷ワーク", acViewPreview, "", "レコードの抽出式", acNormal
レコードの抽出式には、[No]="PageNo"の条件式ね。
767765:02/09/17 13:13
>>766
ありがとうございます。でもちょっと違くて、ワークテーブルのFlagフィールドが
Trueのページのみに処理を行いたいのです。

えーと、レポートのVBAでページ毎に起こるイベントがあるなら、

Private Sub ページ毎に起こるイベント()
  If Flag = True Then Call Trueの時の処理
End Sub

Private Sub Trueの時の処理()
  (処理)
End Sub

と言うことをしたいのです。最終的にはワークテーブルの全レコード分印刷します。
Trueのページにだけ、少し脚注を加える感じです。
分かりづらくてすみません。
768名無しさん@そうだ選挙にいこう:02/09/17 13:45
テーブルにオートナンバーフィールドをついかして
レポートを開いた時にそれを変数PageNoに格納して印刷する時に
フィルターをかましてやればどうかな?

Dim PageNo as Integer
Private Sub ページ毎に起こるイベント()
PageNo=[Table]![No]
  If Flag = True Then Call Trueの時の処理
End Sub

Private Sub Trueの時の処理()
DoCmd.ApplyFilter "", "[Table]![No]=" & '"PageNo"' & "
  (処理)
Filter = False
End Sub
769765:02/09/17 13:53
>>768
うう…。「ページ毎に起こるイベント」が何かが分からないのです…
770768:02/09/17 13:57
すいません、フィルタの抽出式間違えました。
試してないんで動くかどうか分かりません。

DoCmd.ApplyFilter "", "[Table]![No]=" & PageNo
771768:02/09/17 14:00
>>769
宣言したPageNo変数にオートナンバーNoの格納を追加しただけですが。
772名無しさん@そうだ選挙にいこう:02/09/17 14:07
レポートで、レコードソースの列に無いコントロールの合計を出すにはどうすればいいでしょうか?
レポートに出力してる金額の合計を出したいのですが、元のレコードソースには
”税”、”金額”、”消費税”という項目があり、”税”には内税、外税という文字が入っていて
金額には税込みか、税抜きかどちらかが入ってます。”税”によって税込みか抜きかを判断します。
消費税には消費税が入ってます。
レポートウィザードの合計では金額等の合計がでますが、そのまま合計をだすと税込みと
税抜きが混じる可能性があるので統一したいのです。レポートの詳細に
新たなコントロール”税抜き”をおいてVBAで内税の時と外税とで税抜きが入るようにはしたのですが、
その”税抜き”の合計をフッターに出そうと、フッターのテキストコントロールプロパティに
sum([税抜き])としても、プレビュー時にそのコントロールは列にありません、みたいなエラーが出ます。
レコードソースの列に無いコントロールの合計を出すにはどうすればいいでしょうか?
773765:02/09/17 14:16
>>771
>>767に書いたコードは、印刷する時に「ページ毎起こるイベント」があると仮定して、の話です。
>>765を見ていただけば分かると思います…)

ええと、本当の事を書くと、Flagと書いたフィールドには4種類のナンバーが入ってるのです。
で、レポートの方は
1.あああああ
  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
2.あああああ
  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
3.あああああ
  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
4.あああああ
  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
↑こういう風になっていて(下線はLineコントロール)、Flagフィールドが「1」の場合、
・1の横のテキストボックスに「あああああ」と入れる(2〜4は空)。
・Line1.Visible=True(2〜4のLineはVisible=False)
にする、という処理をページ毎にチェック、実行したいと思っているのです。

True、Falseと2種類にした方が、分かりやすいと思って遠回しに書きました。
申し訳ありません。
774名無しさん@そうだ選挙にいこう:02/09/17 14:19
>>772
税抜きのコントロール名を別のにすればいいよ。
775772:02/09/17 14:31
>>774
”税抜き”の名前を”個別税抜き金額”に変えてみて、
フッターの”税抜き小計”コントロールソースに=sum([個別税抜き金額])
とやってみましたが同じでした。
”税抜き”のコントロールソースには何もはいってないです。
もしかしてsumはデータソースの列(値)でしか使えないんでしょうか?
776765:02/09/17 14:32
詳細_Printイベントでいけますた。
Previewするのは無理みたいですね(イベントがない)。
お騒がせしますた。
777名無しさん@そうだ選挙にいこう:02/09/17 16:04
Access97を使っています。
ファイル→外部データのインポート、ファイルの種類からExcel形式が選べなくなりました。
ファイルの種類コンボボックスにxlsっていう拡張子自体、表示されません。

OfficeのCD-ROMからデータアクセスをアンインスコ→インスコしてみましたが改善されず。
Googleも小一時間問いつめましたが、それらしいページは見つかりませんでした。

何とかする方法、Googleでこんなキーワードで検索してみれ、などアドバイスをおながいします。
778名無しさん@そうだ選挙にいこう:02/09/17 16:19
>>777
Office本体の再インスコはやてみた?
779777:02/09/17 16:30
>>778
Office自体の再インスコで直りました。
なんだろ、これ。
ありがとうです。
780CD-R,焼く:02/09/17 17:48
Win2k,Acc2k
ある条件で検索した結果を、HTMLファイルにして、CD-Rに焼きたいのですが、
その一連の処理をVBAでできないですかねえ。
WinCDRなら、VBからコントロールできるとかいうのを以前聞いたような気も
するんですが、事例が見つかりません。
781名無しさん@そうだ選挙にいこう:02/09/17 23:06
>>780
検索結果を配列変数にでも格納しておき、
自前でHTMLでTABLE書いて、要所要所「&」で繋ぎながら
配列を繋ぐしかないと思われ。
Accessのファイル→HTMLで保存ってのをVBAから制御できるなら
もっと簡単かもね。レッツGoogle!
782名無しさん@そうだ選挙にいこう:02/09/18 00:21
先日パソコンを買い換えたのでアクセスをインストールしなおそうところ、
インストール中に「ウィンドウズのファイルを書き換えられません」という
メッセージが出て、インストールできないという症状が出ました。
これはどういうことでしょうか?

インストールしようとしたのはAccess2000でOSはXPです。って板違いかな・・・?
ユーザ権限の問題じゃないか?管理者権限でやってみれ
784780:02/09/18 09:48
>>781
HTMLファイルにするところまではできました。
CD-Rに焼くところを作りたいです。
できれば、SendKeyは避けたいんですが、直接操作できるAPIの公開された、
CD焼きソフトを、だれか知りません?事例付きで。
785704:02/09/18 11:10
>703
さて、ひさしぶり。めずらしく人並みの連休だったり忙しかったり。
まずは<TABLE>のセルをAccessのテーブルに取り込むところから始めようか。流れは、
1.HTMLファイルをOpenステートメントでVBAが見れるようにして
2.一つ目の「<TABLE」を探す。
3.次の「<TABLE」を探す。
4.3の「<TABLE」〜「</TABLE>」を新しいHTMLファイルとしてOpenで書き込む。
5.4をインポートで取り込み。
下準備として、元のHTMLファイルをフォルダC:\htmlに置いてもらってファイル名を
moto.htmlとしておいてね。(そこは/その名前は都合が悪いとかなら自分で適当に
がんばってみてね)
1.Accessで新しいフォームを作ってそこにボタンを置く。ボタンの「クリック時」の
「イベントプロシージャ」の「Private Sub ボタン名_Click()」と「End Sub」のあいだに
以下をコピペ。
786704:02/09/18 11:11
Dim TextLine As String
'変数を宣言。TextLineという箱を作ってここには文字列型を入れるよって指定。

Open "C:\html\moto.html" For Input As #1
'Openステートメントではテキストファイルをパス名と開くときのタイプを指定して、
'何番として開くか指定する。ここでは「C:\html\moto.html」を「上から順に読み込み」で
'「#1」として開いている。1つ前のレスの「流れは〜」の1.の部分。

Do 'ここから次のLoopまでで1つ目の「<TABLE」を見つける。「流れ〜」の2.ここから
 Line Input #1, TextLine '変数TextLineに#1(moto.htmlのこと。Openで指定したからね)
 'を入れている。#1は「For Input」で開いているので「Line Input #1」ってやるたびに
 '次の行に移動する。
 
 Debug.Print TextLine 'イミディエイトウインドウにTextLineを表示。
 '表示のイミディエイトウインドウを開いて動かすと確認できるよ。
 
 If InStr(TextLine, "<TABLE") >= 1 Then 'もし「<TABLE」があったら
  Exit Do 'このLoopを抜ける。
 End If
Loop'「流れ〜」の2.ここまで
'Do〜Loopでそのあいだをぐるぐると何度も行う。普通は「Do While 条件」
'「Do Until 条件」「Loop Until 条件」などでLoopを抜けるか続けるか
'判定するよ。判定を書き間違えてLoopから抜けれないと延々と回るから注意。

Do 'ここから次のLoopまでで2つ目の「<TABLE」を見つける。「流れ〜」の3.ここから
 Line Input #1, TextLine
 Debug.Print TextLine
 If InStr(TextLine, "<TABLE") >= 1 Then
  Exit Do
 End If
Loop'「流れ〜」の3.ここまで
787704:02/09/18 11:12
'この時点で#1は2つ目の「<Table」の行まで読み込み終わっていて
'変数TextLineには2つ目の「<TABLE」のある行が入っている。

'「流れ〜」の4.ここから
Open "C:\html\sumi.html" For Append Lock Write As #2
'sumi.htmlと言う名前で新しく書き込み用のファイルを#2で作って
Print #2, "<HTML><HEAD><TITLE></TITLE><BODY>"
'HTMLの最初の部分を書きこんで
Print #2, Mid(TextLine, InStr(TextLine, "<TABLE"))
'TextLineから「<TABLE」以降を書き込む。

Do 'ここから次のLoopまでで「</TABLE」を見つける。
 Line Input #1, TextLine
 Debug.Print TextLine
 If InStr(TextLine, "</TABLE") >= 1 Then 'TextLineに「</TABLE」があったら
  Exit Do 'Loopを抜ける。
 End If
 Print #2, TextLine '「</TABLE」が無かったら#2に書き込む。
Loop

'で、#1は「</TABLE」のある行まで読み込んで、TextLineにはその行がはいっていて
'#2にはその前の行までが書かれているはず。

Print #2, Left(TextLine, InStr("</TABLE", TextLine)) & "</TABLE></BODY></HTML>"
'最後は#2にテーブルを閉めるタグ、ボディを閉めるタグ、HTMLを閉めるタグを書いて
Close #2 '開いたのは閉じないと次に開けないので#2と
Close #1 '#1を閉じる。
'「流れ〜」の4.ここまで 以上をコピペ
788704:02/09/18 11:13
これでC:\html\moto.htmlからC:\html\sumi.htmlを作ることができるんじゃないかな。
とりあえず適当に作った単純なテーブル2個のHTMLのあるmoto.htmlから2個目のテーブルと
形だけHTMLな頭とケツをくっつけたのが出来はしたんだけど。
あとはmoto.htmlって名前に逐一変えないといけない、一度に1ファイルしか処理できない
ぐらいかな?実際のHTMLの名前に規則性があれば何とか出来そうだけどね。

で次は、5.4をインポートで取り込み。なんだけど、
>一つのセルに〜中略〜複数のデータが入っています。
なので、実際に取り込みたいテーブルに入れる前にワンクッション。新しく
「T_TempHTML」とでも名前をつけた、Accessのテーブルを作って、フィールドを
HTMLのテーブルの横の数(一番<TD>の一番多い所に合わせてかな?)作って
そこにインポートして見る形かな?

ここまでいけば、質問は「テーブルAにあるデータをテーブルBにコピーしたい。
その際テーブルAには改行やスペースやスラッシュで区切られたデータがあって
それを区切りごとにテーブルBのフィールドに分けてコピーしたい」
まで単純化されると思うんだけど。

ここまでをやってみて困った事やここまで出来たよってなったらまた聞いてみてね。
済みませんがお教えください。ACCESS95です。

レポートで請求明細書を作っております。
その請求明細書に「前回請求額」「御入金額」「振込み手数料」などの項目があります。

それで、入金金額、振込み手数料は入金履歴テーブルに入れるようにして有るのですが、
ソレをクエリーで抜き出して、サブレポートで表示しようと思っているのですが
その月に分割して支払われた場合、分割した分、すべて出てしまいます。
このうち、一番最新の一件だけ表示したいと思います。

が・・・クエリーの集計でやっても巧く行きません。
(入力順番は適当なので入金日付の項目で管理してます。)

どうすれば、一番最新の一件だけを巧くサブレポートに抜き出せるのでしょうか?

お願いします。お教えください。

入金テーブルの内訳はこんな感じです。
顧客ID
入金日付
振込み手数料(こっち持ちなので記録してます)
売掛チェック(売掛金から入金金額をマイナスしたらチェックつけてます)
790789:02/09/18 11:41
あ、もちろん、「入金金額」も入金テーブルにはいってます・・・・
書き忘れましたすみません・・・
791名無しさん@そうだ選挙にいこう:02/09/18 12:06
困っています。Acceess2000で日付/時刻型の更新をしたいのですが、書式がわかりません。
環境は、
OS:Windows2000
DB:Access2000
言語:PHP
DBのレイアウト
id:数値型
name:テキスト型
date:日付/時刻型(書式:日付 (標準))

うまくいかなかったSQL。
"UPDATE user SET name="n",date = NOW() WHERE id=1";
"UPDATE user SET name="n",date = '2001-09-18 10:45:47' WHERE id=1";
"UPDATE user SET name="n",date = {ts '1998-10-30 11:50:30'} WHERE id=1";
"UPDATE user SET name="n",date = Cdate(#99/10/10#) WHERE id=1";
"UPDATE user SET name="n",date = Cdate(#10/10/99#) WHERE id=1";
"UPDATE user SET name="n",date = CONVERT('1998-10-30 11:50:30',TIMESTAMP) WHERE id=1";
日付/時刻がなければうまくいきます。
"UPDATE user SET name="n" WHERE id=1";

どなたか教えてください。
792名無しさん@そうだ選挙にいこう:02/09/18 12:08
↑間違えました。
うまくいかなかったSQL。
"UPDATE user SET name='n' date = NOW() WHERE id=1";
"UPDATE user SET name='n',date = '2001-09-18 10:45:47' WHERE id=1";
"UPDATE user SET name='n',date = {ts '1998-10-30 11:50:30'} WHERE id=1";
"UPDATE user SET name='n',date = Cdate(#99/10/10#) WHERE id=1";
"UPDATE user SET name='n',date = Cdate(#10/10/99#) WHERE id=1";
"UPDATE user SET name='n',date = CONVERT('1998-10-30 11:50:30',TIMESTAMP) WHERE id=1";
日付/時刻がなければうまくいきます。
"UPDATE user SET name="n" WHERE id=1";
793名無しさん@そうだ選挙にいこう:02/09/18 12:30
↑エラーは以下です。
SQL error: [Microsoft][ODBC Microsoft Access Driver]
UPDATE ステートメントの構文エラーです。, SQL state 37000 in SQLExecDirect
794名無しさん@そうだ選挙にいこう:02/09/18 12:43
>>791
日付型フィールド名に関数として定義されている文字列は使えないのでは?
SQL予約語をテーブル列名に使ってる時点でアウトだよね。
テーブル設計の時点で排除しなきゃならん凡ミスだね。

急場しのぎで列名 dateを [date] と括弧でくくるか。
あとのことを考えたら、列名を変更したほうがいい。
796794:02/09/18 12:50
日付型フィールドだけじゃなく他のフィールドもね。
Update user Set name='n', [date] = #9/18/2002# where id=1;
798782:02/09/18 15:13
>>783
今日、パソコンを再起動してから余計な常駐ソフトを
どけて、インストールしてみたら、なぜかインストールできました。
いまだに理由はわかりませんが、まあとにかくインストールできたので
んなことはかまいません。
レスありがとうございました。

それにしても新パソコンは速い。
今まで10分くらいかかっていた処理が1分もかからずにできます。
799名無しさん@そうだ選挙にいこう:02/09/18 15:21
初めて書き込ませていただきます。
チェックボックスをフォーム上に配置しているのですが、小さくてチェック
しにくいです。
チェックボックスを大きく表示させる方法をどなたか教えてください。
800名無しさん@そうだ選挙にいこう:02/09/18 15:26
>>799
ない
801名無しさん@そうだ選挙にいこう:02/09/18 15:38
>>800
レスありがとうございます。
ないですか・・・。
数千件のデータをチェックするのにこんな小さいチェックボックスを
チェックしていくのは大変だろうなと思って大きめにしようと思ったのですが・・・。
802クエリわからん:02/09/18 15:49
ちょっと行き詰まったのでヒント下さい。
フォームに入力された条件を設定してクエリーを開きたいのです。
(というか、開いてからSQLを設定したい)

レポートの場合は、
DoCmd.OpenReport "R_XXX", acViewDesign
Reports!R_XXX.RecordSource = "……"
って感じでできるのですが、クエリーの場合
DoCmd.OpenQuery "Q_XXX", acViewDesign ←ここはOK
???  ←ここがわからない
となってしまいます。
つまり、開いているクエリーのSQLをコードから変更する方法が知りたいんです。
簡単なことのような気もするんですが、わかりません。
803名無しさん@そうだ選挙にいこう:02/09/18 15:50
>>801
大きいのが良かったら、トルグボタンを使うのは?
>802
聞く前にクエリでデザインしてSQLビューしてみたら?
805クエリわからん:02/09/18 16:07
>>804
ちょっと書き方悪かったみたいですみません。
SQLが書けないのではなくて、
SQLをコードから設定(変更)する方法がわからないんです。
806名無しさん@そうだ選挙にいこう:02/09/18 16:41
>>805
SQL文の変更したい文字列を変数に代入すれ
807クエリわからん:02/09/18 16:59
>>806
そのSQL文が入った変数をどうすれば、クエリーのソース(?)を
変えられるかがわからないんです。
808780:02/09/18 17:24
>>802
QueryDefオブジェクトのヘルプをみるとよいと思う。
お前ら(質問してるヤシ)ヘルプに一通り目を通しているか?
暇を持て余している時間があったらヘルプを開け。
ヘタな解説本開いたり、Webサイトで質問投げるより有益な情報が
載っているぞ。 >>805 >>807なんて、人に聞く以前の問題だぞ。
810クエリわからん:02/09/18 19:12
>>808
QueryDefオブジェクトのヘルプは見てたんですが、
↓に書いたようなところでつまずいたんです。

>>809
いや、ヘルプはちゃんと読んでいますよ。
これもちょっと書き方が悪くてというか、説明不足ですみません。

ヘルプを読んでやろうとしたこと。(適度に省略)
Dim DB as Database
Dim QD as QueryDef
QD = DB.QueryDefs("Q_XXX")
QD.SQL = "……"

ってやろうとしたんですが、DBとかQDの宣言のところで、
コンパイルエラー:ユーザー定義型は定義されません
というエラーになってしまうんですね。
それで、QueryDefオブジェクトが作れなくて、どうすればいいのかなと。
で、ヒントがいただければと思ったんです。
もう話が変わっているかもしれんが、
変数に文字列として取れた時点でLeft、Mid、Rightで切って変えればいいのでは。
812780:02/09/18 19:31
>>810
参照設定でDAOを組み込み忘れてません?
あと既存オブジェクトへの参照を変数に代入するときはSetステートメントが要ります。
813クエリわからん:02/09/18 19:46
>>812

>参照設定でDAOを組み込み忘れてません?
[ツール]メニューの中に[参照設定]がありません…
肝心なこと書いてなかったですが、Access2000です。

>あと既存オブジェクトへの参照を変数に代入するときはSetステートメントが要ります。
あっ、このへんは大丈夫です。>>810はかなり略して書いているので。
>>813
モジュール開いた状態でツールメニュー見てる?
あと、解決したいなら略さない。
VBA Editorを開いた状態でないと、ツール(T)に参照設定(R)は出てこないだろ
816クエリわからん:02/09/18 20:04
>>814
モジュールは開いていない状態です。
データベースウインドウだけ開いた状態でメニューを見ています。
が、ありません。

省略の件すみません。
>>816
じゃあVBE開いてツール→参照設定開けよ。
つーかネタか?馴れ合いたいだけか?
818クエリわからん:02/09/18 20:16
>>815
ありがとうございます。とりあえずDAOは追加できました。
ちょっとやってみます。

>>817
ありがとうございます。
でも、ネタじゃないですよ。単にわからなくて行き詰まってただけです。
うむ。絶対に一緒に仕事したくないタイプだな
820名無しさん@そうだ選挙にいこう:02/09/18 22:16
こっちから願い下げ
821789:02/09/18 22:33
>>789
すみません、>>789で質問を書いたものです。

するっとスルーされて寂しい・・・

だれか教えてください。

書き方悪かったのでしょうか・・・
やりたい事は有る範囲のデータで、その中で最新のデータを取り出したい。
って感じなのですが・・・

日付をキーにして範囲を絞り込むのはできるのですが、このなかで
最新の一件だけをクエリーで抜き出すにはどうすれば良いのでしょうか?

ヒントだけでも教えてください・・・。お願いいたします。
>>821
まずは、どの様なクエリー=SQLを実行しているのか書いてみたら?
書くのはSQL文(Select文)
それがあればアドバイスが出てくるかもしれない
823( ´∀):02/09/18 23:00
>821
サブクエリを使え

select * from [入金履歴]
where 範囲指定
and 日付 = (select MIN( [日付] ) from [入金履歴] where 範囲指定 )

こんな感じて
824名無しさん@そうだ選挙にいこう:02/09/18 23:06
>>821
MaxとかLastを聞きたいのかな

>その月に分割して支払われた場合、分割した分、すべて出てしまいます。
>このうち、一番最新の一件だけ表示したいと思います。

前回請求後の全ての入金金額、振込み手数料を合算しないと変だと思うのですが?
つか文章表現をなんとかしてくれ > 依頼人
意味不明瞭で読むに耐えられん。成人なら成人なりの書き方があるだろ
みんな、発展途上の少年少女なのか?
826名無しさん@そうだ選挙にいこう:02/09/19 00:11
>>799
チェックボックスのラベルをクリックじゃダメですか
>>799
チェックボックスのビットマップ画像をペイントブラシで400%とか800%に拡大したものを
フォームに貼り付けてクリック時イベントでトグル切り替えとかじゃダメですか
828名無しさん@そうだ選挙にいこう:02/09/19 01:41
日々データの追加をしているDBなんですが・・・
なんかデータ量以上にmdbのファイルサイズが膨れ上がっていくんです。
正確な計算の仕方が良く分からなかったのですが、本来の100倍くらいになってます。
10MB超えたんで、さすがにおかしいと思って最適化しようとしたのですが、
「権限がありません」エラーになりますた(権限ならあるのに!)。
どうなってるんでしょうか・・・??
サイズの肥大って、よくあることなんでしょうか?対策ないですか
829名無しさん@そうだ選挙にいこう:02/09/19 02:02
>>799
そもそも>>801に書かれてる
>数千件のデータをチェックするのにこんな小さいチェックボックスを
>チェックしていくのは大変だろうなと思って大きめにしようと思ったのですが・・・。
という大変な作業が信じられない。面倒くさすぎ…
SQLでまとめて更新はできないのかな。

それとも紙データの入力でも請け負ったのか。
830名無しさん@そうだ選挙にいこう:02/09/19 02:12
>>828
その質問、いいところに気が付いたと、敬意を表したいですね。
良くあることです。
SQL Serverとかだと自動縮小するみたいですけどね。
データ量以上にmdbのファイルサイズが膨れ上がるってのは、詐欺以外の何ものでもないです。

エラーについては他の方、アドバイスをお願いします。
>>830 怪しい講釈垂れてないでアンタがアドバイスしてやれよ(w
最適化も知らんのか・・・
>>832
>>828嫁。文盲のレスは控えて下さい。

>>828
他に新規mdb作って、該当mdbから全部インポートして
最適化してみ。
なんか荒れてるな。荒れついでに(何のついでかしらんが)遅レス

>775
 sumとかのSQL集計関数はSQLと謳ってるだけあって
フィールドに対する集計をするものだから無理(確信なし)

 この場合は、mdbならクエリでIIFを使って、
adpならcaseを使ってレコードソースに税抜きフィールドを作る
とかしか思い浮かびません。
 俺のDBでやっている同様の処理は"税抜き"フィールドをテーブルに
作っちゃってフォームのイベント(mdb)か
updateトリガ(adpっつーかMSDE)でやっつけてます
835704:02/09/19 12:09
>>811
>変数に文字列として取れた時点でLeft、Mid、Rightで切って変えればいいのでは。
たぶん僕の書いた>>785-788あてのレスかと。違ったらごめんね。
最初>>704の時、2つ書いた上の方が811さんの書かれたのと同じかと。
703さんが一個目の<TABLE>の取込は出来たみたいだからそれを使ったのが
>704の下で>785-788です。一応703さんの出来る事は出来る事としてやってもらって、
出来ない事はフォローしよか、という感じでレスしてみたんだけど。
あと、元のHTMLファイル見て無いからROWSPANやCOLSPANでセルがまたがったりしてたら
現物合わせで書きたいけど、見せてくれってわけにもいかないしね。
ほんとはどんなのにも対応できるように作るのがいいんだろうけどね。

ただ、自分が同じ案件抱えたら811さんの方のやり方を取るだろうな。
そっちの方がスマートに実装できると思うし。現物合わせもできるし(w

>828
833さんの方法でたぶん解決すると思う。
で、今後は ツール-オプション-全般-閉じるときに最適化 のチェック
付けておこうね。あとデータが多くなりすぎるってときはテーブルごとに
MBDを分けて普段使うMDBからリンクするとかね。
836名無しさん@そうだ選挙にいこう:02/09/19 13:06
AccessVBAでソフトを作っています。

フォームを開く時に、最大化表示しないように「ポップアップ」を"yes"にしました。
これで最大化にならずにほぼ中央に表示されるようになったのですが、少し上のほうに
出てきて、メッセージボックスの位置とかなり外れたところに出てきてしまいます。

メッセージボックスと同じくらい画面中央に表示させたいのですが、どなたか教えて
いただけないでしょうか。よろしくお願い致します。
837名無しさん@そうだ選挙にいこう:02/09/19 13:10
>>836
VBすれの方にもれすしたが、
DoCmd.MoveSizeを使え
838名無しさん@そうだ選挙にいこう:02/09/19 13:38
>>837
ありがとうございます。

実際に使ってみて、位置を調整しているところです。
この方法を使って、実際に顧客先のパソコンで動かした場合、解像度の違いなどで
位置がずれることはないでしょうか?
839名無しさん@そうだ選挙にいこう:02/09/19 13:43
ズレるよ
APIで解像度の情報を収集して
解像度に合った処理をする必要あり。
840名無しさん@そうだ選挙にいこう:02/09/19 14:03
>>837
ありがとうございました。おかげさまで画面中央に配置することができました。
841名無しさん@そうだ選挙にいこう:02/09/19 14:47
>>839
解像度にあった処理・・・。

やっかいかも・・・。何台か違う種類のPCに入れるようなので・・・。
842名無しさん@そうだ選挙にいこう:02/09/19 14:58
フォーム読み込み時に
DoCmd.MoveSize (Screen.Width - Me.WindowWidth) / 2, (Screen.Height - Me.WindowHeight) / 2
でおけーかと思ったら、AccessってScreen.Widthとかないのね…。
843質問です。:02/09/19 15:31
パラメータクエリで、一つだけレコードを抽出することはできるんですが、
2つとか3つ抽出する方法を教えてくださいです。
>843
それだけじゃ何とも…
845名無しさん@そうだ選挙にいこう:02/09/19 15:45
>>843
WHERE句に
WHERE A='A' or B='B'のように
or で複数の条件つなげれ
846b:02/09/19 16:02
847Mよしみ:02/09/19 16:46
ACCESSのデータをEXCELの表に差し込みできますか?
848名無しさん@そうだ選挙にいこう:02/09/19 17:48
>847
出来る
849???:02/09/19 19:06
報告です。
以前692に書き込んだ問題ですがOfficeSP2を適応後正常に復旧しました。
今まで質問に答えていただきましてありがとうございます。
850名無しさん@そうだ選挙にいこう:02/09/19 19:54
WordやExcelではメニューの[ツール]-[マクロ]-[Visual Basic Editor]から
開けるVBEがAccess97だと[Visual Basic Editor]の項目がなくVBEを
開くことができません。
誰か助けて下さい。
>850
データベースウィンドウのモジュール→新規作成は開くのかい?
あるいは、挿入→クラスモジュールや標準モジュールなど。
852850です:02/09/19 21:07
>851
開くことができました。
どうもありがとうございました。
853もうすぐハタチ・・・鬱:02/09/19 21:51
MSDEにテーブルを作成したのですが
データの追加が出来ません(Ac2000から接続)

MSDEに接続した場合、テーブル直で
サンプルデータの投入とか出来ないのでしょうか?

ロールの設定は
db_ddladminとdb_backpoperatorです。

ストアドプロシージャやADO、DAOでの追加はまだ行っていません。
サンプルデータくらいテーブル直でちょいちょいとやっつけたいので。
>853
主キー張れ
855843:02/09/20 10:34
>>845
今は「氏名を入力してください」というメッセージを出して
氏名をひとつだけ入力できるんです。そしたら、その氏名が抽出されるという
感じです。
>WHERE A='A' or B='B'のように
というのは、新規でクエリーを作成する段階で抽出条件の所に入力
するのですか?
すみません、初心者で・・・。

856845:02/09/20 10:43
>>855
それでも出来るしSQLビューからの入力も出来る
857845:02/09/20 10:51
追加
パラメータクエリだと
WHERE フィールド1=[あああ] or フィールド1=[いいい]
のようになるね。
858789:02/09/20 10:59
す・・・・すみません。
やりたいことは>>823さんのサブクエリーでやれそうなんですが、
質問にまた一つ書き忘れたために詰まってしまっています。

顧客IDごとに最新のを出さないといけないのでした。

集計>グループ とかやってみたのですが、他の項目をどう設定すれば
よいのかわかりません。
たぶん、グループ化の動きを理解できてないので、もう少しヘルプとにらめっ
こしてみます。

(顧客IDごとに合算するのは集計で出来たのですが・・・)

>>824さんの指摘どうり、全部合算する形では巧く出来てる感じなので
どうするか、父と相談してみようと思います。
MAXとか、LASTについても調べてみます。

ありがとうございました。
・・・また質問すると思います。つたない文章でもうしわけありませんが宜しく
お願いいたします。
859tom:02/09/20 11:54
現在Access2000を使っています。
フォームに表示された顧客データを直接そのフォームから別の
テーブルに入れたいのですがそういった事が出来るのでしょうか?
解る人よろしくお願い致します。
860名無しさん@そうだ選挙にいこう:02/09/20 12:30
フォームの閉じるボタンと元に戻すボタンを非表示にした状態でも、
フォームの最大化(DoCmd.Maximize)をすると表示されてしまうのですが、
回避策はありませんか?
861名無しさん@そうだ選挙にいこう:02/09/20 13:11
>>859
フォーム上のボタン押したら実行したいとかいうこと?
862tom:02/09/20 13:16
>>861
はいその通りです。
よろしくお願いします。
863843:02/09/20 13:30
>>856
例えば田中太郎、山田洋子、小川次郎の三人を抽出したい時は
どこに何と入力したらよいのでしょう・・・。
何度もすみません・・・。
864名無しさん@そうだ選挙にいこう:02/09/20 13:40
>>862
フォームに表示してるのはテーブル?クエリ?
抽出条件は?
865名無しさん@そうだ選挙にいこう:02/09/20 13:51
現在開いているフォーム上(テーブルA)の主キーでオートナンバーで振られた "ID" の番号のみ取得して
別に用意したテーブルBへその番号を足し、更に別のテーブルCに結果を更新したいのですが
追加クエリーとかでは、うまく出来ませんでした。

 テーブルA(IDのみ) + テーブルB → テーブルC

テーブルBは更新されては困るので、テーブルAとリレーションの関係を結んでいません。
それと私は、Windows2000PRO + Access2000 を使っています。
優しい先生方々、まだまだ初心者の私に教えてください! よろしくお願いします。
866名無しさん@そうだ選挙にいこう:02/09/20 13:57
>>865
VBAでコード書くか、SQL覚えるかどっちか。
867名無しさん@そうだ選挙にいこう:02/09/20 14:15
>>789(858)
相関サブクエリー(相関副問い合わせ)
を検索しる。
たぶんHELPだけじゃなんともならんと思われ。
868865:02/09/20 14:23
>>866
VBAなら本を見ながらわずかに書けますので、この方法で教えてください。
869b:02/09/20 14:56
>>868 = 865
VBAプロシージャを書けると宣言しといて、処理手順を自分で考える気はないのかな?
871865:02/09/20 16:02
>>870
すみません、VBAを書けると言っても
本の丸写しで、こちらも勉強を始めたほとんど素人な者ですみません・・・
>>865
テーブルは行と列から成るでしょ?だから少なくとも
テーブルAとBとCの関連と粒度(A.ID → B.ID = 1:多とかね)
あと更新したいテーブルCのどの行のなんという列を更新したいかを書いてね
仮にテーブルBとCが1件しかないものだったらそれも書いてね
関連があるのが普通で、1件しかない方が希だから
873865:02/09/20 17:32
>>872
ごめんなさい、書き忘れてました。

テーブルA,B,Cはどれもリレーションの関係を結んでいません。

テーブルAは、現在開いている "ID" 一つに対して
テーブルBは、商品名など複数行に渡っていますが、"ID" のフィールド名を持っていません。
テーブルCは、"ID" と テーブルBの同じフィールド名をすべて持っています。

テーブルBにある複数レコードに、テーブルAの同じ "ID"のみを全て付け足した物を
テーブルCに丸ごとレコードの追加したいです。
お手数をお掛けしますが、よろしくお願いします。
例えば、テーブルBは10件あり、テーブルAに3件挿入されたら
テーブルCは30件挿入されるということですね?

概念的にはこうなると思います(直積といいます)

INSERT INTO テーブルC
SELECT
    テーブルA.ID,
    テーブルB.商品名
FROM  テーブルA,
    テーブルB

ではフォームの挿入後イベントにこうしてください

CurrentDb.Execute "INSERT INTO テーブルC SELECT " _
& ID & " AS ID, テーブルB.商品名 FROM テーブルB"

※IDは今テーブルAに挿入したばかりのIDの値が保存されています

間違ってたらスマソ
>>874
たぶん言ってること違うと思うよ。
ていうか、873はもう少し例を書くとか解りやすくできないのかね。
質問してるくせに、「どう?いってる事わかる?」って煽ってるみたいだよ。

こういうことじゃないの?
テーブルA:ID
テーブルB;商品名、産地、金額・・・
テーブルC:ID、商品名、産地、金額・・・
876865:02/09/20 18:15
>>874
解説、本当にありがとうございます!

> 例えば、テーブルBは10件あり、テーブルAに3件挿入されたら
> テーブルCは30件挿入されるということですね?

結果的にはその通りですが、少しニュアンスが違いまして
単票形式で開いているフォーム(テーブルA)の "ID"を
コマンドボタンを押すと、テーブルBの10件に "ID"が付いた形で
テーブルCが、10件挿入される形です。
−この作業を3回すると、テーブルCに合計30件挿入です。

"ID"ですが、テーブルAで新規とは限らず
単票フォームで任意に開いているページの "ID"を取得したいです。

書いて頂いたイベントプロシージャは、本とヘルプでゆっくり研究しないと
上の話しと合致しているのか、すぐには分からないです。
(勉強がまだまだで、すみません・・・)

もし違ってましたら、ごめんなさい
もう少しアドバイスをください。
よろしくお願いします。
877865:02/09/20 18:19
>>875
皆様に教えて頂いているのに、説明が下手で申し訳ありません。
それと挙げていただいた例は、そうです!そんな感じです。
お手を煩わせて、すみません・・・
>>860ですが無理でしょうか。
催促ウザいのは分かってます、申し訳ない。
879名無しさん@そうだ選挙にいこう:02/09/20 21:50
>>860
素人だけど、元に戻すボタンの設定ってあるの?
閉じるボタンをいいえに設定してDoCmd.Maximizeしても閉じるボタンは出てない。
(Access2000修正は全部入れてる)
880860=878:02/09/20 23:22
>>879
ありがとうございます。
Access97SR入りで使ってます。
元に戻すボタンは制御できませんね。すみません。
閉じる、最大化最小化ボタンや、コントロールボックス自体いいえにしても
最大化された時点で、右上に、元に戻すと閉じるボタンが出ます。
元に戻す押して、戻すと消えます。
うーん・・・
881次スレテンプレ募集:02/09/21 00:55
そろそろ冒頭の謳い文句を変更したほうがいいと思うのだが。
1.質問、相談投稿者への明記事項
・OSの種類 & サービスパックの有無
・Accessのバージョン & サービスバックの有無
・現状説明(公開して差し支えない範囲で詳しく)
・テーブル構造、クエリ/SQLなどの内容の添付
・フォーム、レポートの構造を添付
・何を聞きたいのか(これが不明なケースがある)

2.NGキーワード
・初心者です(だから、どうした?)
・おかしいです(頭の中でもおかしいのか?)

自分が書くとまわりくどいので、簡潔にまとめて頂きたいのですが。
誰かおられません?
882名無しさん@そうだ選挙にいこう:02/09/21 00:59
>>854
ありがとうございます!出来ました!

セキュリティ設定がむずい・・・がんばります
883名無しさん@そうだ選挙にいこう:02/09/21 01:03
>>881
お前、いつも簡単な質問にだけ
えらそうに答えてるヤツだろ?
お前も初心者じゃん。

VBA覚えてプログラマ気分ですか?(プ
884名無しさん@そうだ選挙にいこう:02/09/21 01:15
>>881
賛成です

>>883
それって、きっとボクのことだよ
質問に考えることで、勉強になるんだ
885名無しさん@そうだ選挙にいこう:02/09/21 01:24
別に初心者が来てもいいと思うけどなぁ
>>883
何を聞きたいのかヨクワカラン質問に平気で的外れな怪答するヤシがいるよな。
んで何度も何度も質問内容確認してやがるの。もうバカかと。
そんな書き込みばっかりじゃん、このスレ。

と、煽りに乗ってみたり(藁
887名無しさん@そうだ選挙にいこう:02/09/21 01:50
>>886
>何を聞きたいのかヨクワカラン質問に平気で的外れな怪答するヤシがいるよな。
たとえばどのレス?
(反発したいのではなく参考にしたいから、是非教えて下さい)
>>886
否定はせんがな。。
そこでキビシイ突っ込み入れるのが、
お前の役目だろ(w
889名無しさん@そうだ選挙にいこう:02/09/21 11:27
EXCELでは「WEBクエリー」で、ウェブ上のテーブルからデータをインポートできますが、
同様のことをACCESSで行うのは可能なのでしょうか?
やっぱり、一旦EXCELでCSVに取り込んでおいてから、ACCESSひ取り込むのがベストなのでしょうか?
890ひまじん:02/09/21 12:06
ひ?
>889 インポートのとこのファイルの種類よく見てみ。
892名無しさん@そうだ選挙にいこう:02/09/21 21:34
フォームからボタンを押すことで、そのレコードだけをwordに送って
自動で差し込み印刷するようにしたいのですが、
どうやればいいのでしょうか?
>>892
Word側のヘルプ見れ。
キーワードの検索「差し込み印刷, データ ソース」
894名無しさん@そうだ選挙にいこう:02/09/22 00:56
>>892
レポートで出せばいいのでは・・・
895名無しさん@そうだ選挙にいこう:02/09/22 18:59
先日、MOUS試験に満点で合格しました(MicroSoftの資格試験)

めちゃめちゃ簡単でした。
上級もあればいいのにね。
>>895
ここに日記書くな。
簡単なのは誰でも知ってる。
897名無しさん@そうだ選挙にいこう:02/09/22 20:46
CDのデータベースを作りたいんですけど、
収録時間の表示を「74:56」のようにするには
どうすればいいのでしょうか。by Access2000
(1時間を越える表示も「分」で表示したい)

Excelだと[mm]:ssのように、[ ]で囲めば
出来たと思いますが、Accessの日付・時間型
では、それが無理そうなのですが……

どなたかご教授下さい。よろしくお願いします。
>897
日付型ってのは時間の長さではなく、時刻を表す型だから、
その用途には向いてないYO
自分なら時間の長さは文字として格納するか、
秒で換算した数値を長整数型で持ちますが
899 :02/09/22 21:00
>CDのデータベースを作りたいんですけど、
>収録時間の表示を「74:56」のようにするには
>どうすればいいのでしょうか。
まったく意味不明。74:56でDBに格納したいのか?
>データベースを作りたい>表示を
どう関係あるの?
どこかに頭打ちましたか?
電波発生警報
>>897
ぐぐってみなよ。すぐ引っかかるよ。
902897:02/09/22 21:36
>>898さん
言われて納得できました。
時刻と、時間の長さの意味の違い。

収録時間の計算もしたいので、秒換算
したものを長整数型で作ってみます。

ありがとうございました。(^^)
テーブルの「品名」フィールドから検索するフォームを作りたいのですが、
「犬」と入力して「犬」「子犬」「犬丸りん」などが全部引っかかるようにするには
SQLのWHERE句に何と入力すれば良いのでしょうか。
WHERE 品目='犬'
     ~~~~~~~~~~この部分が分かりません。

あと、Googleみたいにスペースで区切った単語を全部引っかかるように
するにはどうしたら良いのでしょう。こちらは見当もつきません。。。
Like *犬*

XX +YY
usodesu
906903:02/09/22 22:58
>>904
レスありがとう。
上は分かりました。LIKEなんてあるんですね。
ヘルプ見たら詳しく書いてました。
下が分からないっす…XX + YY?
907903:02/09/22 22:58
uso?
Or
909903:02/09/22 23:13
はぁ、ちょっとひらめいて分かってきました。
スペースまでの文字を取得して「Like *」、「 Or 」などを&で繋げば良いのですね。
ありがとうございました!
910名無しさん@そうだ選挙にいこう:02/09/23 00:09
質問者のがレベル高いな。ココ。
荒れるので煽りは心の中でおながいします。
912名無しさん@そうだ選挙にいこう:02/09/23 00:45
WindowsXPとAccess2000で「ASP実践プログラミング入門」を
見ながら練習しているのですが、
Access2000のアップサイジングウィザードで、mdbをMSDEに変換しようとすると、
次のようなメッセージが出ます。

   一時的な作業用データベースを作成することができませんでした。
   このハードディスクには、使用されていないと思われる以前の
   一時的な作業用データベースがあります。
   これらの古いデータベースを削除し、もう一度試しますか?

そして再試行を何度押しても、同じことの繰り返しです。
キャンセルを押すと、次のメッセージが出てウィザードは終わってしまいます。

   一時的な作業用データベースを作成できません。
   アップサイジングウィザードは終了します。

ハードディスクを調べても一時作業ファイルは残っていないのですが、
どうすればウィザードが正常に働くのでしょうか。

なお、上のほうでも同じような質問が出ていますが、私は634ではありません。
(´-`).。oO(質問者のDQNレベルは板内1,2位を争うカモナー)
914名無しさん@そうだ選挙にいこう:02/09/23 00:50
>>912
MSDEの再インストールなどはどうでしょう?
稼動してるサービスがあれば無理ですが・・・

>>913
お前ほどではないよ
915912:02/09/23 02:06
>>914
MSDEとAccess2000を一度削除してからインストールしなおして、
再度アップサイジングウィザードを試しましたが結果は同じでした。
>>914
安直に再インストール勧めちゃっていいのか・・・?
MSDEにログインするユーザの権限の見直し
MSDE内テンポラリデータベースの残骸有無
ウィザードが使用するHDDの空き容量
などの線から確認作業を行うのが先決と思うがどうよ?

> お前ほどではないよ
「放置」できない性格なのか?
一時的な作業用データベースって、ldbファイルのことなんじゃないの?
918名無しさん@そうだ選挙にいこう:02/09/23 14:13
年月日入力用のコンボボックスに、入力日から5日分くらいの年月日を
列挙する方法をお教えください。
919名無しさん@そうだ選挙にいこう:02/09/23 14:22
>>917
プ
>919
なんだよ!ヽ(`Д´)ノ
>918
そんくらいヘルプ見て自力でやれ!バカ!(゚д゚)あふぉっ!
ヽ(`Д´)ノウワァァァン
>>918
Now。
924名無しさん@そうだ選挙にいこう:02/09/24 00:17
>>918
動作未検証、たぶん動くと思う。

Dim i&
Dm strdate$
For i&=0 To 4
strdate$=Cstr(Dateadd("d",i&,Date))
combo1.Additem strdate$
Next i&
925フォームの親子リンクって・・・?:02/09/24 00:56
既出だったらごめんなさい。
単票フォームAに、2枚の帳票フォーム、A_1、A_2を貼り付けたとします。
Aにはたとえば、ユニークな伝票ナンバーみたいなもの
A_1には買い上げ明細、A_2には支払い明細、みたいなものが入っていると
します。
AとA_1、AとA_2は、伝票ナンバーで親子リンクが結ぶことができ、
ひとつの伝票ナンバーに対応する、買い上げ明細と支払い明細を、
見かけ1枚のフォーム上に表示させることが出来ます
でも、A_1、A_2それぞれのレコードソースクエリで、抽出条件を
Forms![A]![伝票ナンバー] としてしまえば、親子リンクを結ばなくても
まったく同じことができますよね。
1)親子リンクを結び、なおかつサブ側に抽出条件を付ける。
2)親子リンクだけ結ぶ
3)サブ側に抽出条件だけ付ける
どれがいいのか、あるいはどれでもいいのか、よく分かりません。
ためしに、10000件のメインフォームA、50000件のサブA_1、50000件のサブA_2
で実験してみたんですが、ちょっと意外な結果になりました。
環境はWin95、Ac2000、RAM96MB、Pen250MHz(ショボくてすみません)
正確に計ったわけではありませんが、表示されるまでに要した時間は1)2)が15〜17秒、
3)が8〜9秒。
抽出条件だけのほうが圧倒的に速いんです。
ここまではっきり差が出る以上、3)で行きたいと考えているんですが、
そんなんで大丈夫なんでしょうか(ちなみに当方まるっきりのど素人です)
>>925
3)の場合は
1. フォームのリンクを使わない場合は、フォームA_1, A_2に入力する場合に
自動で伝票ナンバーが入らない。
(規定値を=[Forms]![A]![伝票ナンバー]に変えちゃえば問題ないと思う)
2. mdbからMSDEに移行する場合はForms![A]![伝票ナンバー]をSQLに含めることが出来ないためそのままは使えない

くらいしか心当たりがないなあ。2.は2)についても当てはまるけど。
mdbだけでやるならばなんら問題ありません。
927Mよしみ:02/09/24 13:54
>>848さんへ
どうすれば出来るか教えて下さい!
お願いします。
928848:02/09/24 14:23
一部ExcelのVBAを使え
929848:02/09/24 14:26
>>927
VBAはAccess側で使ってな
930名無しさん@そうだ選挙にいこう:02/09/24 15:31
adpファイルでCSV形式のデータをインポートするインポート定義を作成したいのですが、
「保存」の部分が実行不可の状態で、インポート定義を作成することができません。

何が原因でしょうか・・・。どなたかご教授ください。
よろしくお願いします。
931名無しさん@そうだ選挙にいこう:02/09/24 17:44
質問です。WIN2000でACCESSはXPです。
右クリックからAccessアプリケーションファイルの新規作成を
行なったのですが、そのファイルのプロパティの会社名欄に
RAD test team − http://wtsoffweb
とよくわからないことが書いてありました。意味ありますか??
>930
結局、その辺の定義はシステムテーブルとしてローカルのAccessファイルに
保存するわけだから、データをDB鯖に持つadpでは保存できない
中間テーブルを使ってコードで編集するしかないでしょう
>>924
ありがとうございます。さっそく試してみます。

>>921
ありがとうございます。さっそく試してみます。
934925:02/09/24 23:02
>>926
アドバイス感謝します
入力に関しては別な形で行っているので、自動入力は出来なくても
不都合はありません。
つまりこれは後からの参照閲覧用でして。
ただの閲覧参照なら、サブフォームではなくリストボックスでもいけ
そうなもので、実際はじめはそんなふうにつくってみたのですが、
リストボックスだといろいろ融通の利かない部分があるようなので、仕方なく。
閲覧参照はけっこう頻繁に行われるのですが、親子関係が結ばれることが
当たり前みたいなフォームどうしで、あえてそれを結ばずに使い続けると、
何かこう機械に不自然な負担でもかかりはしないかと、心配になって質問した
しだいです(途中でフリーズでもされるとかなりえらいことになるので)

MSDEへの以降は今のところ考えていません。いちど検討しかけたこともあるん
ですが、正直私には難しすぎます。
レコード数は、履歴テーブルのいちばん多いところで10万件弱といったところ
を上限とするので、MDBで充分かなと考えています。
935924:02/09/25 00:13
AccessのコンボボックスにはAddItem使えないの知らなかった…
ごめんなさい
AddItemでなくRowSourceの設定でやってみて
>918
コンボの値集合タイプを値リストにしておいて、フォームのLoadイベントあたりで、
Dim i As Integer
For i = 0 To 4
Me.cmb1.RowSource = Me.cmb1.RowSource & Format(DateAdd("d", i , Date), "yyyy/mm/dd") & ";"
Next

>935がなんか良い人に見えたので、フォローです。
937名無しさん@お腹いっぱい:02/09/25 10:24
どなたか教えて下さい。
或る項目にデータが入力されていたら - A処理へ。
データがない時は - B処理へ。
と、したい場合、データが無い時はどのように記述したらいいので
しようか。 Nullでは無視されるのですが。
よろしくお願い致します。
938名無しさん@そうだ選挙にいこう:02/09/25 11:04

If IsNull(Me![テキスト0]) Then
My_case = 1
Else: My_case = 2
End If
939名無しさん@お腹いっぱい:02/09/25 11:09
938の方
早速のご回答ありがとうございました。
937
940名無しさん@そうだ選挙にいこう:02/09/25 11:51
フォーム1からフォーム2のリストボックスにデータを入れたいのですが、

  Dim refListBox As ListBox
  Set refListBox = Forms![frm1]![lst1]
  refListBox.Column(0, 0) = "あああ"

としても、参照はうまく行っているみたいなのに、代入する時点で
オブジェクトが必要です、とエラーが出ます。
何が駄目なのでしょうか。
941940:02/09/25 12:37
というかColumnプロパティが読み取り専用でした…。
スレ汚しすみません。
942名無しさん@そうだ選挙にいこう:02/09/25 13:20
>>932
アドバイスありがとうございました。

「中間テーブルを使ってコードで編集する」というのがいまいちよく分からない
のですが・・・。
943名無しさん@そうだ選挙にいこう:02/09/25 15:02
質問です。 SQL Server で Access2000を使っています。

実行ボタンをクリックすると、CSV形式のデータシートからデータを取り込み、
テーブルに保存できるようにしているのですが、以下のプログラムの*1(*2も同様)
印のところで

「実行時エラー'7874'」
「オブジェクト'S60_csv_import_普通科A方式_削除'が見つかりませんでした。」

というエラーが出てきます。
ですが、その前に「ストアドプロシージャは実行されました」というメッセージは出てきます。

確かにストアドプロシージャは存在し、正しく実行できることも確認できているのですが
なぜ見つからないのでしょうか・・・。
よろしくお願い致します。

*****************************************************************************************************
Private Sub 実行_Click()
If MsgBox("取込んでもいいですか?", vbOKCancel) = vbOK Then
*1 DoCmd.OpenStoredProcedure "S60_csv_import_普通科A方式_削除"
DoCmd.TransferText acImportDelim, "", "T00_csv_import_普通科A方式", "C:\A1600\普通科一般A方式.csv"
*2 DoCmd.OpenStoredProcedure "S61_csv_import_普通科A方式_追加"
MsgBox ("正常に終了しました。")
End If
End Sub
****************************************************************************************************
944yahooo!!アダルト:02/09/25 15:16
945名無しさん@そうだ選挙にいこう:02/09/25 19:13
すみません、質問おながいします。
Access初めてのVB厨で、グリッドが無いので行き着いたのがサブフォームなんですが、
このサブフォームの「レコードセレクタ部分をクリックした時」の処理は
どこに書いたら良いのでしょうか。
イベントがEnterとExitしか無いみたいですが・・・。
もしかして無理なんですか?
>942
csvインポート機能を使えば、定義は指定できないけども、とりあえずデフォルトの
テーブルデザインでインポート自体はできる。これが中間テーブル。
で、さらにもう一つテーブルを用意して、中間テーブルのデータ型なりバイト長なりを
編集しながら新しいテーブルにデータを移す。ってことです

私ならVBAでやりますので、コードで、と書きました。


947名無しさん@そうだ選挙にいこう:02/09/25 20:16
>942さんの質問を見て、質問したくなりました。
MSDE + Access2000のadpです。
自分は、Line Inputで一行ずつ読みながらインポートと同じことをしています。
この方法だとクライアントから実行した場合に、全てのデータがネットワークを
流れるために効率が良くありません。
出来ればサーバー内で処理したいと思います。
ストアドでインポートする方法か、ストアドでテキストを一行づつ読み込む方法は
ありませんか?
宜しくお願いします。
>>947
BULK INSERT
949947:02/09/25 20:55
>>948
どうも有り難うございます。
なんてバカなことをやってたのかと、反省しております。
┌─────────────────────────┐
│☆☆☆☆☆☆☆―おいらの胸の心の愛 ―☆☆☆☆☆☆☆│
│☆    ┏━┓┏┳┓      ┏┳━━━┳━┓┏┓    ☆│
│☆    ┣━┫┃┃┣┳━━┛┣━┳┓┣━┛┃┃    ☆│
│☆    ┗━┛┣╋┛┗┳┓┏┛  ┃┣┛    ┃┃    ☆│
│☆    ┏━━┛┣┓┣┛┃┃┏━┛┃┏━━┛┃    ☆│
│☆    ┗━━━┛┗┛  ┗┛┗━━┛┗━━━┛    ☆│
│☆       ┏┳┓┏┳┓    ┏┳━━┳┳┓         ☆│
│☆       ┃┃┣┛  ┗┳━┛┃ ━ ┃┃┃         ☆│
│☆       ┃┃┣┓┃┏┻┓┏┫┏┓┃┃┃         ☆│
│☆       ┗┫┃┗┫┃  ┃┃┗┛┃┃┃┗┓       ☆│
│☆         ┗┛  ┗┛  ┗┛    ┗┻┻━┛       ☆│
│☆                             ▼▼▼▼   ☆│
│☆    本日 PM 3:00 開演   場所 空地      ・__・    ☆│
│☆             来ないやつは殺す    〇      ☆│
│☆                            3      .☆│
│☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆│
└─────────────────────────┘
951名無しさん@そうだ選挙にいこう:02/09/26 01:55
>>945
サブフォームのソースオブジェクトに設定したフォーム(多分データシートでしょ)の
イベントに書けばいいんじゃない?たとえばCurrent。
952名無しさん@そうだ選挙にいこう:02/09/26 09:40
教えてください。
コマンドボタンをクリックした時に、
「ファイルを開く」ダイアログボックスを表示させたいのですが、
どのようにしたらよろしいのでしょうか?
よろしくお願いします。
>>952
そんなあなたはツールボタンの魔法の杖(コントロールウィザード)を
押下しとけば幸せに…
954初心者001号:02/09/26 11:31
教えてください。
フォームを開く時、最大化にするモジュールってどのように
したら宜しいのでしょうか?
955952:02/09/26 11:54
APIでできました。
953様ありがとうございました

>>954
Private Sub Form_Load()
DoCmd.Maximize
End Sub

↑これでいいかな?
956初心者001号:02/09/26 12:09
952さんありがとうございました。
所で、みなさんの職業は?
ちなみにわたしは、倉庫屋さん系電算の人ですけど
957ページ移動ボタン:02/09/26 13:05
単票フォームでページ移動ボタンをつくったんですが
(一気に10ページとか100ページ飛べるやつ)

On Error Resume Next
dim 飛ぶ回数 as long
if [後ろ残りいくつ]>10 then
For 飛ぶ回数=1 to 10
DoCmd.GoToRecord , , acNext
Next 飛ぶ回数
else
For 飛ぶ回数=1 to [後ろ残りいくつ]-1
DoCmd.GoToRecord , , acNext
Next 飛ぶ回数
end if

このやり方だと、パラパラっとした飛び方になって何だかまどろっこしい。
何ていうか、100ページ前とか1000ページ後ろに「直行できる」書き方って
ありますか?
958ページ移動ボタン :02/09/26 13:26
↑書き忘れました
連番がついているようなフィールドはナシ
主キーは歯抜けのオートナンバーなので、使いものになりません
>>957
Help見れ。
GoToRecordの引数にoffsetパラメータがあるよ。
960名無しさん@そうだ選挙にいこう:02/09/26 15:24
961名無しさん@そうだ選挙にいこう:02/09/26 15:26
>>957
参考に・・・
Sub move10()
Me.Recordset.Move 10
If Me.Recordset.EOF Then Me.Recordset.MoveLast
End Sub

後はヘルプ見ろ。DAOの参照設定しておけ。

962名無しさん@そうだ選挙にいこう:02/09/26 20:11
教えて下さい。ウィンドウズ98SEで、
アクセス2002を使ってます。

以下の二つのテーブルから、

商品テーブル
 商品番号
 商品名

入荷品テーブル
 入荷番号
 商品番号
 入荷数

商品毎の入荷数の合計を見る為に商品番号で
リレーションさせて、以下のクエリを作りました。

入荷数合計クエリ
 商品番号
 入荷数の合計

しかし、商品テーブルに登録されているが、
入荷が一つもないレコードも、入荷数合計0として
表示して欲しいのですが、出てくれません。

結合プロパティで商品テーブルの全レコードと、
入荷品テーブルの同じ結合フィールドのレコード
だけを表示するをチェックしたりしましたが、やっぱり
表示されません。

何が間違ってますでしょうか?
963名無しさん@そうだ選挙にいこう:02/09/26 20:25
今度マウス受けるんですが、
ただで手に入る模擬試験ソフトってないですかね?
964名無しさん@そうだ選挙にいこう:02/09/26 22:22
>>963
立ち読みで充分
>962
SQLビューにして、出てきたSQL文をここに貼ってみて
>>962
入荷数の合計 :入荷数となってるでしょ
そこに
入荷数の合計 :IIf(IsNull(Sum([入荷数])),0,Sum([入荷数]))と書き換えて
集計の欄の「合計」を「演算」換えてみそ
クエリの作成ビュー(?)や実行ビュー(?)、SQLビュー(?)への
切り替えのショートカットキーは無いのですか?
マウスで切り替えるの飽きますた。
一発切り替えじゃないけど、

Alt + V

S (データシート)
D (デザイン)
Q (SQL)

って感じで左手に滲み込ませておくべし
969957:02/09/27 00:22
あれれ、という感じ
HelpでGoToRecordを検索するだけでよかったんですね(一発じゃん!)
何だかお馬鹿なことをやったもんだと思います
じっさい書きながら思ってはいたんですよ。絶対こんなの変だよな〜
ループってホントはこんなときに使うもんじゃねえよな〜って

>>Me.Recordset.Move ・・・
このやり方、何となくカッコいいです。Recordsetって言葉は、
いまだに見るとドキドキします。素っ裸でVBAの荒野に放り出された気分
970961:02/09/27 00:26
>>969
レス読むとVBA使ってるように思えるんだけど・・・
RecordCountとか使ってないの?
971962:02/09/27 00:26
>>966
出来ました!ありがとう!なるほど、nullには
要注意か、、。

>>965
ありがとう。例のテーブルより本当はもっと
複雑だったので、貼るのは困難でした。
972名無しさん@そうだ選挙にいこう:02/09/27 00:54
クエリを作っていると、

「集計関数の一部として指定された式〜〜〜〜を
含んでいないクエリを実行しようとしました。」

とエラーが出て、意味が分からないのでヘルプを
見たら英文で余計分かりません。私は何回読んでも
サッパリ意味が分からないのですが、何故怒られ
てるんでしょうか?
973名無しさん@そうだ選挙にいこう:02/09/27 00:57
>>972
それはおまえがちゃんとした質問もでききないダメな奴だから!!
せめてクエリのSQLでも貼ってみろ。
974957:02/09/27 02:04
>>970
VBAってのは、使わないこともないですけど、マクロを変換しただけ
のレベルに毛がはえた程度です。
Recordsetという言葉は、まだ2、3度どしか使ったことがありません。
Access始めて2年ちょっとですけど、クエリ信者だった時期が長く(いまでも
まだそう)、クエリだけじゃやっぱりきびしいかな〜みたいなとき
仕方なくという感じで。

RecordCountって言葉は初めてです

全部でいくつ=Count(*) ←ネット上で拾ってきた書き方です
いま何番目=CurrentRecord ←同じくネット上で・・・
後ろ残りいくつ=[全部でいくつ]-[いま何番目]

この3つのテキストボックスをフォームに貼り付け、For〜nextで
パラパラ飛ばしてました。

オオーっと、いろいろやっているうちにいつのまにか2時になってしまったぞ。
VBAどっぷりのスリリングな夜(このレベルでも刺激を楽しめる程度の未熟者です)
ありがとうございました。

では、おやすみなさい
975970:02/09/27 02:34
>>974
フォームでレコードセレクタ使っててちょっとVBA書くなら
me.recordset.recordcount とか me.recordset.bookmark とか
使うと便利だよ。(ヘルプ参照)
あと me.recordsetclone とかも使うとフォームで表示してるのとは
違う事ができる。
976名無しさん@そうだ選挙にいこう:02/09/27 09:37
教えてください。
コマンドボタンをクリックした時にハイパーリンクでJPGファイルを
開くようにしたのですが、Internet Explorerで開いてしまいます...
Photoshopなどの別のビューアで開くようにするにはどのようにしたらよろしいのでしょうか?

フォルダオプションで拡張子JPGをPhotoshopに関連付けてもInternet Explorerで開いてしまいます。
(ただしエクスプローラからJPGファイルをダブルクリックした場合はちゃんとPhotshopで開かれます)

よろしくお願いします。
>>976
ハイパーリンクって何のことかわかってる? URLじゃなくてファイルに
リンクしてるんだろうけど、デフォルトブラウザが開くのは当たり前。

何のためにそんなボタンを作ったのか書いてくれると嬉しいんだが。
978名無しさん@そうだ選挙にいこう:02/09/27 12:06
>>976
shell関数使え。
979名無しさん@そうだ選挙にいこう:02/09/27 13:22
コンボボックス(cboData)の値を
  コード | データ
  01   | ごはん
  02   | パン
  03   | 紙粘土
という風に2列にしていて、
列幅を「0cm;10cm」、連結列を「1」にしています。

ここに
cboData.Value = "あああ"
としても、1列目を0cmにしていると表示されないようです。
これの2列目のValueにデータを入れるにはどうしたら良いのでしょうか。
980初心者001号:02/09/27 16:50
質問ですが、
エクセルを開かずに、指定されたセルにデータを打ち込む
モジュールを教えて下さい。
981名無しさん@そうだ選挙にいこう:02/09/27 17:40
>>980
アプリケーションを表面に出さないことは可能だが
ファイルを開かずに更新する事は不可能では?
それともAccessでExcelを起動させてファイルを更新させたいのかな?
982981:02/09/27 18:22
追加
表面にアプリケーションを出さずにバックグラウンドでファイルを開いて
更新しセーブする事は可能
983初心者001号:02/09/27 18:28
>>980
質問詳細の不足でごめんなさい。
以下の様なモジュールで組むと

With woObjExcel
.Parent.Workbooks.Open FileName:=msUserPath
.Workbooks.Application.Visible = True
.Workbooks.Application.ActiveWindow.Activate

所定のセルへの書き込みは可能ですが、アプリケーションが表面
に出てしまいます。
表面に出さない様にしたいのです。
中々、わからずに困っています。
984981:02/09/27 19:06
>>983
これで出来るよ

With woObjExcel
.Parent.Workbooks.Open FileName:=msUserPath
.Workbooks.Application.Visible = False '----------ここ True → False
.Workbooks.Application.ActiveWindow.Activate
'-------書き込み処理
.ActiveWorkbook.Save '---------------セーブ処理
.Quit'-------------------------------アプリケーション終了
985Tommy:02/09/28 01:40
Access2000で在庫管理システムの在庫表を作成しています。
今まで通貨型の数値をInt関数で小数点以下を切り捨てていたのですが、
変更になり、切上げにしたいのですが、ヘルプを探すとROUNDUP関数が
出てきたのですが、その関数を使えば良いのでしょうか。
またROUNDUP関数で良いとしたら、どうしたら使えるようになる
のでしょうか。IntをROUNDUPに上書きすると次のようなメッセージが
表示されてしまいます。「式に未定義関数'ROUNDUP'があります。」
モジュールのデザイン画面から[ツール]−[参照設定]を選択して開かれる
参照可能なライブラリファイルのどれかにチェックを入れなければ
いけないのでしょうか。参考まで、現在は上から順に下記にチェック
が入っています。

・Visual Basic For Applications
・Microsoft Access 9.0 Object Library
・Microsoft DAO 3.6 Object Library
・OLE Automation
・Microsoft Visual Basic For Applications Extensibility 5.3

どなたか解かる方いらっしゃいましたら、教えていただけないでしょうか。
どうぞ宜しくお願い致します。
986名無しさん@そうだ選挙にいこう:02/09/28 04:08
>>985
=Int([数値]+0.9)
これで切り上げにならない?

ちなみに、負の値でもちゃんとやりたかったら
=Fix([数値]+0.9)
これで可能かと・・・
987名無しさん@そうだ選挙にいこう:02/09/28 05:30
988御堂 静 ◆DHA/tpPY :02/09/28 08:49
もう少しで1000ですね!

とこでエクセルの質問は勘弁して!

>>985
RAUNDOUPという関数は使ったことが無いのでわかりませんが、RAUNDOなら使えるんじゃないですか?
RAUNNDO で切り上げる場合には、0.5を足して四捨五入をすればよいです。
989名無しさん@そうだ選挙にいこう:02/09/28 09:02
SQLサーバーとつないで、やっている人いますか?

年末に向けてスキルアップを図ろうと思います。
苦労話などお聞かせいただけませんか...
990HOKUTO:02/09/28 09:08
>>988
ROUND 関数は、算術四捨五入ではなくて銀行型四捨五入だから注意。
銀行型四捨五入は 5 の切り上げ/切捨てが偶数/奇数で交互に入れ替わる。

ROUND(0.5)→0
ROUND(1.5)→2
ROUND(2.5)→2
ROUND(3.5)→4
991HOKUTO:02/09/28 09:15
992名無しさん@そうだ選挙にいこう:02/09/28 09:29
うそー!
知らなんだ。試してみよーッと
>985
ここ読んどけ。
「丸めを行うカスタム プロシージャを実装する方法」
http://support.microsoft.com/default.aspx?scid=kb;ja;JP196652
994名無しさん@そうだ選挙にいこう:02/09/28 09:39
>>991
ありがとうございました。
995初心者001号:02/09/28 10:48
>>984さん
ありがとうございます。
成功しました。
996名無しさん@そうだ選挙にいこう:02/09/28 10:56
次スレを建ててください
997名無しさん@そうだ選挙にいこう:02/09/28 12:04
長く続いてほしいので
次スレ、たててきますた。

http://pc.2ch.net/test/read.cgi/bsoft/1033182163/
では私目が
999名無しさん@そうだ選挙にいこう:02/09/28 13:11
余裕で999もろた
1000名無しさん@そうだ選挙にいこう:02/09/28 13:11
余裕で1000もろた
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。