1 :
名無しさん@そうだ選挙にいこう :
2009/08/26(水) 23:39:38 ACCESSに関する質問はこちらへ! ▼━ 質問のしかた ━━━━━━━━━━━━━━━━━━━━ ★ OS、ACCESSのバージョンを明記してください。 ★ 質問内容は具体的に書いてください。 ・何がしたいのか ・どんな処理を試したか ・動作状況など駄目な理由 テーブル/フォームの構成、クエリ、VBAの内容など差し支えない 範囲で詳しく書くと、早く回答が得られるかもしれません。 図解があれば尚良し。 聞き返さなくても詳細が把握できる質問が望ましいです。 ★ 事前にヘルプ・Google等で調べられる範囲は調べてください。 大概の疑問は検索することで解決します。 ★ アドバイスを貰ったら、必ず経過・結果の報告をして下さい。 ギブアンドテイクで情報を共有しましょう。
5 :
名無しさん@そうだ選挙にいこう :2009/08/27(木) 00:24:06
桐にしとけ
6 :
名無しさん@そうだ選挙にいこう :2009/08/27(木) 00:24:48
7 :
名無しさん@そうだ選挙にいこう :2009/08/28(金) 22:43:14
FAQ Q1) 桐って何ですか? A1) このスレで質問されるような事が何でも簡単に出来ちゃう魔法のソフトです。開発期間も1/5で済みますが、アクセスより高価です。 エグゼクティブは桐でさっさと仕事済ませて、空いた時間はホテルのプールでリフレッシュします。 貧乏人はAccessで必死に頑張ります。
>>7 Accessでさっさと仕事を済ませて、空いた時間はギターを引いてリフレッシュ
している俺は、じゃぁ、なんなんですか?
30歳で貯金は2千万円あります。今日の夕飯は、うまい輪一袋とミックスフルーツ100
です
なかなか遣るなぁ おれ30歳時点でその3倍、今じゃ毎晩レモンサワー飲んでる スイスの銀行紹介してやろうか? ジュリアスベアーとかピクテとか
トンスル飲んで寝ろ。
42歳で時給900円。 ヒロポンやって昼勤夜勤3連続中(ヒロポンは嘘)。 Access初心者、元桐講師(マジで)。
12 :
9 :2009/08/29(土) 21:18:41
>>11 同い年
時給換算50万円
国(国税局)相手に行政訴訟(税金裁判)で本業そっちのけの此の頃
Accessも桐も趣味で弄ってる
そろそろアーリーリタイアメント、エーゲ―海にヨット浮かべて美女はべらせて過ごす予定(カリブ海行ったら黒人女ばっかりだった)
>>12 ふーん。似たもの同士だね!
俺も現場じゃゴリマッチョばっかり。
間違えた、時給換算5万だ どうでも良いが、最近面白い事ない
ひと月に1時間しか働いてないの?
時給「換算」と書いてあるだろ。 30分だぉ。
だいたい200時間/月 くらい働いてる、もう嫌だ
19 :
名無しさん@そうだ選挙にいこう :2009/09/08(火) 10:03:47
pu
クエリのデザインビューとかに出てくる[テーブルの表示]ダイアログボックスって、 幅変えられませんよね? 長い名前のクエリをたくさんつくっているのだが、表示される幅の文字が同じで 区別がつかん...orz
22 :
20 :2009/09/10(木) 06:33:32
>>21 え、変更できるんですか?
ツール(T)→オプション(O)では、それらしい設定は見つかりませんが?
23 :
20 :2009/09/10(木) 21:05:54
>>21 フリーソフトだったんですね。ありがとうございますm(__)m
使えそうです。助かりました。
今OpenOfficeBaseを使ってるんですがAccessもそのうち買おうと思ってます。 そこでBaseで作ったデータをAccessで引き継いで使う事が可能なのかどうか気になってるんですが、実際どうなんでしょう。
>>24 OOOスレで聞いたほうが早いと思うが、俺なら過大な期待はしないよ。
テーブルをcsvにエクスポートして、Accessに文字化けなしでインポートできれば御の字。
>>24 OpenOffice.org Baseなんて、データベースのまがい物は使わないほうがいい。
あんな出来損ない、フリーでも使いたくない代物だ。
最初から、Access, FileMaker, 桐にしておけ。
で、データベース格納場所は切り離しておき、できれば、MySQLかPostgreSQLを
使い、ODBC接続としておく。Access2007は最適化すると、データベースが消滅する
バグがあるから、注意が必要だ。
楽しい、データベースライフを!
27 :
24 :2009/09/13(日) 14:45:14
OOOスレで聞いてみました。 Baseはアクセスを完全に超えたらしいのでこれからもBaseを使い続けたいと思います 本当にありがとうございました。
27は偽者です。
>>25-26 ありがとうございます。
うーん、出来るだけ早めに乗り換えた方がいいんですかね。
データベースソフトはBaseしか使った事がないので正直何がそんなに違うのかイマイチ理解してないんですが・・・。
あれっ、前スレ終わったん?
31 :
名無しさん@そうだ選挙にいこう :2009/09/13(日) 20:17:40
【 システム環境 . 】 Windows?, Access2003 【 VBAが使えるか .】 いいえ 【 VBAでの回答 】 否 会社のイントラネット内で使用するデータページを作っています。 データページはなんとか作成したのですが、使用する人たち(PCに詳しくない人たち)から 保存したときに何かわかるようにできないかと言われました。 普通のフォームではダイアログボックスを出すことができるようですが、 データページでも可能なのでしょうか? データページについては書籍もネットもぜんぜん見つからず困っています。 できないとわかるだけでもありがたいです。 よろしくお願いします。
32 :
名無しさん@そうだ選挙にいこう :2009/09/13(日) 20:42:38
開発はVisualStudio使えって テーブル・クエリ・レポート・フォーム・モジュール 全部対応できるぜ
>>33 あれ、AccessってVisualStudioによる開発できましたっけ?
VisualSourceSafeによるソール管理ならアドインで対応してますが・・・
よろしければ詳しいとこ教えてください!
37 :
36 :2009/09/13(日) 22:37:45
>>33 レポートについてはAccessを超えるツールはないと思う。
桐にしとけ
40 :
1/2 :2009/09/14(月) 19:36:54
よろしくお願いします。 access2000を使っています。 テーブルが二つあり、 T1にはフィールドが3つ、 [加算数]数字[仕事]テキスト[実行日]日付 [実行日]フィールドは空白です。 T2にはフィールドが2つ、 [仕事]テキスト[計画日]日付、とあります。 仕事をキーに、 [仕事][計画日][加算数][実行日]の選択クエリQ1を作成しました。 また、更新クエリQ2で、 [計画日]に入った日付に、[加算数]の数字を加算し、 実行日を入力させます。
41 :
2/2 :2009/09/14(月) 19:38:09
T2には単数の[仕事]に対して複数の[計画日]の値があります。 例えば [仕事][計画日] 掃除 9/12 掃除 9/13 掃除 9/20 この状態で更新クエリQ2を実行すると、 Q1には [仕事][計画日][加算数][実行日] 掃除 9/12 1 9/27 掃除 9/13 2 9/27 掃除 9/20 7 9/27 となってしまいます。 原因はキー設定がうまく出来ていない点かと 自分では考えておりますが、 実行日をうまく表示させるにはどうすれば良いのでしょうか。 長文で失礼いたしますが、 どうかよろしくお願いします。。
>>40 実行日って必要なのか? 計画日と加算数があれば加算で出てしまうじゃないか。
>>42 実際は扱うデータが異なるもので、内容までは申し上げられませんが、
必要です。。
私も加算で出てしまうと思っていたのですが、
日付のみが異なる、このケースでいうと毎週行うような仕事があった際に、
UPDATE Q1 SET Q1.実行日 = Q1.加算数 + Q1.計画日;
これだと、最終日のみが認識されてしまい、
同じ仕事で日付が違う他のレコードの値まで最終日の値になってしまいます。
>>43 仕事 計画日 加算数 実行日
掃除 09/12 1 2009/09/13
掃除 09/13 2 2009/09/15
掃除 09/20 7 2009/09/27
ってなればいいんだろ? とりあえず例でいうとテーブルは1つでいい。
T1(仕事、計画日、加算数)
主キーが必要なら、仕事と計画日の複合キーでいいじゃないか。
45 :
名無しさん@そうだ選挙にいこう :2009/09/14(月) 20:39:01
select t1.仕事, t2,計画日, t1.加算数, t2,計画日 + t1.加算数 AS 実行日 from t1 iner join t2 on t1.仕事 = t2.仕事 じゃ駄目?
ちょいと例を作ってきます。 しばしお時間を・・ あとテーブルは、諸事情でどうしても分けねばならんのです・・。申し訳ない
dbより隠れている壁紙が気になる件
>>47 テーブル構造が糞すぎ。
第三正規化あたりから勉強しなおしてきてくれ。
やりたいことはなんとなくわかった。 仕事 加算数 掃除 1 洗濯 2 料理 6 これって固定なの?
ん。不固定ですが・・
53 :
名無しさん@そうだ選挙にいこう :2009/09/14(月) 21:51:42
31です。36さんありがとうございます。 明日会社でじっくり読んでみます!
>>49 T2で同一の仕事が複数ある場合(今回は掃除だけど)、どういう規則で1つを選ぶの?
計画日が最小でいいの? だとしたら、グループ化でQ1ひとつで行けそうなのだが。
55 :
45 :2009/09/14(月) 22:55:44
加算数と仕事はgroup byしたほうがいい気がするなぁ・・
>>45 subクエリかけたら
t1 を(select 仕事,加算数 from t1 group by 仕事,加算数) tp に変更
#Access単体はあまり触ってないから、忘れちゃったよw
#それにしても、なんか違和感かんじるんだけどね
>>55 たぶんみんな違和感があると思うよ。
逆にどういう目的でDBを構築しようとしているか、ずばり言ったほうが早いかもね。
部分的な目的じゃなくて、スケジュール管理とか人材管理とかの最終的目的。
じつはExcel向きの仕事ではと思っている。
その壁紙は予想の斜め上行ってた。GJ
すみません、すごい基本的な話で申し訳ないんですが 追加クエリと削除クエリって どうやって作るんですか?
59 :
名無しさん@そうだ選挙にいこう :2009/09/15(火) 09:14:19
>>58 クエリの画面開いて クエリ(Q)のメニューに無い?
60 :
名無しさん@そうだ選挙にいこう :2009/09/15(火) 10:55:36
>>58 まずその条件で選択クエリを作る。それを追加クエリまたは削除クエリに変更できるよ。
Access2007のAccessのオプションをVBAからいじれませんか? 具体的に言うと、「ウィンドウを重ねて表示」と「タブ付きドキュメント」を切り換えたいと思います。
>>29 遅くなりましたがありがとうございます。
まぁやっぱりBaseじゃAccessに比べれば出来る事が限られてるんでしょうね・・・。
58です 基本的なことを聞いてどうも済みませんでした
64 :
名無しさん@そうだ選挙にいこう :2009/09/16(水) 09:09:46
>>62 SQL Server 2008 Express でもいいんじゃね?
#資料も多いと思うし、立ち上げすぎればそう変わらん気がする
#AccessのSQLの癖は、ちょっと変だし(2000までしか使ったことがないけど)
65 :
名無しさん@そうだ選挙にいこう :2009/09/16(水) 09:12:44
あDBとしてはってとこね。 単体でアプリ作れるとか、レポート等はもちろん評価してます #自分の場合はExcel出力で、後は好きに出力して が多いから
66 :
名無しさん@そうだ選挙にいこう :2009/09/16(水) 21:20:37
お願いします。 access2000を使っています。 既存のエクセルファイルがあり、 シートの最上部数行に文章、 同じシートの最下部数行にも文章があり、 真ん中に数列で数行のデータ群があります。 発注書や納品書をエクセルで送付するイメージです。 このエクセルシートに、 テーブルまたはクエリで編集してきたデータをエクスポートすることは出来ますでしょうか。
>>66 できるけど、Excel使うんだったらExcelのほうで
ADOなり使ってクエリを呼び出したほうが早くないか?
上司のご依頼です・・・・ 検索ボタン1個で送り先まとめて、 その下にある出力ボタンで送付できるようちょいちょいっとまとめて! だそうです。 エクセルからのアプローチのが早いんですね・・ とりあえずは出来るのであればアクセスでやってみます
>>68 俺の場合、同じようなレポート形式で、データをまとめて、送り先フラグのついた
ものをベースにクエリって、個別PDF出力、連続メール送信をボタン一つでちょい
ちょいってやってます。
パスワードは乱数をつかって自動生成しています。
70 :
名無しさん@そうだ選挙にいこう :2009/09/17(木) 10:26:46
AccessからVBAでExcelたたいてもいいんじゃね? #普通にやる処理だと思うよ
1回こっきりならともかく、長期運用を考えるとOLEオートメーションは鬼門
>>71 なるったけ、内部だけで完結したいと思う俺であった。
BASP21みたいなDLLはOKって考えだけれど
>>72 できるだけAccessで完結させたいね。どうしてもExcelを使う必要があるなら、
俺もExcel側にプログラムを実装しちゃうな。
LAN環境で違うPCからも接続できるし、フォルダー移動も自由自在、
ほかの人が気に入って自分も使いたいとか言われても
Excelのコピーを渡すだけで、Access側のプログラムをいじる必要がないもの。
74 :
禿げあたま :2009/09/21(月) 17:19:43
【 システム環境 . 】 Windows XP SP3, Access 2007 【 VBAが使えるか .】 いいえ 【 VBAでの回答 】 否 田舎のちっぽけなレンタカー屋で働いています。事務処理は今でも手書き伝票切ったりしているので、いい加減社長が切れてわたしがAccessを使ってシステムを作ることになりました。 ここで質問させて頂きたいことは、車輌の貸出期間の算出方法です。 VBAが全くわからないため、DateDiffという関数を使うのであろうというところまでは検索でたどり着けたのですが、それをどのように使うのかがよくわからなくて困っています。
75 :
禿げあたま :2009/09/21(月) 17:20:33
長すぎて一気に書き込めませんでした、上の続きです 入力フォームに「貸出日」「貸出時間」「返却日」「返却時間」の4つを設けてそこから貸し出しに要した日時を出したいと思っています。例えば、「2009/9/15 16:10」 から「 2009/9/20 12:00」まで貸し出したとします。 経過時間は「4日と19時間50分」ですが、レンタカーの貸出料金は1日単位ですので、余った時間が10時間経過していたら1日とみなして繰り上げるようにしたいのです。 つまりこの例での余った時間「19時間50分」は1日とみなされ、経過時間は「5日」ということで5日分のレンタル料金を算出という流れになります。 入力フォームにつきましては別に「貸出日」と「貸出時間」を分けることに特にこだわっていません。「貸し出し日時」として一つに出来るのであればその方がいいと思っています。初心者で2chに書き込むことすら初めてというものですが宜しくお願い致します。
>>74 int((datediff("h",#2009/9/15 16:10#,#2009/9/20 12:00#)+14)/24)
これでどうだゲーハー
>>74 int((datediff("n",#2009/9/15 16:10#,#2009/9/20 12:00#)+60*14)/(60*24))
こっちかも知れんゲーハー
78 :
禿へ :2009/09/21(月) 19:01:13
>>74 テーブル:貸出管理
ID:オートナンバー型
貸出ID:数値型
貸出日:日付/時刻型
貸出時間:日付/時刻型
返却日:日付/時刻型
返却時間:日付/時刻型
とすると...
SELECT t1.貸出日, t1.貸出時間, t1.返却日, t1.返却時間, IIf([返却時間]>([貸出時間]+#10:00:00#),[返却日]+1,[返却日]) AS 精算返却日,datediff("d",貸出日,精算返却日)+1 AS 貸出日数
FROM 貸出管理 AS t1;
>>74 値を丸める方法の1つして四捨五入がありますが、例えば小数点以下四捨五入の場合…
[元の値]に[0.5]を加えた後、小数点以下を切り捨てれば実現できます。
つまり、今回の場合は[返却日時]に[14時間]を加えた後で処理をすればOKですね。(
>>77 )
なお、日付と時刻を別々のフィールドにするのは何かとトラブルの元になりますので
貸出日時,返却日時のようにまとめるのが良いでしょう。
80 :
名無しさん@そうだ選挙にいこう :2009/09/21(月) 21:07:24
>>79 >何かとトラブルの元に
どういうことですか?詳しく教えてください。
Access 2003 でフォームに 日付と時間をコピペで貼り付けているのですが、 元の日付の表示が MM/DD/YY HH:MM:SS という形式で 毎回/YYを削除して MM/DD HH:MM:SSの前にYY/を付けています。 MM/DD/YY HH:MM:SS を貼り付けた瞬間自動で YY/MM/DD HH:MM:SS に変換できるような方法はないでしょうか。
82 :
禿げあたま :2009/09/21(月) 22:39:03
どうも、ゲーハーです。
みなさんレスありがとうございます!
難しいので禿あたまをなでくり回しながら考えているのですがよくわかりません。
>>77 どこに入力するのかわからなかったけど、規定値の所に入れてみたら動いたようです
とりあえずスクリーンショット撮ってみました
ttp://imagepot.net/view/125353979273.gif >>78 試してみたのですが、エラーになりました。
テーブルのスクリーンショットです。
ttp://imagepot.net/view/125353979460.gif もしかしてですが、わたしは時間を入力するのにルックアップウィザードを使って、10分刻みにリストボックスから選択できるようにしています。
日付・時刻型になっていないとか言う理由で、エラーになるのかな?
ちなみにクエリで漬かったSQL文は以下のものです。
SELECT 受注管理.[貸渡日], 受注管理.[貸渡時間], 受注管理.[返却日], 受注管理.[返却時間], IIf([返却時間]>([貸渡時間]+#12/30/1899 10:0:0#),[返却日]+1,[返却日]) AS 精算返却日, datediff("d",貸渡日,精算返却日)+1 AS 貸出日数
FROM 受注管理;
その他のレスも読ませて頂きました、よくわからなかったけどみなさんありがとうございます!
83 :
名無しさん@そうだ選挙にいこう :2009/09/21(月) 22:52:47
84 :
名無しさん@そうだ選挙にいこう :2009/09/21(月) 23:25:01
すいません。 今、テーブルにあるAというテーブルとBというテーブルのなかの 会社名の抽出をしたいのですけど、例えば、Aの○○会社とBの○○会社 ほにゃらら支店みたく なってるものがデザインビューで抜けません。 Aの列は抜き出したいキーワードが1000種類あり、Bの列は抜かれたい列があります。 完全一致でなくていいのですが、抽出条件になんといれればよいのでしょうか? 詳しい方、どうか教えて下さい。
>>81 前提がわからんので手順のみ
・コピペする時点では、テキストボックスの書式は
mm/dd/yy hh:nn:ss
コピペ後、つまりテキストボックス更新後にでも、
書式をyy/mm/dd hh:nn:ssに変更すればよかろうぞ
>>81 更新後処理でもよければ
Dim Y_Buf As String
Dim M_Buf As String
Dim D_Buf As String
Dim T_Buf As String
If Not IsNull(Me!テキスト0) Then
Y_Buf = Mid(Me!テキスト0, 7, 2)
M_Buf = Left(Me!テキスト0, 2)
D_Buf = Mid(Me!テキスト0, 4, 2)
T_Buf = Right(Me!テキスト0, 8)
Me!テキスト0 = Y_Buf & "/" & M_Buf & "/" & D_Buf & " " & T_Buf
End If
とでもすれば。まったく応用が利かないけど。
87 :
86 :2009/09/21(月) 23:39:50
訂正 ×応用が利かないけど ○融通が利かないけど
88 :
禿げあたま :2009/09/21(月) 23:59:46
>>83 後出し部分があったみたいで、すいませんでした。
「貸渡時間」「返却時間」のフィールドを日付・時刻型に変えると78のやり方で出来ました!ありがとうござました。
ルックアップ形式でリストボックスから選択した時間を、計算式の中で使うのは無理なのでしょうか?
時間の入力が楽なので出来ればこの形式で使ってみたいと思っているのですが。
>>85 > 前提がわからんので手順のみ
サーバーから取得したログのファイルを
DBに登録しています。
そのログの時間表記が先程の形式です。
で、おっしゃった書式の変更は以前試しましたが、
うまくいきませんでした。
というのは年と月の判断をアクセスはできないからでは
と思うのですが。
>>86 何かできそうな気がします。
文字列に置き換えて、位置を指定している
というイメージで宜しいでしょうか。
ひとまず、お二方有り難うございました。
90 :
>>78 :2009/09/22(火) 00:30:42
>>88 ルックアップ形式ってのがいまいちわからんけど
そのリストボックスの値集合ソースをテーブルか
クエリにするってことならたぶんできそうな。
>>88 83じゃないけど
日付時刻型は日付のみ入力しても時間部分に
AM12:00が勝手に入力されたような(時間だけ入力だと日付部分には0が入るから大丈夫かと)
上のクエリだと問題なさそうだが貸渡日、返却日とNow関数なんかの
比較が必要なったときに予想外の結果が返るかも
>>84 外部結合とLike使えばできそうだが、たぶんクエリのデザインビューでは表現できない。
どっかで勉強してきて。
>>89 ログがyyyyなら書式変更でよいが、yyだとあかんね
93 :
禿げあたま :2009/09/22(火) 00:57:31
>>90 > そのリストボックスの値集合ソースをテーブルか
> クエリにするってことならたぶんできそうな。
時間を選択するリストを別テーブルにしてみたら出来ました!
>>91 日付は特に問題ないようです。
クリックするとカレンダーが出て日付を選ぶだけですので。
今日は普段使わない頭を使いすぎて眠くなってきたのでもう寝ます。
いろいろ皆さんありがとうございました!
94 :
名無しさん@そうだ選挙にいこう :2009/09/22(火) 01:05:38
>>85 何のかわからんけどそもそもlogの形式を変えれば済むんじゃないの?win鯖は解らんけど、LinuxやFreeBSDなら簡単だよね。
95 :
81 :2009/09/22(火) 01:26:11
>>92 そうなんですよ。
一つのシステムは年/月/日と吐き出されるんですが、
一方は月/日/年で・・・。
仕様変更は別会社へ頼まないといけないらしくお金も掛かるので
Accessをいじって対応できれば良いなと思ったわけです。
今月は月も年も09なんでそのままでもできるのですが、
今月以外や日が12を超えるとおかしくなるので。
97 :
名無しさん@そうだ選挙にいこう :2009/09/22(火) 06:09:20
>>81 こんなんでよかったら
テーブル:log保存
id:オートナンバー型
log:テキスト型
と、仮定して
クエリ:log加工
SELECT t1.log AS 加工前log, Mid(t1.log,7,2) & "/" & Mid(t1.log,1,5) & Mid(t1.log,9,10) AS 加工後log
FROM log保存 AS t1;
コピーしたlogをクエリの[加工前log]フィールドに貼り付ければ
[加工後log]に出力されると思うんだが...
フォームとの関連部分は詳細が判らんから省いた。ごめん。
98 :
禿げあたま :2009/09/23(水) 00:18:52
お世話になっております
先日のやり方
>>88 ではエラー無く表示はできるようになったのですが
結果が違ったものが表示されるので
>>77 で教えて頂いたやり方でやってみようと思うのですが、#〜#の間に貸渡日などの値を入れるとエラーになります。
どのように記述すればよいのでしょうか?
実際には以下のように使用したいです
int((datediff("n",#2009/9/15 16:10#,#2009/9/20 12:00#)+60*14)/(60*24))
↓
int((datediff("n",#貸渡日 貸渡時間#,#返却日 返却時間#)+60*14)/(60*24))
>>98 試してないけど
int((datediff("n",(DateValue(貸渡日)+TimeValue(貸渡時間)),(DateValue(返却日)+TimeValue(返却時間)))+60*14)/(60*24))
でどう?
>>98 貸渡時間と返却時間の書式を 時刻(S) 入力チェックを はい
貸出合計期間のコントロールソースには、
=int((datediff("n",[貸渡日]+[貸渡時間],[返却日]+[返却時間])+60*14)/(60*24))
#や[]で括ってる件については、Accessヘルプの「式」の項目でも読んでくれ
貸渡日と返却日の定型入力をウイザードから日付っぽいのを設定しておけば問題なかろう
受託管理テーブルについても日付時刻に関するフィールドのデータ型は、日付/時刻型に
合わせる。
テーブル側を先にすべて設定しとけばフォーム作成時自動的にやってくれるけどな。
夜更かしは抜け毛の原因だぜゲーハー
>>82 のSS見ながらの前レスであったが、
車両マスタテーブルと車両稼働を表すテーブルがあれば業務管理っぽいことができそう
な気がするぜ。まぁがんばれゲーハー。
飲みすぎた、寝る
102 :
禿げあたま :2009/09/23(水) 08:35:47
お世話になっております。
ありがとうございます。朝起きて早速みなさんのレスを試させて頂きました。
>>99 エラーが出てしまいました
>>100 出来ました!時間もリストボックスから選ぶのではなく手入力に変えました。
抜け毛が気になるのは最初のうちだけですよ(^^)/
>>101 車輌マスタと車輌稼働テーブルで業務管理とかいいですねー。
実際にはお客様にレンタカーの予約を受けて、日付と車輌タイプを入力したら空いている車の一覧とそれぞれの料金(借りる日付によって個々に変動)の表示とか、できるようにしたいです。
最初は嫌々やらされている感じだったのですが、触っているうちに段々面白くなってきました。なんとか業務管理システムを作れるようになるまで頑張りたいと思います!
103 :
>>78 :2009/09/23(水) 09:43:04
>>102 うまくいっている様だが...
長文失礼
テーブル:[車両管理]
車ID:数値型(主キー)
車名:テキスト型
ナンバー:テキスト型
車種ID:数値型
車ID 車名 ナンバー 車種ID
1 ワゴンR あ0005677 1
2 ムーブ い0001234 1
3 ビッツ う0001111 2
テーブル:[車種管理]
車種ID:数値型(主キー)
車種名:テキスト型
料金:数値型
車種ID 車種名 料金
1 軽自動車 5000
2 小型車 8000
104 :
>>78 :2009/09/23(水) 09:44:02
>>103 のつづき
>>102 テーブル:[貸出管理]
ID:オートナンバー型
車ID:数値型
貸渡日:日付/時刻型
貸渡時間:日付/時刻型
返却日:日付/時刻型
返却時刻:日付/時刻型
ID 車ID 貸渡日 貸渡時間 返却日 返却時間
1 1 2009/09/15 16:10:00 2009/09/20 12:00:00
2 2 2009/09/21 9:00:00 2009/09/21 12:00:00
3 1 2009/09/21 8:00:00 2009/09/23 19:00:00
4 3 2009/09/21 8:00:00 2009/09/22 18:00:00
5 3 2009/09/22 8:00:00 2009/09/23 8:00:00
105 :
>>78 :2009/09/23(水) 09:45:59
>>104 のつづき
>>102 クエリ:[貸出料金]
SELECT t1.ID, t1.車ID, t2.車名, t3.車種名,
t1.貸渡日, t1.貸渡時間, t1.返却日, t1.返却時間,
IIf([返却時間]<([貸渡時間]+#12/30/1899 10:0:0#),[返却日],[返却日]+1) AS 精算返却日,
int((datediff("n",[貸渡日]+[貸渡時間],[返却日]+[返却時間])+60*14)/(60*24)) AS 貸出合計期間1,
[貸出合計期間1]*[料金] AS 請求金額1,
IIf(DateDiff("d",[貸渡日],[精算返却日])=0,1,DateDiff("d",[貸渡日],[精算返却日])) AS 貸出合計期間2,
[貸出合計期間2]*[料金] AS 請求金額2
FROM (車両管理 AS t2 INNER JOIN 貸出管理 AS t1 ON t2.車ID=t1.車ID)
INNER JOIN 車種管理 AS t3 ON t2.車種ID=t3.車種ID;
貸出合計期間1の方は、当日で10時間以内だと貸出合計期間が0になってしまっているが...
貸出合計期間2の方は、以前
>>78 で掲示したやつの改良版(すまん)
106 :
禿げあたま :2009/09/23(水) 13:01:26
>>103 ,104,105
ありがとうございます!
すぐにお返事できなくて申し訳ないです。時間取れたらすぐにでも試してみたいのですが、今日はちょっとばたばたしてまして......
>貸出合計期間1の方は、当日で10時間以内だと貸出合計期間が0になってしまっているが...
当初、ACCESSでどこまで出来るかも知らずに、とりあえず困った箇所だけを投稿させて頂きましたので、一日以下の料金のことは考えていませんでした。申し訳ありません。
時間が出来たら試してまた結果報告させて頂きたいと思います。
困った個所だけって認識あるから、別にいいのだけれども、 4時間/半日/7日間/1ヶ月/時間延長料金が出てきてみんなで軽くズッコケもありだと思う
108 :
>>78 :2009/09/23(水) 22:39:26
とりあえず 4時間/半日/7日間/1ヶ月/時間延長料金が出てきても対応できるんだが 結局、設定する側のフォーマットが決まらなければなんともできね。
レポートを印刷するときにバーチャル印刷ソフト、例えばdocuworksとかアクロバットにフォーカスがわたるんだけど、その後に手動でAccessにフォーカスを戻すのが面倒です。 レポートの印刷の後にAccessにフォーカスを戻すコードってどう書くのでしょうか?
110 :
名無しさん@そうだ選挙にいこう :2009/09/23(水) 23:01:50
お願いします。 access2000を使っております。 あるマスタクエリがあり、そのマスタクエリの中のフィールドの一つである送信先フィールドに 国名が記載されています。 そして、この国名に沿って振り分けた国別クエリが10国分ほどあります。 この国別クエリは、国ごとにフィールド名もデータの表示形式も随分別の形に加工してあります。 現在はそれぞれの国別クエリのフィールド名やデータ表示形式を、 全て各国の指定した形式で加工する所まで終わっています。 あとはこれを、エクセルに出力し、とりあえずは完了という所です。 お尋ねしたいのは、この作成したクエリを、 既に用意してあるエクセルの内部にエクスポートする方法です。 VBAで何度か試しましたが、どうしても指定した位置にエクスポートすることが出来ず、 用意していたエクセルの内部データを全て上書きしてしまいます。 コード全てでなく、利用できそうな関数やメソッド、プロパティだけで十分有難いので、 是非ひとつアドバイスをいただきたく。 長文になりましたが、どうかよろしくお願いします。
111 :
名無しさん@そうだ選挙にいこう :2009/09/23(水) 23:20:49
>>110 ほぼわかんね。っていうかこういうパターンって
情報小出しで回答側が頭にくるパターン。
.CopyFromRecordset
>>110 CellsとかRangeで出力先を指定すればいいじゃない。
おおむねExcel VBAの話である
>>110 Excel オートメーションで調べればいい。
というか、俺はそれで同じように、給与計算のツール作っているし。
ボタンぽちっと押すと、Excelの対象のシートが立ち上がって勝手に
書き込みが始まる。
見ていて壮観だ。
>>109 Windowの制御か
APIにSetActiveWindowってのがあるが
ワンアクションが面倒とは、どんだけって気がする。
>>115 100人の顧客毎にレポートを印刷すると100アクションなんですよ。
顧客毎に数種類のレポートがあるから数百アクションです。
手動が好きな人ならパソコンを使わないで手書きにすればいいんでしょうが、私は自動の方が好きなもので…
連続印刷するのになぜフォーカスが必要なのでしょうか?
>>116 自動が好きでも自分で解決できないんなら手動でやることだな。
悪いことい言わんから、出力はXPS/PDFに限定して2007使っとけ。
1.あきらめる
2.ActiveWindowを管理する
3.2007にする
4.Shellつかってコマンドオプション指定してバックグランド可なプリンタを探す
5.お金かけて作ってもらう
>>117 顧客毎にフォームがあって、必要事項を記載してからレポートを印刷する仕様になっていますので、1枚ずつしか処理できないんですよ。
100人分のデータを入力してから全顧客の最新レコードを抽出してレポートに渡せば一括処理できますね。
うーむ。また改造か。mdbだから改造できるけど、本業がすすまない…
>>118 APIいじることにします。
>>110 白紙シート作ってそこにそのままエキスポートしてみるとか。
本当に書き込みたいシートのセルには参照だけ書き込んで置けばいいし
>>116 自動好きの俺からすると、随分と舐めた奴だなあんた。
その程度で自動が好きだとかさ。
何がいいたいのかわかるか?印刷ダイアログがどうとかほざいている
時点で既にな・・・
で、実際に
>>119 をみていると やっぱりって感じで。
1枚ずつしか処理できない?それは 君の力では ってだけの話だろうが。
その程度で自動化好きだとか、手動が好きならとか貶めてるような馬鹿に
教えてやる必要は感じない罠。
と、
>>121 というお方が御指導下さっているんだぞ皆さん!
123 :
名無しさん@そうだ選挙にいこう :2009/09/24(木) 08:10:22
>>121 いろいろとありがとうございます。
ただ、印刷ダイアログの話はした覚えがありませんので、初老期の認知症に気をつけてください。
これです。↓
> 何がいいたいのかわかるか?印刷ダイアログがどうとかほざいている
> 時点で既にな・・・
125 :
名無しさん@そうだ選挙にいこう :2009/09/24(木) 11:31:19
>>119 >100人分のデータを入力してから全顧客の最新レコードを抽出してレポートに渡せば一括処理できますね。
普通は、そう考えると思うが?
再印刷が発生した場合、どうするかを考慮する必要があると思うけどね
後は顧客単位の振り分け処理だね
DWは普通に印刷すると本体に吐くけど、それをどうやって区別するのか・・・
#フォルダ・ファイル名指定で出せるのかな?
>>125 再印刷はそもそものの仕様が顧客毎のフォームから1件ずつ印刷する仕様ですので、それを利用します。
DWでの管理はレポートのCaptionを変更することで対応しています。
CaptionがDWでのファイルネームになりますので。(少し小細工が必要ですけど)
振り分けは振り分けソフトで対応しています。1万条件まで対応するソフトがありますので。
いま使っているmdbは高価な業務用ソフトですけど、痒いところに手が届かない設計でうんざりしています。
業務用ソフトは現場を知っているプログラマが必要でしょうが、なかなか難しいんでしょうね。
コードを眺めると笑ってしまうことがあります。
レポートのCaptionを変更することでユニークなファイル名を生成できることに気づいているのもったいない
>>127 ん?全てにユニークな名前を付けていますよ。連番が必要ないようにしていますが…。
そしてファイル名に含まれる複数のキーワードで自動振分していますよ。
ちなみに振分はゼロックスの業務用ソフトは使っていません。フリーソフトとAccessだけで1万条件までは扱えますから。 振分ソフトのiniファイルを複数用意すればいくらでも条件は増やせますし。
業務ソフトだのフリーソフトだのAccessと関係ない話ばっかりで 母さん全然わかんないわよ!
131 :
名無しさん@そうだ選挙にいこう :2009/09/24(木) 15:22:35
>>127 そうなんだ?
#Excel出力であとはお任せが多いから、気にとめたこと無かったtks
>>127 何を言いたかったのか、詳しくよろしく!
もったいないっつたらエコにきまってる。 ユニークが生成されるのをAccess2000比で25%削減目標目指しますイニシアチブな快感でした。
ロハスなVBAを教えてください
結合
136 :
禿げあたま :2009/09/25(金) 03:00:40
すいません、時間が取れず返事が遅くなってしまいました。
>>103-105 を試してみたら動きました!すごい、クエリってこうやって作るんですね。
料金はとりあえず1日料金さえクリアすればなんとかなると思っていました。
本当にど素人ですいません。
料金形態は「3時間まで」「6時間まで」「12時間まで」「24時間まで」「1日料金」「1ヶ月料金」となっています。
貸出期間が1ヶ月を超えた場合は1ヶ月 +1日あたりの料金となります。
>4時間/半日/7日間/1ヶ月/時間延長料金が出てきても対応できるんだが
>結局、設定する側のフォーマットが決まらなければなんともできね。
設定する側のフォーマットとはどのようなとこでしょうか?私としては大体このようなことが出来ればいいなと考えています。
■お客さんから注文が入ったらフォームに借りる日付と借りたい車種を入力、空いてる車や、料金などが自動で出てくる。顧客情報もこのとき新規なら登録、既存顧客の場合はリストから選択できるようにする。
■貸渡票・受注伝票・請求書・領収書などの印刷
■どの車輌が月にどれくらい稼働しているかなど表示したい
もう少し細かいことでやりたいこともありますが、とりあえずこれくらい出来れば業務で使えると思っています。
>>136 なんとなくでも、ゴールできそうと思えれば一歩前進したってことだぁ
やりたいことを明確にするのがベストだと思うのだ。
テクニックもいいが、基礎を固めるんだゲーハー
完全無毛になるまでがんばれゲーハー
ACCESS 2007 RUNTIME+XP ADOで作ったレコードセットを表形式のフォームのレコードソースにしています。 実行させるマシンによってレコードが0件のときに「カレントレコードがありません」と 出る場合と出ない場合があります。 この差はどこからくるのかご存知の方いらっしゃいますか。 メッセージが出るマシンも以前は出ませんでした。 その間、何かをしたという記憶はないのですが メッセージを抑制する方法でもいいのでよろしくお願いします。 開発はAccess2007とVISTAで行っています。
140 :
138 :2009/09/25(金) 10:11:54
>>139 レスありがとうございます。
XP2台での挙動が違うのでOSは関係ないと思います。
VISTA+RUNTIME(Access2007は入ってない)でもダイアログは出てきません。
>>138 カレントレコードがありません(3021?)がどの時点で吐き出されてるのかわからんが、
エラートラップしちゃうか、recordset.count>0であるときフォームのレコードソースに
するってのはどうだろうか。
>出る場合と出ない場合があります
と言われてもなんともだなぁ。RuntimeにもSPあるから確認してみては?
まったく同じような環境なんだけど、トラブル発生したのは
・ADOのバージョン
・Xpマシンのメモリエラー
ってのがあった。
>>128 振分ソフトを使わなければ処理ができないなんてもったいなよねと思っただけだよ
まして上限1万の振分条件とかiniファイルを自分で管理しなくちゃいけないなんて聞くとかわいそうになってくる
だってユニークな名前があるならアクセスで全部できるじゃん・・・・どころか・・・ユニークな名前付けもアクセスでできるじゃん
よほどチープなマシンでなければ1万件を超える条件を格納できるテーブル、オンデマンドで条件を設定できるクエリ、各種条件を管理運用できるフォーム、ファイルシステムを操作できるVBAがあるアクセスがあるならあんたのやろうとしてる作業など容易だよ
>>126 現場を知っているプログラマが必要・・・じゃなくて現場のプアな説明を整理整頓して適切なロジックを考え的確な仕様書を書けるSEが必要なんだよ
できれば自分のやっている現場業務を冷静に判断し他者へ説明できる語学力を備えた現場業務担当がいればありがたいという話
>>143 あっ、振分もAccessで出来るのか!
それは考えてもいなかった。調べてみますね!
でも、同名ファイルがあるときのリネームとか面倒かな?VBSでも面倒だったし…
ちょっくら検索してみます!
>>142 同意です。
>>145 >>振分もAccessで出来るのか
抽出した振分条件をVBAでファイルシステムにぶつければ幸せになれる
リネームは次のメソッド
Name oldfile As newfile
File System OBJ は良いぞ
存在確認、サイズ取得、テキスト作成
おおよそ必要なものはそろっていると思ふ
>>146 ありがとうございます!
いやー、楽しみだ。
148 :
138 :2009/09/25(金) 19:01:25
>>141 >>142 ありがとうございます。
>>141 のブログを参考にして「追加の許可」を「はい」に設定してみました。
エラーは出なくなりましたが、当然ながら追加用の行が表示されました。
これで妥協するかと思っていたところ次の書き込みが
結果的にはバージョンが違っていたので最新版にしたところ0件のときでもエラーはでなくなりました。
根本的な解決ではないような気がして不安ですがこれでいこうと思います。
環境は全部そろえていたつもりだったのに勘違いしていたようです。
お騒がせしました。
それだけではなんなので提案していただいた方法も試してみました。
レコードがある時だけレコードソースを設定するというのは試していたのですが
0件のときに何もしなかったので前に設定したレコードソースが残ってしまい
この方法はダメだと思っていたのです。
しかし改めて書き込みをしてもらって0件のときはNothingにすればいいのではと気づきました。
で、やってみたところエラーダイアログはでないのですが
各フィールドが#Name?となった1行が表示されました。
1件でもレコードがあれば#Name?の行は表示されません。
ちなみにエラーは「カレントレコードがありません」だけでエラーコードはありませんでした。
なぜ挙動が突然変わったのかが疑問ですがとりあえず解決です。
みなさん、ありがとうございました。
>>148 コントロールソースもVBAで制御すれば#Nameエラー出さないようにできるぜ
150 :
138 :2009/09/25(金) 21:15:57
>>149 なるほど!
非連結にすればエラーは出ないですね。
試したところバッチリでした。
エラーの出るバージョンがなくなってしまったのでわかりませんが、
この方法でしたらレコードセットの制御をしなくても大丈夫かもしれませんね。
151 :
>>78 :2009/09/25(金) 21:46:36
>>136 だからさ
> 料金形態は「3時間まで」「6時間まで」「12時間まで」「24時間まで」「1日料金」「1ヶ月料金」となっています。
どの車は「3時間まで」はいくらで「6時間まで」はいくらでってのが決まらないといけないし、
さらにトヨタでいえばビッツとプリウスはたまたアリストとかそれぞれ違ったりするわけだよね。
152 :
禿げあたま :2009/09/26(土) 00:56:34
長文失礼致します。お世話になっております。 今日社内会議であたらしい料金形態をきっちり決めようということになりまして。 会議といっても、ほぼ社長の独断ですが年始から新しい料金形態でやることになりました。 まず、個人と法人を分ける。という頭がとても痛いことになりました。来年まで猶予はあるので少しずつデータベースの勉強しながらやっていこうと思っています。 個人の貸渡料金 ・3時間まで ・6時間まで ・12時間まで ・24時間まで ・それ以降は1日料金 ・22日を超えると一ヶ月料金+1日料金に切り替え 法人の貸渡料金(1日以下は無し) ・1日料金 ・22日を超えると一ヶ月料金+1日料金に切り替え 44日を超えると2ヶ月料金(1ヶ月x2)になるはずですが、2ヶ月を超える貸出は過去10年一度もないので考える必要はないと思っています。
153 :
禿げあたま :2009/09/26(土) 01:00:00
>>151 車の排気量やタイプ別にで料金は設定されています。一ヶ月料金は法人・個人共に1日料金 x 22となります。
軽四 = 3時間まで 6時間まで 12時間まで 24時間まで 一日ごとに 1ヶ月料金
3000円 3500円 4000円 4500円 4000円 88000円
1300cc = 3時間まで 6時間まで 12時間まで 24時間まで 一日ごとに 1ヶ月料金
3500円 4000円 4500円 5500円 5000円 110000円
例えば、ワゴンRやタントは軽四に属するので軽四の料金が適用されます。
パッソやヴィッツは1300ccに属するので1300ccの料金が適用されます。
これは
>>103 で作成したテーブル車種管理の車種名に入れて使おうと思っています。
で、
>>152 で書いた料金設定をこのテーブルに以下のように組み込もうと思っています。
154 :
禿げあたま :2009/09/26(土) 01:00:22
続きです テーブル:[車種管理] 車種ID:数値型(主キー) 車種名:テキスト型 3時間まで:数値型 6時間まで:数値型 12時間まで:数値型 24時間まで:数値型 1日料金:数値型 1ヶ月料金:数値型 法人1日料金:数値型 法人1ヶ月料金:数値型 車種ID 車種名 3時間まで 6時間まで 12時間まで 24時間まで 1日料金 1ヶ月料金 法人1日料金 法人1ヶ月料金 1 軽四 3000円 3500円 4000円 4500円 4000円 88000円 3500円 77000円 2 1300cc 3500円 4000円 4500円 5500円 5000円 110000円 4500円 99000円 そしてこれらの料金をフォームにて法人・個人のラジオボタンで表示切り替えできるようにしようと思っています。
このスレIDなしだったな
>>150 まぁそーなんだが、
別のアプローチとしては、FormのOpenイベントで、
if recordsetがない then
Cancel=True
MsgBox "No Record!!",vbOkOnly
exit sub
end if
てな感じでフォームオープンを中止させるのもいいかもしれん。
>>152 とりあえず作ってみれよ
コツコツとがんばれゲーハー
156 :
155 :2009/09/26(土) 01:49:36
recordsetがないっていう表現は変だな。察してくれ
そういやおれも大昔のDBはテーブル名に顧客管理とか社員管理とか部署管理とか管理だらけだったわw
158 :
138 :2009/09/26(土) 08:32:13
>>155 ありがとうございます。
そういうやり方もあるんですね!
今回のはフォーム開きっぱなしで中身を動的に変えていくものなので
使えないのですが覚えておきます。
たまにフォームを呼び出す前にレコードセットのチェックをして
開くか開かないかを決めるというのも作っていたのですが、
教えていただいた方法なら新しいフォーム側の1つのプライベート変数のみで済みますね。
勉強になります。
>>157 俺のテーブルは、太郎と花子って名前が多かった。
顧客太郎だとか
社員花子だとか。太郎が外向き、花子が内向き用にテーブル名を分けてた。
退職する際には、あまりに酷い会社だったので、テーブルの名前を全部、
車の名前に変えた。年度更新のプログラムは前のテーブル名での設定だから
多分、停止したと思う。
ワロタw
161 :
>>78 離島のサンデーPG :2009/09/26(土) 12:39:46
>>152 1日を超えたら
例えば軽四で1日と2時間だったら
=1日まで4000円+3時間まで3000円=7000円?
それとも
=1日まで4000円*2=8000円?
例えば2日と7時間だったら
どういう料金設定?
162 :
禿げあたま :2009/09/26(土) 15:46:56
>>161 >例えば軽四で1日と2時間だったら
>=1日まで4000円+3時間まで3000円=7000円?
そうです、個人に関してはそのまま1日+3時間以内で+3時間料金となります。
実際にはこの場合は以降1日料金を追加してこういうケースで借りるお客さんは少ないです。
>例えば2日と7時間だったら
軽四の場合、初日の4500円 + 2日目以降の4000 + 12時間までの4000円
↓
4500 + 4000 + 4000 = 12500円
法人は以前と同じで10時間超えたらもう1日プラスとなっています。(法人は1日以下の料金設定無し)
163 :
離島のサンデーPG :2009/09/26(土) 18:58:29
>>162 疑問なんで聞いちゃうけど
> >例えば軽四で1日と2時間だったら
> >=1日まで4000円+3時間まで3000円=7000円?
> そうです、個人に関してはそのまま1日+3時間以内で+3時間料金となります。
> 軽四の場合、初日の4500円 + 2日目以降の4000 + 12時間までの4000円
↓
> 4500 + 4000 + 4000 = 12500円
1日と2時間なら
初日1日=4000円
2日と7時間なら
初日1日=4500円
この違いはどう考えればいいんでしょうか?
164 :
禿げあたま :2009/09/26(土) 19:42:40
>>163 混乱させてすいません。
間違えてました。初日料金(24時間まで)は別なので
1日まで4000円+3時間まで3000円=7000円
↓ こうなります
24時間まで4500円+3時間まで3000円=7000円
個人の方は結構ややこしくて、24時間=初日料金ということでそれ以降の1日料金より少し高いです。
さっきAccessVBAプログラミング開発工房 入門・基礎編を買ってきました。
2300円もするとは、高い〜。この土日はVBAの勉強がんばります。
>>164 まずなんだが、今の貴男には無理でしょう。
俺だったら、関数作って対処する。ソレで済む。複雑っていっても、それは
貴男にとて複雑だと思っているだけで、その程度は、処理レベルとしては、
むしろ、複雑でもなんでもない。
貴男は、まず、Accessの知識より、情報を扱う記述ってのを身につけた方が
いい。あなたのその整理の仕方じゃ、プログラムは作れない。
166 :
名無しさん@そうだ選挙にいこう :2009/09/26(土) 22:40:08
>>165 まあまあ、そうなのは重々承知での話しなワケヨ。
> 混乱させてすいません。
> 間違えてました。初日料金(24時間まで)は別なので
> 1日まで4000円+3時間まで3000円=7000円
> ↓ こうなります
> 24時間まで4500円+3時間まで3000円=7000円
この時点で計算が違ってるし...あんまし真剣じゃないんだなって...
ものを造るって大変なことなんすよーって言いたい。
まずはVBA云々なんかよりも先にSQLと第三正規化までをみっちり学習してから
質問してほしいってのは本音なんだが...。
167 :
禿げあたま :2009/09/26(土) 22:46:22
>>165 ご意見ありがとうございます。
私自身プログラミングというものは全く理解できないのですが、
書籍やウェブで少しずつ勉強していければなと思っています。
165さんの仰るとおりプログラミングどころかAccessにふれてまだ3週間の
私には、まだ早すぎるシステム制作だろうと思っています。
ただ仕事の都合でどうしても私が制作しなければならないことになってしまい、ここで質問させて頂きました。
情報を扱う記述というのはどういったことを勉強すればよいのでしょうか?
私のようなレベルのものにも参考になる書籍などを教えて頂けると助かります。
幸いにもAccessを楽しいと思えるので、少しずつでも勉強して今後も使えるスキルに出来たらなと思っています。
168 :
離島のサンデーPG :2009/09/26(土) 23:02:04
>>167 楽しいと思えることをやればいいんだよ。
ただし、聞くからにはその前に自分で調べてからってことを忘れずにね。
169 :
禿げあたま :2009/09/26(土) 23:02:14
>>166 >> 24時間まで4500円+3時間まで3000円=7000円
>この時点で計算が違ってるし...あんまし真剣じゃないんだなって...
>
>ものを造るって大変なことなんすよーって言いたい。
m(_ _)m すいませんほんと、バカみたいな間違いですね。
真剣じゃないと思われても仕方ないです。
「制作」と「製作」
「Access」と「木同」
>>167 例えば今回のケースで言えば、最小単位はなんなのか?
それをベースに一定のレベルで符号化するとかね。この符号ってのは、フラグ
なわけだ。
1だったら、2時間 2だったら4時間 そういうフラグデータをいかに作っていくか?
そしてそのフラグを元に、VBAあたりで、select caseで処理してみるとか。つまり、
重要なのは以下に情報を整理するか?データベース特有なら正規化も当然にし
て重要だ。
データベースはまず情報をいかに整理するか?
殆どの人が自分の情報は整理されているというが、データベースを扱う人間から
したら、それは整理される前のデータにしか見えないというのは山ほど在る。
173 :
禿げあたま :2009/09/27(日) 01:55:06
>>172 ありがとうございます。勉強になります。
>例えば今回のケースで言えば、最小単位はなんなのか?
>
>それをベースに一定のレベルで符号化するとかね。この符号ってのは、フラグなわけだ。
私にはその最小単位が何なのかもよくわかっておりません。
データベースを理解するということでまた書籍なども購入してみようと思っています。
とりあえず年末まで猶予があるので、今はVBAを少しずつ勉強できればと思っています。
>>173 ほとんどの業務では最初は紙ベースの台帳があったはずです。
【貸出台帳】
[借りた人],[貸出車の自動車登録番号],[車両の大きさ],[貸した日時]
鈴木一郎さん,品川500わ12-34,小型,2009/09/27 16:30
これを毎回、面倒だけど手書きする。
そのうち賢い人が「自動車ごとに1号車,2号車って番号を振ったら楽じゃね?」と
思いつくわけです。そうだ車両台帳を作ろう!みたいに。
【車両台帳】
[号車],[自動車登録番号],[車両の大きさ],[基本単価]
こうすれば貸出台帳は、[借りた人],[号車],[貸した日時]の記入だけで済みます。
すると今度は車両台帳を記入する人が「車両クラス台帳を作ろう!」と思いつきます。
【車両クラス台帳】
[車両クラス],[車両の大きさ],[基本単価]
これで車両台帳の記入も楽になりました。
こんな風に、扱う項目を開発の早い段階で細切れにしておく。
そうすると業務が楽になるのは手書きでもAccessでも同じです。
>>173 あんまり難しく考えんなよ。
あれもこれもってなるとやっぱりAccessじゃなくてもいいやってなるぞ。
まあオレのことなんだがw
最初は現行(手書き?)のシステムの補助的なものでもいいんじゃないかな。
176 :
禿げあたま :2009/09/27(日) 16:27:39
>>174 わかりやすい説明ありがとうございます。
とても勉強になります。
>>175 >あんまり難しく考えんなよ。
>あれもこれもってなるとやっぱりAccessじゃなくてもいいやってなるぞ。
>まあオレのことなんだがw
>
>最初は現行(手書き?)のシステムの補助的なものでもいいんじゃないかな。
ありがとうございます。
私はあまり頭が良くないので、地道に勉強しかないと思っています。
今後のことも考えると、ここで誰かに答えを聞いてもいずれ困る日が来るのは間違いないので
焦らずにゆっくり基本から学んでいきたいと思っています。
皆さんいろいろご助言頂いて本当にありがとうございます。
Access初心者です。 XP+Access2003でテーブル1とテーブル2を 1対多で関連付けして連鎖削除をチェックしています。 テーブル1のレコードを削除したときに異常終了でAccessが 落ちるのですが、原因は何でしょうか。
178 :
名無しさん@そうだ選挙にいこう :2009/09/28(月) 07:09:44
WindowsXP上でACCESS2002RuntimeとACCESS2007Runtimeを共存させらレナ意でしょうか それぞれのランタイムをインストールしてショートカットを作成し 起動時に使用するランタイムを指定しているのですが、 一度どちらかのRuntimeを使うと、もう一方のランタイムを使うときにインストーラーがいちいち起動してしまいます。 これを回避する方法はないでしょうか?
レナ意です
2007 Runtimeに統一できないの? 2002じゃないとダメっていうのはどういう場合? 後学のために教えてください。
Access2007でサブレポート付のレポートを作成しているのですが、 メインレポートでサブレポートの各項目を集計させるにはどのように設定すればよいのでしょうか。 具体的には、得意先ごとの請求書を作成していて、 メインレポート→得意先ごとの単票形式 サブレポート→パラメータで日付を指定して売上明細 と表示させています。 売上明細の数量、金額、消費税のそれぞれの項目を集計したものをメインレポートに表示したいのですが、 プロパティから式ビルドで = SUM([数量])としてもうまく計算してくれません。 初心者の質問で申し訳ありませんが、ご教示よろしくお願いします。
>>182 2003形式のファイルを2007RTで動かすと落ちることがあるんです
その原因がはっきりしていないのと、そのファイルは他の人が作ったので、
できれば直すのは最終手段にしたい。
それとは別に、2007で作成したファイルも使うので、
ファイル毎にランタイムを使い分けられれば一番楽かなと。
185 :
182 :2009/09/28(月) 18:26:59
>>184 参考になります。
私も2000で作られたmdbファイルを2007のRuntimeで動かしていますが
ちょっと怖いですね。
今のところ認識できる実害はないのでそのまま使っています。
始めは同じように共存しようとしたのですが、
やはり切り替えでインストーラーが立ち上がってしまいます。
「情報を集めています」とか出て長いんですよね。
解決につながるような情報がなくてすいません。
>>183 =Sum(Reports!メインレポート名!サブレポート名.Report![数量])
でどう?
Access2007です。 テキストボックスに入力されている値の小数第3位以下を切り捨てたいのですが Int(Ccur(TextBox) * 100) / 100 で大丈夫でしょうか。 整数の100も通貨型に変換しないとダメですか。 試した範囲ではTextBoxのみ型変換すれば大丈夫そうなんですが すべての数をチェックできるわけではないのでよろしくお願いします。
おれもすべての数はチェックできんよ
189 :
1/2 :2009/09/28(月) 21:38:15
お願いします。 自宅ではaccess2003 仕事場では2000を使っています。 下記コードを実行したところ、自宅ではOK、会社ではユーザ定義型が定義されていないと怒られます。 参照設定はDAOは両方共3.6で、EXCELライブラリは会社が6.0、自宅はEXCEL11.0です。 どこに原因があるのかが見当つかなくて参ってます。 すいませんがお願いします
190 :
名無しさん@そうだ選挙にいこう :2009/09/28(月) 21:39:13
Private Sub btn1_Click() Dim Db As DAO.Database Dim myRS As DAO.Recordset Dim i As Integer Dim myXLS As Excel.Application Dim myWKB As Excel.Workbook Dim myWKS As Excel.Worksheet On Error GoTo エラー処理 Set Db = CurrentDb Set myRS = Db.OpenRecordset("Q1") Set myXLS = New Excel.Application myXLS.Visible = True Set myWKB = myXLS.Workbooks.Add Set myWKS = myWKB.Worksheets("sheet1") With myWKS For i = 0 To myRS.Fields.Count - 1 .Cells(1, i + 1).Value = myRS.Fields(i).Name Next i .Range("C8").CopyFromRecordset myRS End With myWKB.SaveAs ("C:\Documents and Settings\Owner\デスクトップ.test.xls") Exit_EXCELCOPY: myXLS.Quit Set myXLS = Nothing Set myWKB = Nothing Set myWKS = Nothing myRS.Close: Set myRS = Nothing Db.Close: Set Db = Nothing Exit Sub エラー処理: Exit Sub End Sub
>>189 access2003で使ったときの参照設定EXCEL11.0が残ってるだけでないの?←仕様じゃね?
2007の互換モードなら下位互換を保持してくれるけど。
酔っ払いタクシー帰宅途中なので、間違ってたらスマソ
>>189 >EXCELライブラリは会社が6.0
6.0ってExcelのなにに当たるんだ?
CopyFromRecordsetあたりが上記ライブラリに無いのではなかろうか。
193 :
192 :2009/09/29(火) 03:45:54
一応補足 文脈からわかるだろうが、CopyFromRecordsetはExcelライブラリのメンバーだから。 オブジェクトブラウザーでCopyFromRecordsetを検索してみれば。
194 :
名無しさん@そうだ選挙にいこう :2009/09/29(火) 04:36:13
>>190 は、EXCEL VBAの話だと思うんだ
DAO3.6とCopyFromRecordsetのExcel2000の組み合わせで
なんかバグあった気がするなぁ
accessの問題ではないのではなかろうか。
196 :
183 :2009/09/29(火) 12:00:05
>186 ご回答ありがとうございます。 早速ためしてみたところ、実行するとパラメータクエリのようにダイアログが出て 式がそのまま表示されます。 レポート名の指示などに何かルールがあるのでしょうか? 稚拙な質問ですみません。
197 :
名無しさん@そうだ選挙にいこう :2009/09/29(火) 14:51:25
>>196 サブフォーム/サブレポートの集計値をメインフォーム/メインレポートに
引用するには、一旦サブ側で集計させたコントロールを参照するがよろし。
>何かルールがあるのでしょうか?
当たり前です。式ビルダ使って確認してみるがよろし
198 :
名無しさん@そうだ選挙にいこう :2009/09/29(火) 16:21:33
【 システム環境 . 】 WindowsXP, Access2003
【 VBAが使えるか .】 はい
【 VBAでの回答 】 可
【 検索キーワード 】 レポート 枠外 テキストボックス 横展開
http://2sen.dip.jp/cgi-bin/upgun/up6/source/up1085.xxx ↑エクセルファイルです。
これと同じものをACCESSのレポートで作成をしたいのですが、
行き詰ってしまいました。
すべてのテキストボックスを縦書きにして、フォントを@がついているものを使用したりしたのですが、
枠外での氏名や住所等を挿入する方法がわかりませんでした。
ぜひ、よき方法をご教授願います。
>>198 このExcelの表をレポートに貼り付けてしまえば?
>>198 なんとなくだが、やろうとしてることは無理じゃないすか
出力用データを1ページ分単位で整形したほうがいいのでは?
12ヶ月分と項目数は固定と考えてもよさげだし
あ、勘違いしてた。縦書きとかいう以前の問題なんじゃないの?
>>198 集計クエリをユニオンすればサクッと行く気がしないでもない。
203 :
190 :2009/09/29(火) 19:26:53
遅くなりました。
あと会社のexcelは9.0でした。
うまくいかなかった原因は参照設定がうまく反映されてなかったみたいです。
DAOチェックはずす→チェックいれる→コードのDAOかかわってる部分も一回書き直す。
だけでいけました。
>>191-195 みなさんありがとうございました。
どうやらこっちの確認不足の粋でした。
204 :
110 190 :2009/09/29(火) 19:42:58
すいません、続けて失礼します。 Set Db = CurrentDb Set myRS = Db.OpenRecordset("Q1") Set myXLS = New Excel.Application myXLS.Visible = True Set myWKB = myXLS.Workbooks.Add Set myWKS = myWKB.Worksheets("sheet1") With myWKS .Range("C8").CopyFromRecordset myRS End With myWKB.SaveAs ("C:\Documents and Settings\Owner\デスクトップ\出力テスト.xls") このコードだと、新しくエクセルファイルを作って、その中にブックとシートを作った上で そこにレコードセットをコピーしてくる流れだと思うのですが、 これだと当然ながら既存のエクセルファイル 「出力テスト」のsheet1の中身を 全て上書きする形でコピーされてしまいます。 既存のエクセルファイル「出力テスト」の中には、 数行分ぐらい案内用の文書が入っていて、 その案内文の下行のC8セルからコピーしたものを貼り付けたいのですが、 前半部分の変数の宣言に問題があるのでしょうか。 どうかよろしくお願いします。 すんません、お願いします
GetObjectかな・・・・ でもExcelスレで聞くほうがいいと思うぜ・・・
ちょっと前のログに似たような質問してるやつが何人もいて それっぽい解答もいくつか出てる。
Excel VBA側で操作したいのですが、 access一本で、というのが今回の課題ですorz ちょいとgetobject調べてきます
208 :
198 :2009/09/29(火) 21:22:13
やっぱり無理なんですかね? 色々調べてもレポートの枠外に文字を貼り付けることなど ネット上ではhitしませんでした。
>>198 あなたは1973年4月2日生まれですね
210 :
207 :2009/09/29(火) 21:35:59
set wks = XLS.Workbooks.Addにしてたのがだめでした。 set wks = XLS.Workbooks.Open("dir") と、range でいけました。 とりあえずありがとうございました!
>>198 レコードソースが解らないと、なんともいえない。
恐らく支払日ごとに全項目を手入力しているのだと思うが。
ヘッダをうまく使えば問題ないんじゃないか。
212 :
196 :2009/09/30(水) 11:01:44
>197 ご回答ありがとうございました。 なんとかうまくいきそうです。本当に助かりました。 あともう一つだけお願いします。 サブレポートの数値を参照する際、数量を集計したコントロールはどう指定すれば良いのでしょうか。 式ビルダで選択できるのは元々あった(集計前の)コントールだけで、集計したところが表示されないので困っています。 どうぞよろしくお願いします。
213 :
198 :2009/10/01(木) 19:57:19
>>209 1976年生まれです
>>211 ヘッダーに氏名、住所、生年月日などを入れると
A4用紙に収まらなくなったので困ってたのです。
もうちょっと工夫してみます。
>>213 俺より2年先輩か
ちなみに、俺も勤怠とか給与担当やっているから、つくっているけれど、こんなインターフェース
じゃないんだよね。今手元にないから、スクショとか出せないけれど、かなりいろいろ作り込んで
いるから、これと同じ物 もしくは それ以上の物つくれっていわれたらすぐ作れる。
ただ、言語化して伝えるのがとても難しい。
土日だったら、明日そのプログラムのスクショとって見せようと思うけれど。
215 :
名無しさん@そうだ選挙にいこう :2009/10/04(日) 21:53:48
おねがいします 2003使ってます。 アクセスからcopyfromrecordsetで、表が作成してある既存のエクセルシートに あるクエリを出力しています。 出力先のエクセルに、クエリ内のレコードの総数に合わせて 表を閉じてくれるように組みたいのですが、 access側からのvbaでは操作できませんでしょうか? よろしくお願いします
またおまえか
またかよって感じね なぜにExcel VBA の話をここで質問するのだろうか
accessでExcel VBAを参照設定すれば、グラフだって作れます。
2007なら、マルチユーザ利用でも安定してる?
申し訳ありませんが、質問させてください。 以下の3台のPCがあります。 1.VISTA Home Basic 2.VISTA Home Basic 3.XP Home Edition ※3台ともAccess 2003 ランタイムで動作してます 1にはmdbファイルを置いてあります。 2,3にはそのmdbをリンクテーブルとして参照しているmdeファイルがあります。 (これは同一のmdeファイルです) 3でフォームを開いた後に、2でフォームを開こうとすると、ひたすら読み込み中。 その後、3のフォームを閉じると、2のフォームが開きます。 (逆に2でフォームを開いた後なら、3でもフォームも開けました) こんな現象なのですが、原因が分かる方いらっしゃいましたら、ご教授お願いします。
【 システム環境 . 】 Windows2000, Access2000? 【 VBAが使えるか .】 いいえ 【 VBAでの回答 】 否 【 検索キーワード 】 WHERE WHEREを使ってある条件に一致するもののみ 抽出しているようなのですが、 (そのデータでは項目が1のもののみ 抽出している) 単純にWHERE記述の所だけ削除しても だめなのでしょうか? 全ての情報を引き出したいのですが
222 :
名無しさん@そうだ選挙にいこう :2009/10/05(月) 19:42:10
>>220 接続できているみたいなので、確認すべき点は2つあると思われる。
A.1のmdbの共有モードとかレコードロックを変えて確かめる。
B.1のmdbが置いてあるフォルダの権限に2と3から接続するユーザを追加してみる。あとから接続するユーザがldbにアクセスできないのかもしれない。
>>221 **項目1が1であるレコードselect**
select * from テーブルA where 項目1=1;
**テーブルAの全レコードselect**
select * from テーブルA;
テーブル名や項目名に**使うな、超解り難いだろ
225 :
サザエボン :2009/10/06(火) 15:02:26
>>215 Dim MyXL As Object
Set MyXL = GetObject(GetLinkedDBName("kintai"), "Excel.Sheet")
Dim db As DAO.Database
Dim intNo As Integer
Dim CN As New ADODB.Connection
Dim RS As New ADODB.Recordset
Set CN = CurrentProject.Connection
RS.Open "勤怠エクスポート", CN, adOpenKeyset, adLockOptimistic
MyXL.Application.Visible = True
MyXL.Parent.Windows(1).Visible = True '--- A
MyXL.worksheets("sheet1").Select
intNo = 1
Do Until RS.EOF
intNo = intNo + 1
'MyXL.Application.cells(intNo, 1).value = RS!支給年月
'MyXL.Application.cells(intNo, 2).value = RS!経理所場コード
'MyXL.Application.cells(intNo, 3).value = RS!氏名
'MyXL.Application.cells(intNo, 4).value = RS!職員コード
・・・以下中略・・・
RS.MoveNext
Loop
表を閉じろよ
>>226 いや、Loopの下もあるんだけれど、入りきらなかった。
ごめんちゃい
228 :
名無しさん@そうだ選挙にいこう :2009/10/06(火) 23:01:06
Nothing
221 * で検索
230 :
198 :2009/10/07(水) 16:14:09
232 :
名無しさん@そうだ選挙にいこう :2009/10/09(金) 09:24:51
>>231 > Microsoft Access が自動的にテーブルからユニーク レコード識別子を
> 決定しない場合、ソース テーブルの各横列をユニークに特定するため、
> 各カラム、もしくはカラムのコンビネーションの確認が要求されること
> がある。使用したいカラムを選び、OK を選択する。
も実行している?
NGの場合は
Dmyでもいいから各テーブルに数値型の uniq key 作ってる?
#pgsql <-> Access だとそんな制約があった気がする
#うそだったらすまん
233 :
231 :2009/10/09(金) 15:13:23
>232 > Microsoft Access が自動的にテーブルからユニーク レコード識別子を > 決定しない場合、ソース テーブルの各横列をユニークに特定するため、 > 各カラム、もしくはカラムのコンビネーションの確認が要求されること > がある。使用したいカラムを選び、OK を選択する。 で解決しました。 ありがとうございます。
235 :
名無しさん@そうだ選挙にいこう :2009/10/09(金) 21:40:50
>>231 できるか、できないかときかれれば、できるよ。実際にやってたし。
でも、accessであるが故の限界がすぐに訪れる。ちょっと複雑なことすると
遅くて使い門にならなくなる。素直にPHP+MySQLとかにしたほうが良いよ。
欲を言えばPHP+PostgreSQLがいいかな。実務ではこれを使ってる。
236 :
名無しさん@そうだ選挙にいこう :2009/10/09(金) 23:45:30
こんばんわ。 みなさんは、ACCESSで どのようなデータベースを作成していますか? ちなみに俺は、名刺データベースを作っています。 名刺の情報を入力して、検索できるようにしています。 データベースを作るのが楽しくてたまりません。 でも、アイデアうかばないんです。 仕事に役立つデータベースを紹介して下さい。
>>236 「必要は発明の母」って言葉を知っているか。
アイディアが浮かばないということは、現状では名刺(顧客)管理ぐらいしか
あなたの業務では必要が無いということだろう。
恐らくたいていの人はあなたと逆で、
「アイディアはあるんだけど、そのアイディアを実現するスキルが無い」
なんじゃないかな?
>>231 ODBCリンクで、テーブル一覧がAccess側で見えているなら、普通そのまま
テーブル開いて、直接読み書きできるが?
できないのだとしたら、ODBC接続の設定をつくる場面で、ログインアカウント
を別途つくったユーザアカウントか何かにしていて、さらにそのユーザアカウント
が出来ることが、MySQL側でリードオンリーに設定されているからだと思うが?
俺の場合、身内で使うだけなので、rootアカウントで全部読み書きできるように
している。ただ、クエリの場合、作り方が変だと、読み書きができなくなる。これは
主キーの取り扱いに関する問題だから、Access単体でも起きるので、別問題。
>>238 それ主キーの問題ということですでに解決済みじゃね?
>>239 あ、本当だった 俺、馬鹿だな・・・・
だから、駄目野郎って言われるんだな。なんか凹んだよ
241 :
236 :2009/10/10(土) 23:30:44
>>237 たしかに必要は発明の母ですね。
でも、必要だと気づかないだけで、
他人に言われてみれば、あぁそのDBいいなぁって思えるじゃん。
他人がどんなDBを作っているか知りたいんです。
殆どの人間は業務で発生する「大量データ」の入力・加工作業だ 言っちゃ悪いが名刺のデータ管理なんぞはエクセルで十分。 毎日100人との名刺交換が365日続くようならそこで初めてDBの出番だよ
243 :
236 :2009/10/11(日) 00:33:07
名刺DB以外にもDBはつくっていますが、 名刺の数が500をこえると、DB作った方がいいと思います。 36500枚になる前に、なにかまずいと気づくはず。 フィールドの数が多いし、備考欄もつけて、付加情報を入力したり、 名刺の画像も添付したりしたいので、アクセスで作りたいです。 URLやメルアドも入力するので、エクセルだと、横長すぎるとおもいます。 というか、エクセルだと、ミスドラッグで、 セルのデータが移動してしまうのが こわいんです。
244 :
名無しさん@そうだ選挙にいこう :2009/10/11(日) 00:41:45
↑なに?この人?
>>236 えーと、マジレスすると、Accessアプリってエンタープライズ系ではなく
EUCに特化した使い方が多いので、「仕事に役立つデータベース」と
きかれると、本当に特定の部署内の特定の誰かにしか関係ない(理解
できない)ほど業務寄りだったりします。
なので、書いてもまったく誰の参考にもならないどころか、下手をすると
何を書いているのかすら分かってもらえないくらいニッチだったりするので、
「○○のためのツール」と書いたところで、はたしてあなたの参考になるかどうか。
それよりも、いますぐ必要ではなくても、関数レベルやクラスモジュール
レベルで使えそうな機能を収集しておきましょう。何か作りたいものが
ひらめいたとき、引き出しが多いほど実現が早いですから。
246 :
236 :2009/10/11(日) 01:13:09
>>245 マジレスありがとう。
必要としている人しか、
「これは使えるDBだ」と感じられないものなんですね。
名刺500枚程度なら桐にしとけばいいだろw
別に名刺の枚数でExcelや桐を勧める必要は無いじゃん。 確かに、少数の名刺管理をするためにAccessを購入するとかならともかく すでに持っているのなら、Accessを使うべきだと思うのだが。
目的と手段が完全に逆になってるアフォへの皮肉だろ
250 :
名無しさん@そうだ選挙にいこう :2009/10/11(日) 13:47:42
>> 243 > URLやメルアドも入力するので、エクセルだと、横長すぎるとおもいます。 >> 243 は横方向にしか入力する発想しかできないんだろうな。 イタすぎる。
251 :
名無しさん@そうだ選挙にいこう :2009/10/11(日) 14:54:41
すみません。初心者です。質問です。 500MB、120万件のデータに対し、あるフィールドを テキスト型→数値型に型変更をしようとすると64万件に減ってしまいます。 どうなってんだと思い、通しNoをつけようとオートナンバー型でIDを作ろうとしたら、 「クエリを完了できません。クエリ結果のサイズがデータベースの最大サイズ(2GB)より大きいか、 クエリ結果を一時的に保存するディスクの空き容量が不足しています」となります。 空き容量は18GBあるんですが。。どうすればよいでしょうか??
>>251 >テキスト型→数値型に型変更をしようとすると64万件に減ってしまいます。
数値に変換できないフィールドが削除されているんじゃないの。
253 :
251 :2009/10/11(日) 17:22:04
>>252 ありがとうございます。その通りでした。
しかし相変わらずオートナンバーはできません。。
>>253 まずなんだけれど、二つある。
1つは、現状のまま、数値型に変換してどうこうなんだけれど、一時的にファイルが増加した際に、
Accessのファイルが2GBを越えているんだと思われる。もしくはメモリ不足?
もしそうなら、現段階でかなり来ている状態なので、二つ目として、MySQLへデータ部分をマイグ
レーションをお勧めする。MySQLにその為のツールがあるから、結構簡単に移植できる。
で、オートナンバーフィールドをどうするかなんだけれども、一度マイグレーションして、MySQL Administrator
上で、テーブルの設定に於いて、IDという数値型のフィールドを用意して、オートインクリメントにして
おく。さらにそれをPrimary keyにしておく。
これで大丈夫だったような。もしできなくても、一度移植した後データだけを消して、上の設定を施し、
Access側から、ODBCリンクで接続して、そこへ追加クエリで流し込むと上手くいくよ。
それだけの件数でそれだけのファイルサイズがあると、かなりAccessでの取り回しは面倒くさくなるか
ら、そういう手法を一度考慮した方がいい。MySQLをお勧めする理由は、マイグレーションが楽なのと
Administratorというツールが素敵だからだ。
大仕事にはなるけれど、一考していただけたらこれ幸いです。
>>253 ただ、MySQL Migration Toolkitはちょっといい加減な部分もなくはない。
たとえば、テキスト型とメモ型をはき違えるケースもあったりするので、こちらでそれを
手修正するケースも実際あったりした。また、型の取り扱いがAccessとMySQLとでちょ
っと違うからここは勉強が必要。
ただ、概ね良好だから、お勧めできる。一度挑戦してみて欲しい。それくらいデータがあ
ると、かなりつかいでがありそうだ。
>>253 あ、あと、もし、興味があって、一度挑戦してみたいというならば、手順はちょっと今まとめている。
よかったら、聞いてくれ。
258 :
253 :2009/10/11(日) 18:51:08
>>サザエボン ありがとうございます。いきなりハードル上がった気がしますが、やるだけやってみます。
>>258 いや、そんなに大変じゃないから。ちょっと時間は掛かるけれど。
ただ、同じ手法がAccess同士でも可能だ。
データが空で同じファイルを用意。空の方はオートナンバーのフィールドを用意
しておく。そのテーブルとリンクテーブルを貼って、データが入っている側のもの
を、追加クエリかなにかで、ごちゃっと渡してやる。
で、テキスト型を数値型に変換するほうは、解決できているなら尚結構。
260 :
253 :2009/10/11(日) 19:36:51
>>259 >で、テキスト型を数値型に変換するほうは、解決できているなら尚結構。
いや、テキスト型で7桁の番号を数値型に変換すると、例えば同じ番号100個くらい続くうち、
半分くらいが削除されてしまうんです。見た目には同じ番号が続くように
見えるのに。。ヘルプ見ても検索しても情報出てこないし。
56個同じ番号が続いて全部削除されてたり、60個のうち2個だけ削除されたり、
で結局120万件が64万件になるんですよね。長整数型→十進数にしても同じでお手上げです。
261 :
名無しさん@そうだ選挙にいこう :2009/10/11(日) 20:01:04
>>260 事例
・全角・半角が入っていたり
・前後に空白があったり
・文字列のあとに枠外にスペースが
262 :
サザエボン :2009/10/11(日) 20:42:15
>>260 重複有りにはなっているんだよね?あとは、そうだな・・・クエリで、Val関数をつかって
みて、そのクエリで移植をしてみるとかな。
Valに変換できなかったものの原因を探ればいい。
>>261 氏のいう問題点ってのがきっと
あるはず。
263 :
253 :2009/10/11(日) 21:01:37
>>261 >>262 いろいろとありがとうございます。重複はありです。空白や半角はチェックした
つもりですが、valやってみます。
>>253 苦労されてるみたいですね。
Accessはファイルサイズが2GBまでしか扱えません。
500MBあるファイル内で今回のようなことを行うと上限にぶつかる可能性があります。
この問題を回避するために、こんな方法はいかがでしょうか?
1.新しい空のmdbファイルを作成する。
2.そのファイル内に変換元ファイルのテーブルへのリンクを作る。
3.作ったリンクを元に[テーブル作成クエリ]を作る。
4.クエリを実行する。
※クエリをデザインする際は、テキスト型から数値型に変換を行うフィールドについて
Val([フィールド名]) としておいてください。(詳細はVal関数でヘルプを参照)
これで新しいファイルに希望されるテーブルが作成されるはずです。
その他、元ファイルにある変換不要なテーブルは新しいファイルに直接インポートします。
すべての作業が終われば、500MB以下に最適化された状態のファイルができるはずです。
265 :
253 :2009/10/12(月) 04:32:30
>>264 できました、というかできそうです。
新しくきれいなデータベースを変換、インポートながら作っていく感じでやれば
いいんですね。ありがとうございました。
266 :
サザエボン :2009/10/12(月) 08:09:59
>>265 ただ、いずれにせよ、もうかなり上限に近い状態なので、これ以上データを
蓄積するなら、移行したほうが望ましいというのはあるので、MySQLも一考
していただけたらと。
フリーだしね。
なにかのきっかけで、MDBが壊れたら目も当てられないので。
一考するならSQLServerExpressEditionへのアップサイジングだろ
正気かよ
スレ違いかもだけど、知ってたら教えてください。 サーバ(Windows Server 2003)にACCESS2000が入っており、そこにMDBを置いています。 別PC(Windows XP Home Edition SP3)で前述のMDBを開いた場合、通常はXPマシンのタスクとして 実行されますが、サーバのタスクとして実行したい場合どのような方法がありますか? (MDBで処理するデータ件数が多いので、ネットワークに負荷が掛かることを懸念しています) 思いついたのは以下の方法ですが、諸事情により実現できません。 1.リモートデスクトップでサーバに接続して実行(ネットワークの規約でポートを閉じているので不可) 2.サーバにMDBを実行するタスクを作成してネットワーク経由で実行(ユーザの権限の制約により不可) サーバを直接操作してMDBを開くしかないのでしょうか。
>>269 アクセスにはサーバー機能はありませんから、
1が駄目ならサーバー機を直接操作するしか方法はないです。
271 :
269 :2009/10/13(火) 14:21:25
>>270 ご回答ありがとうございました。
その後スクリプトなどについても調べてみましたが、やはりサーバを直接操作するしかなさそうですね。
しばらく直接操作で運用してみます。
272 :
名無しさん@そうだ選挙にいこう :2009/10/13(火) 19:05:47
■OS:WinXP SP2 ■Access:Access2007 質問させてください。 フォームに非連結コントロールを貼り、サブフォームにデータシートビューを表示させています。 メインフォームからサブフォームのカレントレコードを移動させたいのですが、どのようにしたら よいでしょうか。 よろしくお願いいたします。
273 :
名無しさん@そうだ選挙にいこう :2009/10/13(火) 19:20:31
質問です! Access2003です。 コンボボックスを二つ作り コンボ1のAを選ぶとコンボ2の表示が1に対応したものしか表示しないようなものを作ったのですが 有給申請書なので選ぶ順番は人それぞれで 上記の逆のパターンも設定できたらなと思うのですが 出来るのでしょうか?
>>272 単純な移動だけなら、Docmd.GoToRecordで。
検索っぽくするなら、また別の話
>>273 出来る。たぶんVBA使うことになる。
275 :
名無しさん@そうだ選挙にいこう :2009/10/13(火) 21:12:12
>>274 ありがとうございます
やり方としては、今作ってあるのをそのままにして
コンボ1にはコンボ2の記述
コンボ2にはコンボ1の記述って感じでよろしいでしょうか?
この二つのボックスでどちらを選んでも絞込みが出来るようにしたいと
思っています
276 :
274 :2009/10/13(火) 22:03:51
>>275 概ねそれでいいのだけど、ちょっと困ったこと起こるかも知れない。
それはそれで考えてみるがよろし。
277 :
名無しさん@そうだ選挙にいこう :2009/10/13(火) 22:07:10
>>276 明日会社でやってみます。
困ったことが起こって行き詰ったらよろしくお願いします。
279 :
名無しさん@そうだ選挙にいこう :2009/10/14(水) 00:23:48
任意のフィールドでソートを実行すると、レコード件数が倍近くに 増えるんですけど、何が考えられますか?
>>279 ソートの実行後にフィルターしてた条件が外れてるんじゃない?
281 :
名無しさん@そうだ選挙にいこう :2009/10/14(水) 01:54:31
>>280 フィルターはもともとかかってないようです泣
282 :
281 :2009/10/14(水) 02:59:41
自己レスです フィルタ、ソートなしの状態でテーブルに表示されている レコード以外のレコードが、ソートをかけたときにわらわらと 現れて結果としてレコード数が倍になっているようだ、 というところまで判明しました
284 :
281 :2009/10/14(水) 09:27:12
そうです 不具合ですか?
>>284 一度MoveLast しないとレコードカウントが得られないのは仕様だから不具合ではないが…
従来よりも想定外の挙動が表面化しやすくなった
286 :
272 :2009/10/14(水) 10:12:52
>>274 ありがとうございます。
検索して指定したいのですが、どのような方法があるのでしょうか。
288 :
274 :2009/10/14(水) 14:35:43
>>286 BookMarkを使う
サブフォームのレコードセットをRecordsetCloneプロパティで取得
取得したレコードセットでFindメソッド使って検索、BookMark取得
NoMatchがFalseなら、
取得したBookmarkをサブフォームのBookMarkプロパティに代入
Findメソッドは4つあるから使い分けな
検索結果が複数行になるなら、Filterのほうがいいかもな
289 :
名無しさん@そうだ選挙にいこう :2009/10/14(水) 15:43:33
環境 Windowsxp / Access2003 レポートに関して教えてください。 レコードソースにテーブルを指定し、フィルターして印刷をする。 1レコード1ページというレポートを作成しています。 その中で、フィールド1の値が"AAA"の場合は、テキストボックス1を表示、 フィールド1の値が"BBB"の場合は、テキストボックス1を非表示にしてテキストボックス2を 表示させるとか、各ページ(レコード)のデータに合わせてコントロールを操作させる方法が ありましたら教えてください。
すません、ファイルのデータ(最大 1,000件程度)をACCESSのテーブルにインポートするとき、
元ファイルはCSVとエクセルどちらのが便利ですか?
環境はWindowsXP + ACCESS2000です。
大差ないかも知れませんが、なんとなく気になりました。
>>289 VBAできるならそのレポートの詳細のFormatイベントなどで
フィールド1の値を判定してテキストボックス1&2の表示/非表示を切り替えたらいいです。
>>290 便利の定義が分からんからなんとも言えん。俺的にはデータ次第。
Excelファイルは表示形式が有効でもあり厄介でもある。
有効なのはデータ型の設定がきちんとしていれば不要なこと。
厄介なのはデータ型の設定がきちんとしたExcelファイルでない場合、
例えば日付を文字列として読み込むことがあること。
293 :
272 :2009/10/14(水) 21:45:58
>>288 ありがとうございます。
下記のようにしてみましたが、移動してくれませんでした。
何か足らないでしょうか。
[レコード更新SQL発行]
Me.SubForm.Requery
Dim rsSub As DAO.Recordset
Set rsSub = Me.SubForm.Form.RecordsetClone
rsSub.FindFirst "ID = " & m_CurrentID
If Not rsSub.NoMatch Then
Dim bm As Variant
bm = rsSub.Bookmark
Me.SubForm.Form.Bookmark = bm
End If
Set rsSub = Nothing
※「SubForm」はサブフォームの名前です。
※NoMatchのif文内に入ることも確認しました。
よろしくお願いいたします。
294 :
名無しさん@そうだ選挙にいこう :2009/10/14(水) 22:42:19
質問です。 環境 WinXP/access2007 テキストボックスが2つあるとします。 テキストボックス1にフォーカスがある時にキーを押した時、 キーダウンの処理の前に、テキストボックス2にフォーカスを 移動させたいのですがどうすればいいでしょうか? よろしくお願いします。
キーダウンの処理って、具体的には何?
296 :
294 :2009/10/14(水) 22:51:53
294の追記です。 もしテキストボックス1がフォーカスを持っていたら テキストボックス2にフォーカスを移動 キーダウンの処理 というようにしたいです。
テキストボックス1のキークリック時イベントに下記VBAかマクロを設定する --------VBA-------- Private テキストボックス1_KeyDown(KeyCode As Integer, Shift As Integer) Me.テキストボックス2.SetFocus キーダウンの処理 End Sub --------マクロ----------- コントロールの移動 テキストボックス2 キーダウンの処理
298 :
294 :2009/10/14(水) 23:01:45
>>297 ありがとうございます。
ただ、テキストボックスやリストボックスにフォーカスがあるかどうか
調べる方法はないでしょうか。
Me.ActiveControl
300 :
294 :2009/10/14(水) 23:08:45
>>299 出来ました。
ありがとうございました。
301 :
274 :2009/10/15(木) 01:36:33
>>293 293のコードで作動確認できた
BookMark使えないレコードセットもあるらしいから、これが原因やろか
Bookmarkableで可否確認は可能。
BookMark使用は必須ではないから
>>287 のリンク先参考も試してみれよ
更新したレコードに移動ってのをしようとしてるんか?
ま、そうであっても動作してるけども。
302 :
272 :2009/10/15(木) 10:12:47
>>301 わざわざ試してもらってありがとうございます。
作動確認できたのですか...
287さんのリンク先は、サブフォームの移動ではなく検索方法に見えるのですが、間違って
いるのでしょうか。
確認できたファイルをいただけたら最高なのですが...
ご検討いただけないでしょうか。
2バイト文字を使用して名前付けをされたユーザー定義関数をクエリで呼び出した時の未定義関数エラーについて Utilitya.mda を自動参照しているために起こる公式バグらしいです ところが参照設定をみても Reference を使って監視しても出てきません 恒常ループかなにかで自動参照したら適宜キルしようと考えたのですが、どうしたら検知できますでしょうか あるいはエラー回避する方法ありますか
オブジェクト名に日本語は積極的に使ってるほうだけど さすがに落とし穴が掘ってあるとわかってる場所は歩かないよ
>>304 業者に委託した部分で勝手に直せないとゆー罠に会社がはまったので
最終手段として、呼び出す際に別のプロシージャ噛ませようかとは考えてますが
306 :
名無しさん@そうだ選挙にいこう :2009/10/15(木) 14:55:53
だったら業者に
307 :
274 :2009/10/15(木) 15:52:31
>>302 287のリンク先はフォーム上のカレントレコード移動であって、同じだよ。
これで出来なければ別の原因があると思う。
移動は出来てるけど、どっかでRequeryしちゃってるとか
>ご検討いただけないでしょうか。
割と基本的な内容と思うので検討に値しない。
理解を深めれば解決できるレベルにあると思う。まぁがんばれ
>>306 出来るならそうするけどね、会社としてそもそも検討してないみたい
しかし使えとゆう
309 :
名無しさん@そうだ選挙にいこう :2009/10/15(木) 20:08:23
WindowsXPSP2、Access2003、Excel2003です。 サブフォーム「SF_AAA」に表示したデータを 保存場所「C:\」、ファイル名「BBB.xls」でエクスポートするのに DoCmd.OutputTo acOutputForm,"SF_AAA","Microsoft Excel(*.xls)","C:\BBB.xls" と書いてますが、これだとワークシート名がサブフォーム名「SF_AAA」になってしまいます。 ワークシート名を指定する方法はありませんでしょうか? 「docmd.outputto エクスポート シート名」などでググっても分かりませんでした。 よろしくお願いいたします。
サブフォーム名を目的のシート名にすればいいじゃ〜〜ん
>>303 > ところが参照設定をみても Reference を使って監視しても出てきません
そらそやろ。
アドインだから、参照設定と関係ないし。
Dim vbp As Object 'VBProject
Dim msg As String
For Each vbp In VBE.VBProjects
msg = msg & vbp.Name & vbCr
Next
MsgBox msg
検知ならこれで。
解除は知らん。
日本語の関数名なんて危ない橋よう渡らんわ。
>>309 アクセスでエクセル制御するならここでかまわんだろ
誘導するのはエクセルVBA制御に話が及んでからじゃね
エクセルのライブラリを参照で読み込んで、データ一つごとにセルなりに渡せばおっけ
簡単なのは、テーブルなりクエリなりのデータを二元配列に格納して直接渡す
例えば2x5のデータを配列myexRenge(1,4)に格納して
ワークシート.シート.Range(“A1,B5“)=myexRange
あるいはアクセスで表示してるデータだけ該当セルに書き込んだり
エクセル側の制御はエクセルVBAだから、向こうだけどな
もう面倒だからワードVBAでエクセル操作しとけや
315 :
272 :2009/10/16(金) 10:23:24
>>307 そうですか...ありがとうございました。
サブフォームだけ移動できないのがとっても腑におちないのですが、
がんばってみます。
サブフォームのRecordSourceをくエリにでも焼きなおしてそのOBJをエクセルへ吐き出せばいいんじゃね
317 :
名無しさん@そうだ選挙にいこう :2009/10/17(土) 15:48:01
ACCESS 2003 から 2007 へ移行してるんだけど 2003の条件付書式で設定できた背景等の「薄黄色」が 2007には無くて困ってる(選択できる色のパレット?に無い) 条件付書式の背景を数値で設定できたりする? BackColor=10092543 みたいに
おれはUIからだと無理だったんでVBAでやってる。 あの黄色、薄すぎず濃すぎずでいい色だよなw
319 :
サザエボン :2009/10/18(日) 21:30:26
320 :
名無しさん@そうだ選挙にいこう :2009/10/19(月) 02:27:33
実は俺も好きだった
321 :
309 :2009/10/19(月) 10:46:23
実は私も好きでした。
>>310-313 休みに入ってしまいレス遅くなりました。ありがとうございます。
[エクスポート(E)]ってボタンをクリックすると
Excelにエクスポートされるようにしてるんですが、
AccessVBA側に「エクスポートされたExcelファイル」側の処理を書く
ってのがよう分らんので、とりあえず現状のままで行くことにします。
支障があればサブフォーム名を目的のシート名にすることも検討します。
ありがとうございました。
322 :
名無しさん@そうだ選挙にいこう :2009/10/20(火) 00:48:41
表形式で入力する時に新規レコードを上に追加する事ってできませんか?
できない。てか、質問内容がわかりにくい。 フォームヘッダに新規入力用のフィールド作ったらいいんじゃね そんで、Insert後ソートするみたいな。こういうことか?
>>312 トンくす
検知出来ました
解除出来ねえ……
VBライブラリだと再読み込みとかあるらしいんだがACCだけじゃむりぽいなあ
325 :
名無しさん@そうだ選挙にいこう :2009/10/20(火) 19:35:31
>>323 データシートとか表形式のフォームで入力する時って、
新規に入力する時に下に空欄レコードが追加されるじゃないですか。
それを上へ上へ追加できれば、フォーム開いた時にわざわざ下にスクロールして入力する必要も無くなるかなと思って。
モニタの前で逆立ちしてろや
どれかかな 1.追加 → ソート更新 2.追加 → 追加順でクエリソート 3.常にレコードが1のテーブルAに上書き → AとマスターデータテーブルBを合体した目的のデータテーブルCをゲット → CをBとして更新 4.全レコードずらす → レコードの頭に上書き追加 最後のはDAOだかなんだかでレコード制御すると楽
よく読んだら違うな データにオートナンバーでも付けといて、フォームのデータソースで並び替えるだけだな
>>325 フォーム開くときに、新規レコードにジャンプ
普通に入力専用フォームにする・・・では駄目なのか?
333 :
名無しさん@そうだ選挙にいこう :2009/10/21(水) 19:33:32
色々ありがとうございます。
334 :
名無しさん@そうだ選挙にいこう :2009/10/21(水) 21:28:55
質問です。 windowsXP/access2007 複数の値を許可してあるフィールドの値を 別のテーブルに取り出す処理をしているのですが 「rs!フィールド名」だと型が一致しませんと 言われます。 どうしたらいいですか?
335 :
名無しさん@そうだ選挙にいこう :2009/10/21(水) 22:21:45
お願いします。 アクセス2003使用しています。 アクセスから、予め用意しておいたエクセルの任意のレンジに レコードセットを出力しています。 (したいこと) レコードセットの件数に応じて、 件数が多く複数ページにまたがるなら 用意しておいたエクセルの上数行(ヘッダやフィールド名)を 次のページにも表示させたい。 どうかよろしくおねがいします!
ま た お ま え か
型を一致させたら?
>>335 とりあえずACCESSのことはほっといて、EXCEL側で
> 用意しておいたエクセルの上数行(ヘッダやフィールド名)を
> 次のページにも表示させたい。
これをできるやり方はわかりますかね?
「ウィンドウ」−「ウィンドウ枠の固定」でできるはずです。
そこから先はACCESS側からデータを流し込むだけでいいはずです。
>>334 格納されている複数の値は該当フィールドのValueプロパティから一時的な
レコードセット作ってループさせて列挙
>>335 どう考えてもAccessの質問じゃないだろ
2003までのExcelならメニューのファイルからページ設定、
2007ならページレイアウトの印刷タイトルからタイトル行を設定
次からは書き込むスレをよく考えろよ
まあそうカリカリしないで・・・ あなたのレベルならどちらで質問すべきか判断できるでしょうけど そうでなければこういう質問はどっちに書いていいかわからなくても 仕方ないと思いますけどね。
343 :
名無しさん@そうだ選挙にいこう :2009/10/22(木) 04:07:01
選択クエリのフィールドのところで型変換するような式や関数を使い、 その下の抽出条件で型変換後の条件を指定すると型不一致のエラーが 出ると思いますが、対処方法はありますか?
>>343 引数にキャストできない範囲が含まれてるんじゃね
>>344 何度も確認しましたがたぶん大丈夫なんですよね・・
>>343 変換前のデータを抽出してから変換してんじゃね
347 :
344 :2009/10/22(木) 14:34:44
>>343 のやりたいクエリはできるので、変換できないフィールド値を
含むレコードがあるのではないだろうか。
変換結果を情報関数で確かめるのがよいかと。
>>346 たぶんそうだと思います。抽出は返還後のデータ型に対して
行いたいのですが、抽出条件は返還前のデータ型に対して働くのでは
ないかと思います。変換してそのまま抽出するにはどうしたらよいですか?
349 :
344 :2009/10/22(木) 14:58:46
>>348 なんだってーって感じしたからシンプルなもので確認した
text型フィールドに 2009/10/22,2009/10/23 要は文字列
クエリフィールド:式1: CDate([txtdatestr])
抽出条件:#2009/10/22#
とした場合、2009/10/22(文字列)のレコードは抽出され、出力フィールド値はDate型
抽出条件を"2009/10/22"とした場合も同様、ただこれはAccessが勝手に解釈してると思う
抽出条件も同じ関数組み込めばいいんじゃね
抽出条件でデータ型が一致しませんっていうアラートだと思うので 抽出条件入れずにクエリ出力してみればいいんじゃね #エラーってレコードあったら、Whereあたりでクエリ実行時にエラーになる。
目的の元データと型、クエリのSQL貼ってくれると解りやすいかも クエリ右クリックSQLビューで確認できる
353 :
348 :2009/10/22(木) 15:54:01
レスありがとうございます。 関数は文字列を引数にして一部Replaceで入れ替え Valで数値にしてDoubleで戻す単純なものです。 抽出条件なしだとうまく変換できており、エラーはありません。 仕方がないので関数のみ抽出条件なしのクエリを作り、 そのクエリに対し抽出条件のみの 別のクエリを施行することで回避できました。 抽出条件に関数を組み込んでも同じでした。一気にできると便利なんですが。
ちょっと複雑なことするとクエリがへそ曲げるって感じだねぇ 多段でクエリ組んだ回避策ってことか
>>353 記述の関数で試してみたけど、期待通りの動作してるけどなぁ
CDbl(Val(Replace([フィールド1],"#","0")))
環境に由来かなぁ:access2007-SP2
Windows XP+ACCESS 2000なのだが、
テーブルA(EXCELからインポート)のレコードを全件テーブルBに新規追加するとき、SQL文は
"insert into テーブルB select 項目A,項目B, ... from テーブルA"
を1回発行するだけでOKなのだが、
テーブルAには無い項目がテーブルBにありその項目(数値型でオートナンバー型は使えない)に
1からカウントアップした連番をセットしたい場合、SQL文の1回発行では無理?
やっぱりVBAでテーブルAのレコード分ループしなきゃいけない?
VBAでカウントアップ用グローバル変数を用意して、そいつをカウントアップして連番を返す関数を作って
SQL文に埋め込んでみたんだが、レコードごとにカウントアップできなかったヨ...orz
あと、試しにテーブルAにオートナンバー型の項目を追加してみたんだが、
EXCELからインポートしたときインポートできなかったレコードが発生してね...orz
(テーブルAに主キーを設定していないから謎)
>>291 ありがd、遅レスすまそ
>>343 男は黙ってクエリを分けれ。
357 :
348 :2009/10/22(木) 17:38:06
>>352 一応載せます
SELECT DISTINCT tableA.fieldA, tableA.fieldB, tableB.fieldC,
Dokuji_Kansuu([tableA]![fieldD]) AS AAAA, tableC.fieldE,
tableC.fieldF, Replace([tableC]![fieldG],1,2) AS [BBBB],
tableD.fieldH, tableD.fieldI, DateAdd("yyyy",7,DateValue([tableC]
![fieldE] & "/" & [tableC]![fieldF] & "/" & [BBBB])) AS CCCC,
DateDiff("d",[CCCC],[tableA]![fieldB]) AS DDDD, Format([fieldB],
"yyyy/mm/dd") AS EEEE FROM (tableB INNER JOIN (tableA INNER
JOIN tableC ON tableA.[fieldA] = tableC.[fieldA]) ON tableB.
[fieldJ] = tableA.[fieldK]) INNER JOIN tableD ON tableA.[fieldA]
= tableD.[fieldL] WHERE (((tableA.fieldB) Is Not Null) AND
((tableB.fieldC)="FFFF") AND ((tableC.fieldE) Is Not Null));
これで先のDokuji_kansuuによりtableAのfieldD(文字列)が数値に変換されるのですが、
抽出がどうも(他のフィールドでも)・・リレーションのせいかな??
ac2007sp2です
質問です。Accessで在庫管理ができると知りましたが(XP/Access2003) ネットショップ(楽天・アマゾン)の在庫数を直接操作(データ送信)できるのでしょうか。取得のみですか? お願いします。
回答です。Accessで在庫管理アプリケーションを作成することはできますが、 ネットショップ上のデータを直接操作できるかどうかはここではわかりません。 ネットショップ運営者に問い合わせください。 お願いです。
>>359 了解です。常識的に考えてローカル上の操作だけですよね。
ありがとうございました。
361 :
360 :2009/10/22(木) 19:05:02
あ、すみません。語弊があるかもしれません。 セキュリティの都合上という意味です。
次は問題が再現する最小構成まで削る作業だな
>>356 > VBAでカウントアップ用グローバル変数を用意して、そいつをカウントアップして連番を返す関数を作って
> SQL文に埋め込んでみたんだが、レコードごとにカウントアップできなかったヨ...orz
関数に引数渡し忘れてるだけじゃねえのか。
364 :
名無しさん@そうだ選挙にいこう :2009/10/22(木) 21:20:05
お忙しいなか、申し訳ありません。 ひとつのテーブルの中にA〜Gの7つのフィールドが用意されています。それぞれに値 が入っており、それが1レコードだけ入っています。 このテーブルのレコードを指定回数だけ、演算させて、その結果を2レコード目、3レコード 目と指定回数に応じてインサートしたいと思っています。 どのようなコードを書けば、1レコード目にいれたものを演算して、指定回数分結果をレコード に追加できるでしょうか?
解るように具体的に書けよ
発想がExcelだな。
367 :
名無しさん@そうだ選挙にいこう :2009/10/22(木) 22:35:13
>>365 具体的には1レコード目には、現在の財政状態を入れてあります。
Aには現金 Bには営業費 といった具合にGまで様々な要素を入れてあります。これは
フォームから入力するようにしてあります。そして、10ヶ月なら10とテキストボックスに
入れてその値を指定回数として使いたいと思っています。
テーブルの名前はshikinとなっています。
この状態でボタンを押した場合に2レコード目以下に1ヶ月後の予想、2ヶ月目の予想を
次々と10ヶ月分予想値として1行目のレコードをベースに演算して入れたいと思ってます。
このあとそのテーブルを元にグラフを構築したいと考えております。
演算の式はつくってあるのであとはこれを指定回数だけ廻して入れるためにはどうしたら
良いのかよくわかりません。
368 :
名無しさん@そうだ選挙にいこう :2009/10/22(木) 22:40:48
Accessではそのような演算結果はテーブルに格納させるべきではありません Excelならすぐできます。
ああほんとこりゃエクセルだな アクセスは基本的にエクセルで言うところのオートフィルだと考えれ セルに入れたデータは必要のある時だけ修正、それ以外は全部抽出するもんだ 目的に合うデータを計算したり加工したりする
>>337 TWESTさんが別アカ取って反撃してますよ
371 :
名無しさん@そうだ選挙にいこう :2009/10/22(木) 23:06:18
>>372 「桐にしとけ」か……久しぶりに聞いたぜ
俺達はそんな大切なことも忘れていたんだな……
桐にしとけ
374 :
356 :2009/10/23(金) 10:26:09
>>363 レスども。
カウントアップ関数は引数無しで、関数内でグローバル変数をカウントアップしてその値を
返すようにしているのだす。
で、SQL文をクエリに貼り付けて実行してみたんだが、関数の結果が出る項目の値は全項目同じで、
クエリを実行するごとにその項目がカウントアップされることを確認・・・関数ってレコードごとに
実行されると思ってたもんだから「?」なんだが・・・ちなみに以下がカウントアップ関数のコードです。
' グローバル変数
Private gNo As Integer ' カウントアップ用
'
' カウントアップ用変数をカウントアップ
'
Public Function getNo() As Long
gNo = gNo + 1
getNo = gNo
End Function
>>374 SQL UPDATE に入れたのか?
大抵は正しい連番が返るんだが、もちろん保証されない
順番が保証されるレコードセット回す方法でSQLと大差ないスピードで出来るぞ
Me.Recordset.Cloneを使う
アクセスの中の人は同じことしてるから
桐にしとけば簡単
376 :
374 :2009/10/23(金) 11:27:52
>>375 レスども。
関数はINSERT文のSELECT句に入れてました。
insert into テーブルA select getNo() as [NO],項目A,項目B,項目C FROM テーブルB
てな感じで。
これがまずいのかなぁ...orz
言われてみればACCESS内だからSQL文で実行してもレコードセットをくるくる回しても
処理速度は大差ないですよね
(DBサーバのORACLEとかSQL SERVERだとレコード件数次第で事情が変わると思うけど)、
おとなしくレコードセットをくるくる回します、ありがとうございました!
PS.桐、一度見てみたいかも。
>>376 getNo関数の戻り値はLong型なんだけど、テーブルAのフィールド[NO]は
きちんと長整数型(Long型)になってます?
378 :
名無しさん@そうだ選挙にいこう :2009/10/23(金) 19:54:10
if
379 :
367 :2009/10/23(金) 19:56:25
>>379 演算結果を部署毎にいくつか期間毎に比較することは簡単にできますけどねぇ・・・
その場合でも
>>364 の方法は取らないのが普通です。
[集計クエリ]あたりで検索して、データベースの基本的な部分を学びましょう。
381 :
363 :2009/10/23(金) 20:30:26
>>374 いやだから、引数渡し忘れてるだろそれ。
引数を渡さないといけないという基礎知識が抜けているのか?
JETはアホじゃないから、引数を取らない関数の戻り値は毎回
同じという前提で最適化して、1回だけ呼び出した関数の戻り値を
以後再利用する。T-SQLで言うところの決定的関数扱い。だから、
レコードごとに実行させたい関数の呼び出しには、必ず引数を
渡す必要がある。仮に関数内部ではそれを使用しないとしても。
慣例的には主キーを渡すのが一般的。
もし主キーを引数に渡してカウントアップされないのなら、
別の問題だから、再現方法を晒せ。
382 :
375 :2009/10/23(金) 21:55:56
>>381 これだと行けてそれだと行けない、と。
理詰めで当てるのは難しそうだ
385 :
名無しさん@そうだ選挙にいこう :2009/10/24(土) 18:09:00
ご教授願います。 表の結合時に"left join"や"right join"を使用しますが、 joinの前に"outer"を付けて保存したいです。 しかし、"outer"を付けて保存し、再度開くと自動的に省略されます。 何か設定方法はご存知でしょうか? 使用Access:2003 OS:XP
>>385 accessがSQLを解釈して書き換えてるんだろうから、無理じゃね
387 :
名無しさん@そうだ選挙にいこう :2009/10/24(土) 18:29:19
>>385 クエリを使うのではなく、VBAのレコードセット作成におけるRunSQLなどで使う
しかないのでは?
SQL文を直接書き込んでも、Accessが自動的に書き直してしまうと思うので。
388 :
名無しさん@そうだ選挙にいこう :2009/10/24(土) 20:22:54
>>386-
>>387 ご返答ありがとうございます。
Accessの仕様である旨、了解しました。
解決方法があると思ったのですが…orz
VBAはあまり知らないので勉強します。
すいません、質問させてください。 【 システム環境 . 】 WindowsXP Access2002 【 VBAが使えるか .】 いいえ 【 VBAでの回答 】 否 08001:[ODBC SQL ServerDriver][SharedMemory]SQL Serverが存在しないか、アクセスが拒否されました。 ODBCWorkspace(17) 01000:[ODBC SQL ServerDriver][SharedMemory]ConneectonOpen(vonnectl) ODBC呼び出しが失敗しました。 DAO,Workspace(3146) (共通モジュール/SetConnect) というエラーがでてしまい、開けなくなりました。このエラーはどういったエラーなんでしょうか。
AccessからSQLサーバ上のデータを開こうとして、 SQLサーバーが開けない(起動していない?)か アクセス権がない(ユーザー名やパスワードが違う)ので 開けないですよ。 という意味みたいですけど。 MDBじゃなくて外部のDBと接続する環境なんでしょうか? だったら外部DBの問題の可能性も。 そうでないなら、MDBファイルを開くように設定しなおすとか。
>>389 正常に動いていたものが動作しなくなったということですよね?
モジュールSetConnectを変更したのでなければSQL Server側の問題ですよ。
392 :
398 :2009/10/25(日) 19:56:35
回答ありがとうございます。
>>390 エラー内容の解説ありがとうございます。SQL Serverがなんなのかもわからなくてググったりしていました。
折角説明してもらったのですが、すいません。よくわかってないです。>MDBじゃなくて外部のDBと接続する環境
>>391 そうですね、数日前までは普通に使用していたので、特に変更などはしていないと思います。
SQL Server側で何か設定しなおせば使えるのでしょうか。
393 :
メモリ君 ◆7mDj3mSGOQ :2009/10/25(日) 20:26:44
>>392 よく見えないのだが、SQL Server側というけれど、それって遠隔地に
あるんじゃないのかい?それと、管理は別の方がやっているとか。
アカウント消されたとか、サーバーメンテナンスで止まっていたとか、
そういうのがわからんと。とりあえず、こちらが何もしていない、手も
加えていないのなら、SQL Serverで接続する際に何かがあったとみ
て間違いない。
394 :
メモリ君 ◆7mDj3mSGOQ :2009/10/25(日) 20:30:10
>>392 ちなみに、MySQLでtestserverというODBC接続の設定をシステムDSNに作っていた
際に、MySQL側でアカウントを消しただけなら、ログイン画面が出るだけ。
一方停止していた場合には、ODBC接続 --testserver-- への接続に失敗しました
というメッセージが出るよ。
そちらは多分、ADPか何か使っているか、VBAでコネクトするような仕組みにしてある
んだと思うけれどね。
[SharedMemory]ってローカルじゃね?
【 システム環境 . 】 WindowsXP SP2とwindows Vista SP1, それぞれAccess2003 Runtimeのみ 【 VBAが使えるか .】 はい 【 VBAでの回答 】 否 【 検索キーワード 】 Access2003 Runtime エラー 2709.内部エラーが発生しました Access2003で開発した経理ソフトをAccess2003 RuntimeのみインストールされてるPCで動かしています。 今週入って、今までwindows updateをかけてなかったのでupdateかけれるものを全てかけて 経理ソフトを立ち上げましたら「Access2003 Runtimeを設定しています・・・」という画面が表示された後に エラー 2709.内部エラーが発生しました。 (Global_PIA_OWC11 ) とOKボタンのみのエラーメッセージが出てきました。 OKボタンを押せばその後は問題なく経理ソフトが動くのですが、このエラー画面が気になり エラー内容を検索かけてみた所、windows updateのKB947319をかけたら上記エラーが出るような旨出ていました。 ですが現在経理ソフトがインストールされているPCにはKB947319がインストール済の為に削除する事ができません。 他の検索結果では「Windows Installer CleanUpユーティリティ」でRuntimeをアンインストールしてインストールしなおすという 解決案も出ていましたが、このPCではユーティリティを使ってRuntimeをアンインストールしようとしてもエラー 2709~と同じエラー画面が出て アンインストールする事も出来ませんでした。 このエラー画面を消す方法はあるのでしょうか?
398 :
名無しさん@そうだ選挙にいこう :2009/10/26(月) 19:13:44
有る処理をしました。 結果、VMのサイズがスゴイことになりました。1.24GBもVMサイズがあり、メモリ消費も800Mも あります。処理は終わったのに、これらが解放されません。 VBAではきちんと、レコードセットなどは全部nothingしているのに、プログラムを再起動しない と、これらメモリが解放されません。 どうしたら、解放できるのでしょうか?
399 :
396 :2009/10/26(月) 19:50:23
401 :
名無しさん@そうだ選挙にいこう :2009/10/26(月) 19:57:03
>>400 そうそう タスクマネージャを見ると、一番右にでてくる奴。
この処理を行っている最中はどんどん膨らんでいく。
で、処理が終わっても、何も変わらない。
で、別の処理を行うとメモリ不足と吠えるという体たらくなのです。
>>401 そこまではっきりわかるほど漏れてるならすぐデバックできるでしょ。
さっさとやれ。
403 :
名無しさん@そうだ選挙にいこう :2009/10/26(月) 21:02:02
>>402 ところが、何がいけないのかさっぱりわからん。
このルーチンってのは、単純なもので、テーブルにあるデータをレポートで個別の
PDF作成するようにDo_Untilのループで100個ほどつくるもの。
PDFは2007のPDFプラグインによるもので、DoCmd を使う物。
DBEngine.SetOption dbMaxLocksPerFile, 200000 を指定した後に
Dim My_Db As DAO.Database
Dim My_Rst As DAO.Recordset
Dim My_Rst2 As DAO.Recordset
Dim My_Path As String
Set My_Db = CurrentDb()
Set My_Rst = My_Db.OpenRecordset("SELECT * FROM テスト ORDER BY 社員コード")
Set My_Rst2 = My_Db.OpenRecordset("SELECT * FROM 社員マスター WHERE (((社員マスター.レポート)=-1) AND ((社員マスター.経場コード) Between 100 And 200));")
My_Path = CurrentProject.path & "\pdf\"
Do Until My_Rst2.EOF
DoCmd.OpenReport "メール送信", acViewDesign, , , acHidden
Application.Reports("メール送信").Filter = "社員コード='" & My_Rst2!社員コード & "'"
DoCmd.Close acReport, "メール送信", acSaveYes
DoCmd.OutputTo acOutputReport, "メール送信", acFormatPDF, My_Path & "\" & My_Rst2!社員コード & ".pdf", False, 0
My_Rst2.MoveNext
Loop
My_Rst.Close: Set My_Rst = Nothing
My_Rst2.Close: Set My_Rst2 = Nothing
My_Db.Close: Set My_Db = Nothing
何か足りないのか?それとも、やり方を間違えているのか・・・・
だから、普通にデバッグしろよ
>>403 >DBEngine.SetOption dbMaxLocksPerFile, 200000 を指定した後に
たぶん、このせいだろう。ルーチンを抜ける前にMaxLocksPerFileを規定ぐらいに戻してみては。
406 :
名無しさん@そうだ選挙にいこう :2009/10/26(月) 21:55:53
>>404 ちょっとやってみる。
>>405 一番最後に9500で指定を入れてみる
もう一回挑戦してみます。優しく教えていただき感謝です。
PD……F?
408 :
374 :2009/10/27(火) 10:23:48
遅レスすまそ、知恵熱出てた。。
>>377 はい、LONG型になってます。
>>381 引数渡しの基礎知識が抜けていました、そういうことだったんですね!試してみます!!
>>382 参考にします。
皆さんありがとうございましたm(_ _)m
すいません、質問させてください。 WindowsXP, Access2002 PCを起動すると起動すると最初に 重大なエラー。言語ごとのリソースファイルC:Program Files\MicrosoftSQL Server\ 80\Tools\Binn\Resources\1041\SQLSVC.RLLを読み込めなかったので実行を継続できません。 と出たのですが、ググっても解決方法が載っていないままのサイトしか見つからず、途方にくれています。 どのようにすれば直るのでしょうか。SQLSVC.RLLっていうのはどこからかDLできるものでしょうか?
それ、Accessの問題っていうより、MicrosoftSQL Serverの問題なんじゃね?
>>410 Accessのファイルの一部が開けないのでAccessがおかしいのかなと思ってました。
\1041といフォルダは見つかったのですが、SQLSVC.RLLはありませんでした。
他のPCに入っているSQLSVC.RLLをコピーしてきてもいいものなのでしょうか?
重大なエラーと出ました。 <
http://windowsxp_toshiba.pasokoma.jp/d_436151.html >
SQLSVC.RLLというのはMicrosoftSQL Serverというソフトの1部です。
スタート→ファイル名を指定して実行→msconfigと記入してOK。
システム構成ユーティリティのスタートアップまたはサービスに
SQL Server関連のものがあったらチェックを外して再起動してみてください。
コマンドと場所の間の縦棒をダブルクリックするとフルパスが見られます。
とのこと。
>>412 はい、自分がぐぐって見つけたサイトってそこのことです。
最終的に SQL Server 何回か確認してやりましたけど元に戻らないです。
とあったので、もしかして直ってないまま終わっているのかとおもって質問させてもらっています。
教えて!保険市場 SQLServer2005のサービスが起動しない <
http://oshiete.hokende.com/qa5186337.html >
まず、「スタート」→「すべてのプログラム」→「SQLServer2005」→「構成ツール」→「SQLServer構成マネージャ」の順に開いて下さい。
そうすると、SQLServerConfigurationManaerと言うのが開きますから、その中で、状態が停止のプログラムが無いでしょうか?
もしあれば、そのプログラムをダブルクリックしたらプロパティが出てきますから、「開始」をクリックしたら、実行に状態が変わります。
それで、動かなかったプログラムが動きました。
とかは?
MSSQLSeverスレに行けというところだが、 行ったところで、ボケカス言われて解決しねぇかもだな。
うん、ここの民は基本いい人。
ウォームハートエスパーの棲むスレだな。
そういう空気は大切にしないとな
質問があります。 会社に行かないと物がないのと会社から書き込みできないので多少抽象的になってしまうこと お許しください。 今帳票フォーム(ログイン)とメインフォームがあります ログイン画面で社員番号を入れてログインボタンを押します。 番号が存在するならメインフォームが立ち上がるのですが、 この立ち上がると同時に、ログイン画面で入れた社員番号の情報を メインフォームに載せたいと思っています。 入力した番号だけはメインフォームに参照させることが出来たのですが その他に名前と部署をメインフォームのテキストボックスに入れたいのです。 ログインしたとき(入力は社員番号のみ)に社員情報をすでに表示したいと言うのが目的です。 テーブルは社員マスタの中に番号、名前、部署で主キーは番号です よろしくお願いします
>>420 Vlookup関数を使えばいいと思うよ〜〜
DLookUpでしたw
423 :
名無しさん@そうだ選挙にいこう :2009/10/29(木) 20:48:58
os:WinXp Version:2007です。 突然ですが、お聞きしたいのですが、 氏名 点数 週塾日 Aさん 50点 平成21年5月3日 Bさん 55点 平成21年6月1日 ・ ・ ・ の様なテーブルがあり、そこから たとえば、 年・月 月別習塾者 60点以上 21年5月 20人 10人 のように作りたいのですが、月別の人数合計は出せても、 ○○点以上の合計人数を出す方法がわかりません。 四苦八苦してやっても、それぞれの点数(60点、61点、62点)の 合計人数しか出せずに困っています。 どうにかなる方法ありませんでしょうか
DCount("点数","21年5月",点数>59) とかかな?
426 :
名無しさん@そうだ選挙にいこう :2009/10/29(木) 23:11:58
>>423 SELECT format(#5/1/2009#,"e") & "年" & format(#5/1/2009#,"m") & "月"as 年・月, Count(テーブルA.氏名) AS 60点以上, (SELECT Count(*) FROM テーブルA WHERE
((テーブルA.週塾日) Between #5/1/2009# And #5/31/2009#)) AS 月別週塾者 FROM テーブルA
WHERE (((テーブルA.点数)>=60) AND ((テーブルA.週塾日) Between #5/1/2009# And
#5/31/2009#));
427 :
名無しさん@そうだ選挙にいこう :2009/10/30(金) 19:38:01
Accessだけでメシ食えるの?
428 :
名無しさん@そうだ選挙にいこう :2009/10/30(金) 20:14:42
>>427 飯食っている人いるんじゃない?
俺は、バイトで作ったことあるよ。
けっこう中小では需要あるんね。 企業内で担当になっちゃう人もいるでしょ。
20年前はコボルで食ってたけど気がつけば今はAccessが飯の種になってるな
431 :
名無しさん@そうだ選挙にいこう :2009/10/30(金) 21:51:54
Accessってかなり作り込まないと実は使えないよな。
432 :
名無しさん@そうだ選挙にいこう :2009/10/30(金) 22:06:12
2週間もあれば1本作れる。
433 :
名無しさん@そうだ選挙にいこう :2009/10/30(金) 22:56:44
そんなにかかるのか?
頭は使うが工夫次第で工数はどんどん削減していける
435 :
名無しさん@そうだ選挙にいこう :2009/10/30(金) 23:41:09
>>433 業務で使うアプリはテストに時間がかかるからね。
436 :
名無しさん@そうだ選挙にいこう :2009/10/31(土) 22:13:44
アプリっていえるのかどうかビミョー
437 :
名無しさん@そうだ選挙にいこう :2009/11/01(日) 19:44:00
職場のシステムで出せる帳票が余りに使えないので、csvで落としたデータをAccessに取り込んで加工して帳票出してる。なんかまどろっこしい。
XP+ACCESS 2000です。 加工前データに入数マスタを当てて加工後データのようにしたいんですが、ひとつのクエリで加工できますか? 加工前データ 品名、数 A 、5 B 、2 入数マスタ N0、品名、入数 1、A 、2 2、B 、3 加工後データ 品名、数 A 、2 A 、2 A 、1 B 、2 できそうでできないんです・・・ひらめいた方はぜひ教えてください、よろしくお願いします!
>>438 総数5を入り数2で、2,2,1で分解、入り数未満はそのままっつーことだよな
その手の要件だったらVBAでレコードセット扱う感じじゃないかな。
クエリでできるんすかね。
>>437 可能な範囲でクエリ作るくらいじゃね?
440 :
名無しさん@そうだ選挙にいこう :2009/11/02(月) 10:08:54
>>438 439が書いているように、join の結果をVBAで処理するのが
いいような気がする(自分ならそうするけどね)
441 :
438 :2009/11/02(月) 16:37:59
>>439 >>440 ありがとうございました、やはりクエリでは厳しいのでVBAでレコードセットを使ってやってみます。
442 :
名無しさん@そうだ選挙にいこう :2009/11/02(月) 18:59:53
Access2007の評判はどう?
444 :
名無しさん@そうだ選挙にいこう :2009/11/03(火) 13:29:17
なんかレポート印刷できない。 他のテキストはできるんだけど、内容が重いのかな?
日本語でおk?
446 :
名無しさん@そうだ選挙にいこう :2009/11/03(火) 20:59:42
447 :
名無しさん@そうだ選挙にいこう :2009/11/03(火) 22:39:04
プレビューは出来ます。 プリンターの性能が悪いのかな?
448 :
名無しさん@そうだ選挙にいこう :2009/11/03(火) 22:44:43
なら、複雑なレコードソースかレポートが複雑か(D系関数の多用とか)なんかで時間がかかるだけじゃないかな?
449 :
名無しさん@そうだ選挙にいこう :2009/11/03(火) 23:11:53
印刷完了する前にプリンターからエラーが出ちゃうんだ。 だからレポートの5分の1くらいしか印刷されない;;
プリンターからエラーがでるなら。スレ違い。
同じような経験で、プリンタのメモリを特注で増やしたが無駄だった アクセスやプリンタとは無関係な、Windowsのプリンタのキャッシュみないななんたらの設定して解決した、詳しくは忘れた
>>449 いつの間にか直るケースもあるが、プリンタドライバ再インストールやWindowsUpdateなどで直るかも?
ちなみにページ数が分かっているなら何回かに分割してページ指定で印刷できたはず、最悪1ページずつ印刷・・・面倒だが。
453 :
451 :2009/11/04(水) 10:50:34
思い出した、スプール フォルダ を空きのデカイドライブに移動した 数十ページ印刷すると直ぐにスプールが膨大になって止まる
あー そんな話聞いたような
455 :
名無しさん@そうだ選挙にいこう :2009/11/04(水) 22:35:16
ID 野菜 料理 1 にんじん カレー 2 ピーマン サラダ のテーブルがあるとする。ボックスを二つつくり、 コンボBOX フィールドの絞込み、 テキストBOX 検索用打ち込み フォームを「検索」としてクエリを select * from テーブル where forms!検索!コンボBOX Like "*" & Forms!検索フォーム!入力 & "*"; とやっても何も出てこない。 forms!検索!コンボBOXの代わりに、 直接のフィールド名(「ID」「野菜」「料理」)に置き換えればうまくいく。 DoCmd.Requeryはしてるんだけど。 どうやったら良いか教えてください。
457 :
名無しさん@そうだ選挙にいこう :2009/11/05(木) 05:22:37
>>456 select * from テーブル where forms!検索!コンボBOX
Like ""*" & Forms!検索フォーム!入力 & "*"";
じゃないかなと。間違ったらゴメン。
458 :
456 :2009/11/05(木) 07:17:21
>>457 select * from テーブル where forms!検索!コンボBOX
Like "*" & Forms!検索!入力 & "*";
とやってうまくいきませんでした。同じフォーム内です。
>.456はフォーム名表記ミスです。ごめんなさい。
>>456-459 シングルクォートじゃないとエラーになるんじゃないかな?
SELECT * FROM テーブル WHERE Forms!検索!コンボBOX
Like "'*" & Forms!検索フォーム!入力 & "*'";
あと、念のため実行時にForms!検索!コンボBOXとForms!検索フォーム!入力を
Debug.Printしてみてください。
.Textだけセットされていて、.Valueがセットされていないかもしれないので。
461 :
名無しさん@そうだ選挙にいこう :2009/11/05(木) 15:04:38
PG素人な質問ですいません。WORDのVBAから書き出した計算式をACCESS上で実行したいんですが ACCESSのVBAって9万文字ぐらいの計算式実行できますか?
>>456 > select * from テーブル where forms!検索!コンボBOX
「forms!検索!コンボBOX」はフィールド名にはならないよ。
あくまでフィールド名称を指す文字列になるだけで。
だから、Likeで比較してもフィールドの値とじゃなく、
フィールド名称を指す文字列と比較されているだけ。
具体的に書くと、「"野菜" Like "*hoge*"」とかに
なっているだけ。
自分にはうまい方法が思いつかないけど、VBAでSQL
入れ替えないとダメじゃないかという気はする。
>>463 コンボBOXのリストにフィールド名がセットされていればOK
465 :
463 :2009/11/05(木) 21:25:06
>>464 ども。
試してみたけど、自分の環境だと検索されないんだよね。
列の値じゃなく、単なる文字列リテラルとの比較になっている
ようにしか見えないんだけど。
でもできる人がいるのであれば、>456 さんはできる人に教わる
のがよいのでしょう。
ということで、できない私は撤退します。汚してすまんかった。
>>457 >>459 >>460 レスサンクス。「"」追加してみましたが、駄目ですね。「'」も同じ。
Debug.Printしてみました。コンボBOXでID、テキストBOXで1を打ち込んだ後
?Forms!検索!検索BOX()
ID
?Forms!検索!入力()
1
と出るので、値は代入されているようです。
>>463 検証してみましたが、確かにフィールド名が死んでいるようです。
>>464 値集合タイプ フィールドリスト
値集合ソース テーブル
他は全てデフォルトのコンボボックスです。どうしたものですかね……。
>>466 BuildCriteriaで解析させてみては?
strFilter = BuildCriteria(Me.コンボBOX, dbText, "like *" & Me.入力 & "*")
strSQL="select * from テーブル where " & strFilter
そもそも、そのクエリ句はどこに適用させてるの? フォームのレコードソースか何か?
質問 Access 2003 で、 同じmdbでも、通常版のアクセスではエラーにならないのに ランタイム版ではエラーメッセージが出る場合があります。 コーディングで現在実行されているのが通常かランタイムかを知る方法はあるのでしょうか?
thanx
>>467 レスサンクス。SQLをテキストに出すように組んでみた。
strFilter = "*" & Replace(Me.入力, " ", "* And *") & "*"
strFilter = BuildCriteria(Me.コンボBOX, dbText, strFilter)
strSQL = "select * from テーブル where " & strFilter
rs.Open strSQL, cn, adOpenStatic, adLockOptimistic, adCmdTableDirect
Set Me.Recordset = rs
For i = 0 To 2
Me.Controls("text" & Format(i, "0")).ControlSource = rs.Fields(i).Name
Me.Controls("lbl" & Format(i, "0")).Caption = rs.Fields(i).Name
Next
上手くいかない。二行目右のstrFilterをMe.入力に変えるとOKなので
ワイルドカードが原因みたい。出力の方法が悪いのかな?一つしか出せないし。
>>468 そです。そういう方法で考えてたのですが、
上手くいかないので上の方法に変えつつあります。
474 :
473 :2009/11/09(月) 05:19:03
>>467 出来ましたー。
どうも
strSQL = "select * from テーブル where " & strFilter
がワイルドカードに対応していないみたい。
フィルターにしたらいけました。
475 :
467 :2009/11/09(月) 06:13:00
>>474 んなーことない。Likeが抜けてるんじゃねか
まぁ解決したならべつにえーけどな
>>475 確かに、replace使い始めてからlike忘れてます。
ワイルドカードというよりは、「'」と「"」がいりこんでいると駄目なのかもしれません。
SQLは""で囲むので、「'」に置き換えてみたりしたのですが。
>>473 だと一つしか出力できないです。フィルタのように、
複数当てはまる場合に複数出力するにはどう書いたら良いですかね?
これも上手くいかなかった原因のような。
dim a,b as integer でbのデータ型が違うと怒られた。 dim a as integer dim b as integer だと怒られない。 なんでですか?
dim a,b as integer これは Dim a As Variant Dim b As Integer と等価だから
>>478 そうなの?
bがintegerなら怒られないはずなのに…
>>477 文法が間違っています。
Dim a As Integer
Dim b As Integer
と等価なのは…
Dim a As Integer, b As Integer
です。
ちなみに、
Dim a, b As Integer
と等価なのは…
Dim a As Variant, b As Integer
ですね。
>>481 ありがとうございます。勉強になりました。
市販のmdbファイルに書いてあったのを真似していました。
件のmdbファイルをよく調べてみます。プログラマーが間違えていたら面白いなw
483 :
名無しさん@そうだ選挙にいこう :2009/11/10(火) 02:03:50
Vista / access2007環境 PC数台のLANで管理者だけがデータの登録・更新が可能で 一般ユーザーは特定のデータのみを閲覧できる共有システムを作ることになりました。 accessのみで構築しようと思ったのですが、調べるうちにセキュリティに不安がでてきました。 ユーザー単位のデータの隠ぺいは可能なのか? 直接データベースファイルを開かれたら? などの心配があります。 インターフェース部をVBA制御してデータベースは暗号化しておくと出来そうな感じですが そもそもそんな事が出来るのかさえわかりません…。 ACCESS2007のみで組む場合に気をつける点など教えてください。 ※管理者のPCのみaccess2007で他はランタイムを考えています。
484 :
483 :2009/11/10(火) 02:19:22
あ、インターフェース部を共有フォルダに置いてデータベースファイルをローカルフォルダに置けば セキュリティ的に良いような気がしてきました・・ 連投すんません。
485 :
名無しさん@そうだ選挙にいこう :2009/11/10(火) 02:50:07
それは(--;)
486 :
名無しさん@そうだ選挙にいこう :2009/11/10(火) 03:04:39
テーブルのみ分離したデータ.mdbのみを共有フォルダに置き、一般ユーザーには閲覧のみできるクエリで作ったインターフェース用.mdeを配布とか。ただし、accessではちと荷が重いけどね。
>>483 分割してバックエンドaccdbはパスワードで縛る必要があるわな。
でもってフロントエンドaccdeでリンクテーブル使う方法もありだが、
これってセキュリティレベルは超低い。ちょっと分かる人であれば書き込みが可能。
もう少し縛るなら、リンクテーブル使わない方法でフロントエンドを作るしかないべな。
あとはユーザ管理の機能がないから、自前でUI制御するくらいか。
セキュリティ気にするならSQLserver使うべきなのだが、accessでも似たようなことが
できなくもない。まぁ限界があるってこと。
>>483 拡張子である「.mdb」を取っちゃうという手もある。
こうするとぱっと見ではACCESSだとわからない。(プログラムからは普通に繋がる)
まあファイルをオープンすると同じフォルダにldbファイルが出来ちゃうから詳しい人には
わかってしまうけど・・・。
セキュリティの問題はどこまでやれば安全ってのがないからね。
相手が本気で色んな知識や技術を修得してきたらそれなりの対処をしていてもクラック
されてしまうだろうし。(例えば誰もいない時や一瞬の隙をついて個人のPCからデータ
抜き出したりとかデータロガーでログインパス取得したりとかやり方はいくらでもある。)
「完璧なセキュリティは無理です」ってことを言っといたほうがいいと思う。
あっ、でもデータ分けるとかmdbにパスワード付けるとか一応のことはしとくべき。そうすれ
ば何かあった時もセキュリティ的な対策はしていたということを主張できるし。
489 :
488 :2009/11/10(火) 10:18:16
>>483 書き忘れたけどmdbを置く共有フォルダを隠し共有に設定しておくのもオススメ。
地味な方法も組み合わせると結構効果あるよ。
490 :
483 :2009/11/10(火) 12:11:35
ご教授ありがとうございます。 まだまだ知識がないので 教えてもらったことを調べていきたいと思います。 ネットワークシステムやセキュリティ云々を言うなら ACCESSのみで組むべきじゃない感じですね。 こういう低予算かつ極小のシステムってどういう構成がいいんだろう ACCESS+MySQLなどでしょうか… ACCESSにユーザー管理の機能があったらすごく楽なのにと思います。
>>483 フロントエンドをAccessで考えるなら、SQL Server Express Edition と
組み合わせるのが無難と言えば無難かなぁ。Express Editionなら無償だしね。
492 :
483 :2009/11/10(火) 20:48:43
SQL Serverに無償のEditionがあったんですね! 零細には手が出ない代物と思ってました… ACCESSのみだと複雑でイレギュラーなテクニックが必要になりそうなので データベースをSQL Serverにする構成で取り組んでみます。 ありがとうございました。
493 :
名無しさん@そうだ選挙にいこう :2009/11/10(火) 21:13:00
M$-SQLserverなんかで組むんならPHP+PostgreSQLで組んじゃうな。ちょっとハードル高いぞ。
印刷物とかどうすんの
495 :
名無しさん@そうだ選挙にいこう :2009/11/10(火) 21:28:41
tcpdfでやってるよ。かなりハードル高いぞ。
496 :
483 :2009/11/11(水) 17:35:31
>>487 >分割してバックエンドaccdbはパスワードで縛る必要があるわな。
>でもってフロントエンドaccdeでリンクテーブル使う方法もありだが、
>これってセキュリティレベルは超低い。
遅レスすみません。
これってリンクテーブルだとaccdbへの接続パスワードがハックされやすいからですか?
497 :
名無しさん@そうだ選挙にいこう :2009/11/11(水) 19:19:34
test
失礼しました、質問です。 アクセス2007を所有しております。 教えていただきたいことはまず、、以下の内容のものはつくれるかどうかで、 どのようなテーブルを作っていくべきか助言が欲しいのです。 ・何がしたいか → マンション、アパートの管理データベース ■各住宅の入居者の情報 世帯主以外にも同居者の情報も含ませる(生年月日[年齢]、性別、収入など) 住宅は退去などにより空きが出る→新しい入居者が入ることもある。 ■指定した期日以前などについて年齢、入居者数などの集計はとれるか(指定した期日なので年齢がさかのぼることもある)
499 :
名無しさん@そうだ選挙にいこう :2009/11/11(水) 21:19:23
できるよ
>>499 ありがとうございます。まだ必死に基本書読んでる段階ですが、がんばります。。
501 :
名無しさん@そうだ選挙にいこう :2009/11/11(水) 21:38:27
>>498 生年月日さえわかれば年齢は計算で出る。遡る事も可能。
マン管DBだけど住民基本台帳みたいなDBつくればいいよ。
502 :
名無しさん@そうだ選挙にいこう :2009/11/11(水) 22:35:37
>>498 その程度なら片手間でも作れるくらい簡単だよ。
肝になる部分は少ないから。平たいDBだね。
より複雑な計算をしてってならべつだけれど、その程度の管理なら
エクセルでもやってやれなくない。
503 :
名無しさん@そうだ選挙にいこう :2009/11/11(水) 22:56:43
まあ、それが初めてのDBなら難しいと思うよ。経験者は色々いうけど、とにかくやってみなよ。いろいろわかるのはそれからで十分さ。
Access でセキュリティというと、 MDW を使えば充分だと思うんだが、これじゃダメなのか?
505 :
498 :2009/11/11(水) 23:24:05
みなさんありがとう。テーブルを考えるだけでかなりかかりそうだ・・・
>>498 例えば、こんな感じのテーブルになる。
想像で適当に書いたので参考までに、あしからず。
テーブル
住宅: <住宅ID(オートナンバー)>, 住所, 物件名
住宅部屋: <住宅ID, 部屋番号>
住宅入退: <住宅ID, 部屋番号, 住宅入退ID(オートナンバー)>, 入退区分{入居|退去}, 入退日
住宅入居者: <住宅ID, 部屋番号, 住宅入退ID, 入居者ID(オートナンバー)>, 世帯主{Yes|No}, 氏名, 生年月日, 性別{男|女}, 収入
*<>が主キー。
リレーションシップ
住宅(住宅ID) 1-多 住宅部屋
住宅部屋(住宅ID, 部屋番号) 1-多 住宅入退
住宅入退(住宅ID, 部屋番号, 住宅入退ID) 1-多 住宅入居者
・指定日の空き部屋状況は、住宅部屋と住宅入退(入退日が指定日以前かつ最大のもの)を左結合(LEFT JOIN)して、
入退区分が入居なら入居中、それ以外(NULLか退去なら)なら空き。
・{入居時 or 退去時}の年齢は「入退日-生年月日」で求められる。
・指定日の集計に関しても上の条件のクエリを元に求められる。
・ポイントは入居と退去の履歴(日付)を残しておいて、それを条件に抽出すること。年齢は生年月日を元に求めること。
似たような案件のデータベースのサンプルを探してみて中身がどうなっているか調べてみるといいよ。
後は今ある入力データを正規化してみるとか(「正規化」の手順は調べればすぐ分かる)。
まあ、頑張ってみてくださいな。
>>504 たぶんAccess2007で廃止(ただしネイティブフォーマットのaccdb)されたからじゃね?
>483 は2007らしいから、こういう流れになったかと。
2003までなら、ユーザーレベルセキュリティふつうにできるけどな。
Accessの手頃感が突出しすぎてユーザ動かないんで、SQL鯖への追い出しにM$も必死w
>>506 ご丁寧にありがとうございます。
早速参考にさせてもらいたいと思います。正規化についても調べてみます!
>>506 さらに正規化するとすれば
入退区分{入居|退去}
↓
入退区分:<入退区分ID(オートナンバー)>,入退区分(テキスト)
性別{男|女}
↓
性別:<性別ID(オートナンバー)>,性別(テキスト)
住宅:<住宅ID(オートナンバー)>,;住所,物件名
住宅部屋:<住宅ID,部屋番号>
住宅入退:<住宅ID,部屋番号,住宅入退ID(オートナンバー)>,入退区分ID,入退日
住宅入居者:<住宅ID,部屋番号,住宅入退ID,入居者ID(オートナンバー)>,世帯主{Yes|No},氏名,生年月日,性別ID,収入
510 :
名無しさん@そうだ選挙にいこう :2009/11/12(木) 10:06:56
まあ、世帯主なんかも正規化の対象か。
511 :
487 :2009/11/12(木) 12:03:59
解除ktkr
>>496 リンクテーブルの場合
1.パスワードが平文で格納されてるから、特別なツールを必要とせずまる見え
2.フロントエンドaccdeに向けてODBC/ADO等で接続すると、フロントエンドが
接続を代行するような振る舞いをする。
まぁフロントエンドもパスワード暗号化なりすりゃいいのだけれど。
使用環境、セキュリティ、開発難度のバランスを取って製造ということ。
社内で小規模というのであれば、性善説前提+データ保全目的のセキュリティ
構成もありだと思う。
損することはないから、MSSQLServer/MySQLなど着手するならしちゃった
ほうがいいかもね。
どうでもいいがDBで管理しなきゃいけないほど大量のアパートマンション保有とか どんだけ資産家なんだよ
資産家って思うかねw。可能性がないわけじゃないけど。
514 :
483 :2009/11/12(木) 16:57:07
>>511 パスワードが丸見えとかちょっとひどいですね・・
素直にSQLServer使います。
ありがとうございました。
>>515 甘やかすなよ。おまえの甘やかしは
そいつのためにならないだろ。
>>516 励ましてやる方が伸びる子もいるのだよ。
518 :
498 :2009/11/13(金) 15:36:59
>>506 何から何までありがとうございます。
試しにやってみました。データ型について怒られまくってます。初歩の初歩の段階…。
住宅情報(建設年度 管理戸数 部屋面積など)
入れるのを忘れました。
>>506 さんの書いてくれたレス印刷して持ち歩いてます。頑張ります。
ネット上に住宅管理のサンプルって中々見つからないものですね
次は、何を「れるの忘れました」って言うんだろうなw
物件管理だけならともかく、住民台帳みたいな情報まで網羅する必要があるって どんな業種なんだろうな
検索した結果が、.foundfiles()に格納されています。 For i = 1 To .FoundFiles(i).count Me.[text1] = .FoundFiles(i) Next i とやれば、当然、text1には .FoundFiles(i)の最後の値がはいってしまいますよね。 1.text1の1を i (変数)に変更して順番に格納したいですが、どう書けば良いですか? text1,text2,text3,text4,text5と、フィールドは用意しておきます。 2.絞込みクエリのように、数に応じてフィールドが自動生成する方法ありますか? 上と異なり、フィールドは事前に作成しません。これは出来るかどうかわかりませんが……。 よろしくお願いします。
>>522 1. Me.Contorls("text" & i) みたいな感じで
2.CreateControlでコントロール追加とか、ListBoxを使うとか、レコードセットにしてデータシートビュー
524 :
名無しさん@そうだ選挙にいこう :2009/11/14(土) 23:27:58
ACCESSでソフト作っている人多いんでしょうか。
525 :
522 :2009/11/14(土) 23:41:14
1.の代入は出来ました。 2.のクエリ風に絞込みは不明ですので 方法あったら教えてください。debugplintの結果を セルに出力するようなイメージです。
>>523 レスサンクス。入れ違いになってしまった。
レコードセットにしてデータシートビューに挑戦してみます。
結果をテーブルに出力して、データシートビューにするような感じですかねえ。
探してみますが、もし参考になるサイトあれば教えてください。
それで駄目ならCreateControlですかね。
これは、フィールド名が増えると恐ろしいことになりそうな気がします……。
527 :
名無しさん@そうだ選挙にいこう :2009/11/15(日) 00:09:50
>>524 Accessでソフトウェアをつくって、公開している人ってのは、多分少ない。
ましてや、それでシェアウェア作って売っているとなると、限られる。
けれど、業務の現場では数多くのAccessで作られたアプリケーションが
仕事をしている。
表に出てこない作り込みのソフトウェアがね。あとは、VBなどのバックエンド
にデータの置き場としてmdbを使っているようなツールとかね。テーブル設計
をAccessで行って、VBで仕込む。
>>523 2のレコードセットにしてデータシートビューで出来ました。
我流ですが。あらかじめテーブルを作っておいて、
ADOで
1.テーブルの中身を全部削除
2.テーブルに結果を代入
3.フィールドとして表示
相当強引な気がしますが、こんな感じなんですかねえ。
テーブルに、絶対パスでwordファイルのアドレスが入っています。 (ハイパーリンクなので#が両端についているかも) このアドレスを渡して、帳票形式になっているフォーム上で OLE表示させたいのですが、VBでどう書けば良いですかね?
Access2007 + ADO + Postgresでいろいろ試しているのですがうまくいかないところがあります。 コンボボックスの選択肢としてPostgresから持ってきたデータを使おうとしているのですが、 選択肢の表示と選択した後の表示としては二番目の文字列の列を表示させ、 実際の値としては一番目の数字列を入れたいと考え、 値集合のタイプはテーブル/クエリ、列数は2、連結列は1、列幅は0cm;3cmとしました。 この設定の状態でフォームのロードイベントの部分でID列と名称列の二つの列をもつRecordsetをセットしたのですが、 実際に動かしてみると、選択肢を表示させる事は出来るのですが、 実際に選び終わると選択した物が入らずに消えてしまいます。 何か設定がおかしいのでしょうか? ちなみに上記の設定とコードのまま、コンボボックスをコントロールの種類の変更で リストボックスにした場合は普通に選択肢として表れ、選ぶことも出来ます。 また、フォームのプロパティの細かい部分はそのままに、 プロパティから値集合ソースとして同じテーブルをリンクテーブルにした物を設定した場合は期待通りに動作します。 何が原因なのでしょうか・・・
531 :
529 :2009/11/15(日) 03:32:55
アドレスにハイパーリンクが入っています。 ファイルはテーブルに存在しますが、元は空欄です。 Dim path As String path = Replace(Me.アドレス, "#", "") With Me.ファイル .Class = "Word.Document.8" .OLETypeAllowed = acOLELinked .SourceDoc = path .Action = acOLECreateLink End With とやって、カレントテーブルは上手く表示できましたが、 絞込みで表示されている他のテーブルは、選択するまで 表示されないままです。いい方法ありますか? また、OLEオブジェクト内でword文書は先頭しか見えません。 スクロールさせる方法があれば教えてください。
532 :
820 :2009/11/15(日) 06:24:11
>>518 お役に立っているのなら嬉しいです。が、ごめんなさい。
>>506 は間違えていました。
>>506 の訂正です(考え直したら、入居と退去は必ず対になるので、下記の方が作るのは簡単です)。
テーブル:
×住宅入退: <住宅ID, 部屋番号, 住宅入退ID(オートナンバー)>, 入退区分{入居|退去}, 入退日
○住宅入退: <住宅ID, 部屋番号, 住宅入退ID(オートナンバー)>, 入居日, 退去日
×・指定日の空き部屋状況は〜
○・現在の部屋の入居状況は、住宅部屋が退去日 IS NULLの住宅入退を子に持つなら入居中。それ以外なら空きとなる。
・指定日に入居していた世帯(住宅入退ID)を知りたい場合は下のようなクエリ(SQL)を使う。
SELECT 住宅ID, 部屋番号, 住宅入退ID
FROM 住宅入退 t1
WHERE EXISTS (
SELECT 住宅ID, 部屋番号
FROM 住宅入退 t2
WHERE t1.住宅ID = t2.住宅ID and t1.部屋番号 = t2.部屋番号 and t2.入居日 <= [指定日] and (t2.退去日 IS NULL OR [指定日] < t2.退去日)
GROUP BY t2.住宅ID, t2.部屋番号
HAVING MAX(t2.入居日) = t1.入居日)
ついでに今回の変更で入居期間も「退去日-入居日」
(例えば Access だと「DateDiff("m",入居日,退去日)」で月単位の期間)で求められます。
既にデータ入力していたら、ごめん。後は本や Web を参考にやってみてください。
533 :
506 :2009/11/15(日) 06:26:08
>>530 リンクテーブルで上手くいくなら
CurrentProject.Connection を使ってリンクテーブル経由で Recordset を開いてみては?
または下のようにローカルで動作するようにプロパティを設定したものを使った場合でもダメかな?
Dim p As New ADODB.Recordset
p.CursorLocation = adUseClient
p.Open source, con, adOpenStatic, adLockReadOnly, adCmdText
Set p.ActiveConnection = Nothing
Set ComboBox1.Recrodset = p
>>528 テーブルを使わずに
Dim p As New ADODB.Recordset
p.Fields.Append "列1", adVarWChar, 256
p.Fields.Append "列2", adVarWChar, 256
p.Open , , , adLockOptimistic
p.AddNew Array(0, 1), Array("1", "A")
Set Me.Recordset = p
という手もあるよ。
解説されているのをあんまり見たことがないので、どこまでサポートされているかは知らないけど。
536 :
名無しさん@そうだ選挙にいこう :2009/11/15(日) 08:41:00
>>527 > けれど、業務の現場では数多くのAccessで作られたアプリケーションが
> 仕事をしている。
このパターンが多いんですね。ありがとうございます。
> 表に出てこない作り込みのソフトウェアがね。あとは、VBなどのバックエンド
> にデータの置き場としてmdbを使っているようなツールとかね。テーブル設計
> をAccessで行って、VBで仕込む。
私的プログラムでデータの管理をどうしようかと思っていたのでアクセスを利用したいと思います。
537 :
528 :2009/11/15(日) 12:33:42
>>535 レスサンクス。
>>528 の方法だと、検索するたびに、レコードが削除されました
のエラーが出てしまい、使い物になりませんでした。
フォームを開きなおすときちんと表示されるので、削除した分が
フォーム開きなおすまでレコードの位置情報のみ残っているっぽいです。
Dim p As New ADODB.Recordset
p.Fields.Append "アドレス", adVarWChar, 256
p.Open , , , adLockOptimistic
Set Me.Recordset = p
For i = 1 To .Files.Count
p.AddNew Array("アドレス"), Array(".Files(i)")
p.Update
p.MoveNext
Next i
p.Close: Set p = Nothing
こう書いてみましたが、アドレスには何も入ってません。
フォームにはダミーとして、"アドレス"のフィールドのみ存在する
テーブルを参照先にいれてあります。これが原因かもしれませんが。
538 :
537 :2009/11/15(日) 12:38:47
ダミーの参照をやめて名前だけにしてみましたが、
やはりデータが入っていないようです。
困ったなあ。
一度フォームを閉じて開きなおすように組めば
>>528 でも
実用できるようですが、明らかに無駄ですよね。
540 :
530 :2009/11/15(日) 15:45:06
530です
>>534 リンクテーブルを経由すると作成の趣旨からはずれてしまうので、
その方法を使用することができませんです。
二番目に挙げていただいたプロパティ値でやってみましたが
挙動は特に変わらず、選択後に消えてしまいます。
541 :
535 :2009/11/15(日) 17:37:49
>>538 順序を変えてみて。
データを追加→フォームに設定の順。
For i = 1 To .Files.Count
p.AddNew Arrary("アドレス"), Array(.Files(i))
Next
Set Me.Recordset = p
あと、データシートに使うフォームにはコントロールソースを「アドレス」にした、
テキストコントロールを配置しているよね?
あと、テーブルを使う場合でも、
削除する前に一旦レコードソースを空白にすればエラーはでなかったと思う
(データ追加後に再設定する)。間違ってたら、ごめん。
542 :
534 :2009/11/15(日) 18:39:09
543 :
507 :2009/11/15(日) 18:50:22
>>532 たくさんの情報ありがとうございます。試しにデータは入れてみてますがまだ全然理解してない
状況ですので問題ないです。。
主キーを複数設定するところですら焦ってますし、男女の選択をどうするか、同居してる人が個別に入ったり出たりするので
その辺りも考慮してやってみようかというところです。
部屋番号を「棟」と「号」に分けることくらいしかまだ自分にはアレンジができないのでまずは住宅の
テーブルだけ完成させてみたいと思います。
どこかにサンプルファイルって落ちてたりしないんでしょうか。
547 :
名無しさん@そうだ選挙にいこう :2009/11/16(月) 22:05:54
初心者なんですが教えて下さい。Access97でテーブルにデータ値が無い場合0を表示させたいんですが、どうすればいいんですか?
>>547 表示だけでいいなら、書式プロパティに「0」と設定するとか。
549 :
名無しさん@そうだ選挙にいこう :2009/11/17(火) 00:43:57
テーブルデザインにして フィールドのプロパティ → 規定値0 でもおk
550 :
538 :2009/11/17(火) 07:25:37
>>541 順番変更でばっちりでした。ありがとうございます!
参考に教えてください。
レコードソースを空白にするってどう書けば良いんですかね?
レコード削除はわかるのですが。レコード削除だとエラーでます。
'Do Until rs.EOF
rs.Delete
rs.MoveNext
Loop
とか、
SQL = "delete from テーブル"
DoCmd.RunSQL SQL
だと駄目ですね。
551 :
545 :2009/11/17(火) 10:44:08
>>546 ありがとうございます
なるべく早くWindows 7入手して
自分でも動作確認するようにします
552 :
名無しさん@そうだ選挙にいこう :2009/11/17(火) 11:56:35
sharepoint foundation2010にaccess serviceがねぇよぉ;; Runtimeの代わりになるとwktkしてたのによぉ
Access97を現役でまだ使ってる人いるの? マイクロソフト喜びそうだな
>>554 早く新しいの買えって思ってるんじゃないかな
>>554 余裕でいる。
2.0ですら、まだ話聞くし。
M$はまったく喜ばないと思うが。
少しずつですが作り始めました。気になったのは住宅ごとではなく、棟や詳細(部屋単位)で違うものがあるということです。 同じ住宅でもお風呂の設置の有無がある住宅があるので変なところに風呂フィールドがあります。 また、住宅台帳の管理戸数は棟別管理戸数の詳細ということになるので、なんか二度手間な感じがします。 私の作り方がおかしいのでしょうか。まだ主キーやらリレーションシップはほぼつけてない状態です。 私は最初から細かく作ろうとしすぎてるのでしょうか・・ <>は主キー 住宅台帳マスター <住宅ID(オートナンバー)>,住宅名(テキスト),郵便番号(テキスト),住所(テキスト),管理戸数(数値),給水(テキスト),ガス(テキスト),便所(テキスト),駐車場有無(テキスト) 棟別台帳マスター 棟ID(テキスト),住宅ID(数値),棟名(テキスト),建設年度(テキスト),種別(テキスト),構造階数(テキスト),管理戸数(数値) 部屋別台帳マスター 部屋ID(テキスト),住宅ID(数値),棟ID(テキスト),号室(テキスト),間取(テキスト),間取詳細(テキスト),風呂(テキスト),備考(テキスト)
もしかして街の不動産屋さんじゃなくてどっかの公団の管理人とかなの?
以前似た事聞きましたが、adoが上手くいかないので教えてください。 Dim rs As New ADODB.Recordset Dim cn As ADODB.Connection Set cn = Application.CurrentProject.Connection rs.Open Me.RecordSource, cn, adOpenKeyset, adLockOptimistic Dim sFilter As String sFilter = "*" & Replace(Me.BOX1, " ", "* And *") & "*" sFilter = BuildCriteria(Me.BOX2, dbText, sFilter) rs.Filter = sFilter このrs.fillterが上手くいっておらず、rs.filter=0になります。 Me.filter=sFilter Me,filteroN =true なら上手くいきますが、rsからデータ取りしたいのでこの方法は使えません。 BOX1で絞り込んで、BOX2で更に絞り込む レコードセットに対するフィルターのかけ方を教えてください。
561 :
名無しさん@そうだ選挙にいこう :2009/11/18(水) 01:58:08
562 :
名無しさん@そうだ選挙にいこう :2009/11/18(水) 02:20:05
んなもんにかまってられんわ。寝る。
563 :
535 :2009/11/18(水) 02:42:31
>>550 レコードソースを空白にするのは
テーブル/クエリなら
Me.RecordSource = ""
レコードセットなら
Set Me.Recordset = Nothing
とするだけ。
要はフォームとの関連を一旦切ってその後に処理する。
フォームがちらつくのが気になるなら処理の前後を Me.Painting で挟めば良い。
Me.Painting = False
Me.RecordSource = ""
DoCmd.RunSQL "DELETE FROM テーブル"
Me.RecordSource = "テーブル"
Me.Painting = True
あと、そもそもスナップショットにしておけばレコードソースの状態を監視したりしないので、
問題なかったような気がする(DELETE クエリを発行した後、Me.Requery を使って手動で更新)
……違うかも。
>>557 部屋毎に風呂の有無が異なるのなら、部屋に風呂フィールドが入るのが自然。
データの繰り返しや重複がある場合が不自然。詳しくは正規化を勉強してみて。
管理戸数については集計関数(カウント(COUNT), 合計(SUM))を調べてみれば良いかも。
最初は試行錯誤しながら作っていくしかないよ。
自信がないのなら練習用にデータベースの作り方が載っている本を買ってきて、
一度通して作ってみると良い。それで、Access で何が出来て、何が出来そうにないかが分かると思う。
>>561 ほんとに申し訳ないことです。入門じみた質問ばかりになってるのは自分でも分かってます。ご免なさい
できるシリーズ熟読しながら作ってる段階です
エクセルワードと違って、アクセスはほんとに情報少ないですね。
566 :
メモリ君 ◆7mDj3mSGOQ :2009/11/18(水) 07:21:30
>>565 それは大きな勘違いだ。
Accessの情報も十分ある。ただ、君がこの世界のルールを知らないで入っている
に過ぎない。この世界は、WordやExcelと違って、テーブル設計や正規化、外部キー
やクエリといった数々の決まり事がある。
そして、多くの人間が挫折するのは、これら決まり事 つまり、理論を勉強せずに
飛び込んでいきなり実践のデータベースを作ろうとするからなのだ。まずは、実践とは
別に、簡単なデータベースでしっかり基礎を勉強してから、少しずつ、クエリの活用法
だとか、テーブルの設計方法を勉強するのがデータベースの肝。
はっきりいって、GUIやVBAなんてのは、一番後にやるもんだ。そして何よりも、情報を
小出しにしている段階でテーブル設計はこけている。
>>557 初心者が最初から全体を作ろうとしても難しいと思う。
小さい部分から徐々に作って試していった方が実力に合うレベルで考えられるし、自信も持てるよ。
例えば、入居者の統計を取るのが目的なら、入居者のテーブルだけを作ってみる。
それを使って年齢、性別毎の人数や収入の平均を求める集計クエリを作ってみる。ある期間の入居者一覧のクエリも作成してみる。
それが出来たら、部屋のテーブルを作ってみて、棟毎の戸数の集計クエリを作ってみる。
それが出来たら、入居者と部屋をリレーションシップで結んでみる。必要なら正規化をやり直す。
それを使って、部屋毎の入居者の集計クエリを作ってみる……みたいに問題を小さく分けて、少しずつやってみた方が良いと思う。
あと、クエリの使い方が分かれば、ある条件で絞り込み・集計するにはどんなデータが必要か?
という視点でも考えられるようになるので、設計の正否を判断する手がかりが増えるよ。
>>557 私もちょっと必要なので、Accessを始めたところです。
557さんも、ワークシートとデータベースの違いの「イメージ」をつかめて
いないような気がします。
データベースも、「カード型」と、リレーション型があります。
カード型のイメージと、ワークシートのイメージは似ています。
カード型・ワークシートは、「一目で見わたせる」感じですが、
リレーション型のデータベースは、「シートの奥行き」がある感じです。
エクセルでも「くし刺し処理」みたいな物がありますけど、あの感じです。
しかし、「同じもの」が奥行きになっているのではないんです。
リレーション型は、「データの特徴をつかんで、なるべくまとめてしまう」のが、「なんでも
広げて一覧にする」ワークシートとは違っているんです。
ワークシートは、個数と単価と合計が一覧になりますけど、リレーション型である
Accessは個数と単価だけが「テーブル」に入り、合計は、「クエリ」でその都度計算し、
「フォーム」で表示し、「レポート」で印刷するんです。
住宅IDとそれが「属する棟」の番号のテーブルがあれば、「管理個数」は「クエリ」で
その都度計算するんです。
お風呂の有無は、その前に間取りのパターンを数え上げて番号を付け、どの番号の
間取りかの情報をテーブルにもたせて、どんな間取りかの表示はその都度クエリやフォームで
作り出すんです。
お風呂の有る無しに何か特別意味があるのであれば、その情報はtrue falseなどの情報として
テーブルにもたせることも出来ます。
なにか、基本的な発想が、リレーション型のデータベースのイメージをつかまないままExcel
的に考えてるようにお見受けしました。
私はAccessがいちいちクエリだのレポートだのと「場面を変えて作業」する意味合いが
難しいです。
SQL文で表示も問い合わせも順番に全部書くってやつもあって昔それをやったので。
Accessのデータファイルがひとつっきりってのも、いったいどうなってるのか悩んだくらいですw
質問です。 クエリのフィールドの式ビルダで連続して別の処理を行うには どうしたらいいですか?
死んだら良いよ
NOTICE: OFFICE BETA IS COMING: The Office 2010 Beta will be available in November 2009. You will be notified via e-mail when it is available and the location of the Beta site will also be posted here.
572 :
559 :2009/11/19(木) 00:22:27
>>560 レスサンクス。調べてみたんだが、
どうもBuildCriteriaが""を自動生成していて、エラーになってた。
直接入力するようにして解決。
が、アンド検索が出来ない。
sFilter = "*" & Replace(Me.BOX1, " ", "* And *") & "*"
でMe!BOX2 like *Me!BOX1_1* and *Me.BOX1_2*
にしてた。andで繋いでも駄目なのね。
573 :
572 :2009/11/19(木) 01:38:43
split 使って出来ました。
Access 2010 Runtime As many of you know, the Access 2007 Runtime didn’t ship until some time after Access 2007 RTM. This was cause of frustration for many of our developers who had solutions ready for customers. This release, we have a goal to ship the Access Runtime as close to Access 2010 as possible. As a part of this effort, the Access 2010 Runtime Beta is ready for download. You can download the Access 2010 Runtime Beta today.
2010ベータ おれが報告したバグ治ってた 日本語ヘルプも装備されてグッド
Web対応だとBVA使えないんやね、やっぱマクロの時代だあ。
577 :
名無しさん@そうだ選挙にいこう :2009/11/19(木) 22:40:57
ACCESSを操作&VBA編集できる携帯ってありますか?
578 :
メモリ君 ◆7mDj3mSGOQ :2009/11/19(木) 23:08:14
>>577 そんなものはありません。
あっても、それは画面のリモートコントロールだけです。
579 :
名無しさん@そうだ選挙にいこう :2009/11/19(木) 23:17:52
>>578 そうですか・・・外出先で確認したいなと思ってました
エクセル見れる携帯はVB使えるんですか?
580 :
名無しさん@そうだ選挙にいこう :2009/11/20(金) 00:04:40
SQLServerでUnionで合成したテーブルが 並び替え順で並びません なぜかグループ化も合成した部分で勝手にされます これはバグではないですか?
581 :
名無しさん@そうだ選挙にいこう :2009/11/20(金) 00:06:01
レポートのグループ化や並び順のことです
582 :
メモリ君 ◆7mDj3mSGOQ :2009/11/20(金) 00:20:03
>>581 レポートにはレポートに並び替えの設定があるわけなんですが、
クエリにもクエリの並び替えの順番があります。
自分もいつもひっかかる点なんですが、基準となるフィールドで
クエリで並び替えをしたものをレポートで表示させています。
クエリも、後ろのほうに並び替えだけのためのフィールドを追加
して、好きなように並び替えをしてます。3つくらい設定してますね。
もちろん、表示のチェックははずしています。
583 :
名無しさん@そうだ選挙にいこう :2009/11/20(金) 00:46:20
全然関係のない表のクエリを2個、列をASで同じ列名にしたりしてUnion句で、くっつけてみて 並び代わらなくなって、おかしくなるから たぶん、ユニオンした下の表が強制で降順になってしまう ただ、ストアド以外はいけるのかも
584 :
メモリ君 ◆7mDj3mSGOQ :2009/11/20(金) 00:49:26
>>583 Unionクエリを元に、選択クエリつくって、並び替えとか
585 :
名無しさん@そうだ選挙にいこう :2009/11/20(金) 01:05:05
全然別の2つ表をSQLかいてASで強制で全部同じ列名にしてUnionやったソースを元にレポートで並べ替えすると、おかしくならない?
586 :
名無しさん@そうだ選挙にいこう :2009/11/20(金) 01:22:54
すみません、ACCESSで作ったDBアプリを修正しているんですが、 どうにもこうにもわからなくなってしまったので教えてください。 項目Aという入力欄を作ったんですが、入力する内容が多くなった為、 項目Bという入力欄を新しく作りました。 項目Bは項目Aに入りきらない内容の場合分けて入力する事になります。 しかし、項目Aは主キーになっている為、Bの内容が違っていても Aの内容が一緒だと重複扱いになってしまいます。 条件 ・Aの内容が一致してもBが一致しなければ重複扱いしたくない。 ・BはNULLの場合がある為、NULL許容できる仕様にしなければいけない。 上記の条件を満たすにはどのようなDBにすればいいでしょうか? 教えてください。
587 :
名無しさん@そうだ選挙にいこう :2009/11/20(金) 01:36:10
追加順って主キーを一番左に作れば良いかと あとは主キーなしでおk
項目AとBで主キーにしたら駄目なのか?
589 :
586 :2009/11/20(金) 02:01:46
>>588 Bを主キーにしたらNULL許容できないじゃありませんか?
590 :
名無しさん@そうだ選挙にいこう :2009/11/20(金) 02:03:34
サロゲートキーの方が良くね?
項目Aと項目BでNULLを許容する一意制約をつけるにはどうするんだっけ インデックスとか使えばできるんだっけ?
>>586 発想の転換で、Aの長さをA+Bの長さにしてBを無くせばよろしい。
長さがオーバーしてしまうのか?(←質問の情報不足)
ならばAのデータ型をメモ型にすればよろしい。
それがいやなら、AとBをインデックスにしてBを空文字許可すればよろしい。
Bに値を入れる場合NULL→空文字変換が要るかも知れんが、そこは試してみれ。 がんばれ。
594 :
名無しさん@そうだ選挙にいこう :2009/11/20(金) 12:25:46
やっぱりUnionでくっつけた所で勝手にグループ化される、バグじゃないの?
595 :
名無しさん@そうだ選挙にいこう :2009/11/20(金) 12:29:45
グループレベル1を不可視にしたら、Unionしたレポートでも普通に表示されたから、グループが壊れてるよこれ 2007では直った?
2010ベータで、LongLongが追加されてるねぇ まぁVBA全般の話だけれども。
LongLong??
64ビットの時代かー。
Access2010β版使ってみた、けっこう良いかも。リボンインターフェイス敬遠してたから 2007はスルーしてたけど。製品版買っちゃおうかしら。
どの辺がよいのか、kwsk
601 :
名無しさん@そうだ選挙にいこう :2009/11/21(土) 20:49:10
>>568 時間がありそうなら、SQLServerExpressにAccessのデータをエクスポートして
SSMSからさわってみると、少し変わるかも?
#SQLの入門書、やった方がいいと思う
>>600 2007には既に実装されてるんだろうけどデザインビューとデータシートビューを
一々切り替えなくていい所とか。リボンインターフェイス(?)もAccessに関しては
慣れたらそんなに苦にならないようだし。そんな些細な所。。。Macの仮想環境、しかも
Windows7RC版で使用してるし、Access初心者でもあるので突っ込んだ質問しないでね〜。
603 :
名無しさん@そうだ選挙にいこう :2009/11/21(土) 22:39:23
フォームとかレポートでテキストボックスなんかのオブジェクトの配置をVBAで設定する方法教えてください
>>603 TextBox."Height/高さ" プロパティ
TextBox."Top/上位置" プロパティ
TextBox."Left/左位置" プロパティ
TextBox."Width/幅" プロパティ
2010β 式ビルダとかマクロエディタでintelisense働くから使いやすくなったのぉ デフォルトのコントロール名を英文にできたら便利だなぁ。
どうもありがとうございます
LongLongって見当たらないが、64ビット版の話し? 64ビット版では最大ファイルサイズ2Gも拡大されてるの?
608 :
600 :2009/11/21(土) 23:56:41
>>602 dクス
。。。2007と大して変わってないってことかな。
LongLongは64bitのみでっせ。 32bitならオーバーフローしますわね。 2GBはどうだべな。
2GBは超えられなかったぜ。エヘヘ
>>601 うわ、レスついてる。どうもありがとう。
エキスパートな人たちの中に書き込みして浮いてしまったと後悔してましたw
時間があるとき、案内のものをみてみます。
ついででなんですけど、同じLANの中にLinuxのサーバーが建っていて、これも
そこのrep2から書いています。rdbmsにデータが入る掲示板が動いていたり、
ターミナルから使う程度のちょっとしたデータベースの利用をしていたりするんです。
Accessはデータエンジンの切り替え(接続?)が出来るみたいですけど、
Lanを通してLinux上のMySQLなどを使えたりするんでしょうか? そのときの
データベースウインドウなどはどう見えるのかな? とか、いろいろ興味はあります。
うぎゃー、Technical Preview programってもう締め切られてるやんorz
ちなみに2007で廃止されたユーザーレベルセキュリティって
2010ではどうなんでしょう?
>>599 様教えて下さい
616 :
名無しさん@そうだ選挙にいこう :2009/11/22(日) 17:54:54
【 システム環境 . 】 Windows Vista Professional、Access 2007 【 VBAが使えるか .】 はい 【 VBAでの回答 】 可 【 検索キーワード 】 タブコントロール サブフォーム VBA フォーム上にタブコントロールを貼り、タブコントロールにサブフォームを貼っています。 サブフォームはデータシート形式で動的なSQL実行結果を表示したい。 動的なSQLとは、サブフォームと同じタブ上にあるテキストボックスに入力された条件で テーブルから結果セットを抽出するSQLです。 dim strsql as string dim db as database dim rs as recordset set db = currentdb strsql = "SELECT * FROM tbl_Syohin WHERE Syohin_ID = " & me.txt_Syohin_ID & "'" set rs = db.openrecordset(strsql,dbopendynaset) me.sub_Shohin.recordsource = rs me.sub_Shohin.requery にてサブフォームにSQL実行結果が表示されません。 表示する方法をご教授くだたい。
>>616 me.sub_Shohin.form.recordsource = rs
me.sub_Shohin.form.requery
>>615 599じゃねぇけど、2007と同じだよ
618 :
名無しさん@そうだ選挙にいこう :2009/11/22(日) 18:44:24
>>617 コンパイルエラー:
型が一致しません。
と言われます。 .recordsource の部分です。。。
>>618 me.sub_Shohin.form.recordsource = strsql
これが正しいんじゃないかな?
620 :
名無しさん@そうだ選挙にいこう :2009/11/22(日) 19:02:47
>>619 = strsql にしたらエラーはでなくなりましたが、サブフォーム真っ白けっけのまま反応ありません。。。
621 :
617 :2009/11/22(日) 19:03:26
>>618 ぉょ
レコードソースにレコードセットいれるのはあかんわなw
me.sub_Shohin.form.recordsource = strsql
でいいじゃろ。rsとdbはいらんな、DAO使うまでもねぇって話だった。
strsql = "SELECT * FROM tbl_Syohin WHERE Syohin_ID = " & me.txt_Syohin_ID & "'"
最後のシングルクォーテーションもだな
622 :
名無しさん@そうだ選挙にいこう :2009/11/22(日) 19:15:37
>>621 うぅぅむ・・・
me.sub_Shohin.form.recordsource = strsql
にしてみました。
またSQL文の最後のシングルクォートははずしました。
Syohin_ID はLONG型のカラムなのに変なことしていましたね。
結果、やはりエラーは出ませんが、サブフォーム真っ白けっけで反応ありません。
フォーム上に張り付けたサブフォームと、
タブコントロール上に張り付けたサブフォームとでは、
なんかやり方がちがうところがあるんですかねぇ・・・
クマっています。
623 :
617 :2009/11/22(日) 19:34:08
>>622 クエリ結果が0行っぽい感じだな。確認してみれ
タブ上でも問題ないはずよ
sharepoint access service 使えるようにしてみたぞー なんだろこれw ちょっと脱力。。。
>>624 kwsk頼む、access service密かに期待してた
627 :
624 :2009/11/23(月) 23:28:39
>>625 大きな期待は禁物ですが、どんなことkwsk?
俺もいろいろ試したいが、お題目があんまりないのである。
>>626 なんのURLだ
Hyper-Vスナップショットを手違いで消しちまったから再インストール中
23:45には完成予定
628 :
624 :2009/11/23(月) 23:41:36
629 :
名無しさん@そうだ選挙にいこう :2009/11/24(火) 08:17:43
accessで、 350の項目数のタブ区切りのテキストデータを読み込もうとしたら、 項目が2百いくらのところで切り落とされてしまいました。 フィールド数を増やすにはどうすればよいでしょうか?
>>627 あなたのsharepointアクセスサービスに入るurlきぼん
631 :
624 :2009/11/24(火) 12:37:07
>>630 それはできない相談だ。
>>629 テーブルの最大フィールド数は255なので分割するなどして。
632 :
名無しさん@そうだ選挙にいこう :2009/11/25(水) 08:16:53
>>631 255から増やすことはできないのですか?
その発想はなかったわ・・・
sharepoint access service の環境を片付けるのでチラ裏。 ・Webオブジェクトはデザインビューがない ・マクロのみ ・データマクロやマクロは、sharepointワークフローなどに変換 ・テーブルはsharepointリストに変換 ・webアプリの画面遷移は、ナビゲーションフォームを使用 ・フォームを開くコマンドはダイアログモードのみ ・レポート関連については、SQLServer Reporting Serviceが担当 ・sharepointなのでパフォーマンスはServer次第 runtimeの代わりになるかなと期待あったけど、今のところそれはなさそう。
住所入力支援を使って郵便番号を入れたとき テキストボックス1には市町村名を テキストボックス2には分割なしを それぞれ表示させるにはどうしたらいいですか? 例) 001-0011 テキストボックス1=札幌市 テキストボックス2=北海道札幌市北区十一条西(1〜4丁目)
>>637 3分割して、テキストボックス2は3分割したのを結合すればいいじゃない
なるほど!その手があったね!んで試してみました。 欲しいのは市町村名と全部を繋げた住所なので、3分割にして Text1に都道府県(非表示)、 Text2に市町村 (表示)、 Text3に住所 (非表示) それぞれchangeイベント発生時に文字列を結合してText4に表示!これで完璧です♪ ただ、「住所」→「郵便番号」ができないのはしょうがないですね なにはともあれ、サンクス!
>>639 住所をメモ帳にコピペして選択状態にしてキーボードの変換キー(スペースキーの1つ右)を押すと
郵便番号に変換できるけど、これをAccessで実現できないのかな?IME関連のAPIでも使うんだろうか?
ちなみに読み方がわからない漢字があったら同様にするとひらがなに逆変換できるからよくやる。
641 :
1/2 :2009/11/26(木) 21:42:56
お願いします。 ac2003使ってます。 下記コードを実行すると、1度目は正常に動きますが2度目以降はエラーが発生します。 原因はプロセスEXCEL.EXEが残ってしまっているせいでした。 1文づつふるいにかけていくと、 callで外部のものを呼んでいる一文に原因があることが分かりました。 しかしながら、原因は分かったもののどれだけ試しても どうしてもEXCEL.EXEをプロセスから消すことが出来ません。 初歩的な質問かとも存じますが、どうぞよろしくお願いします。
642 :
379 :2009/11/26(木) 21:46:11
Public Sub コマンド0_Click() Dim xls As Excel.Application: Dim xwb As Excel.Workbook Dim xws As Excel.Worksheet: Dim tar As String tar = "word1" Set xls = CreateObject("Excel.Application") xls.Visible = True Set xwb = xls.Workbooks.Open("C:\Documents and Settings\Owner\デスクトップ\tttt.xls") Set xws = xwb.Worksheets("Sheet1") With xws Call aaaa(tar) ←この一文 .Application.DisplayAlerts = False .SaveAs ("C:\Documents and Settings\Owner\デスクトップ\testt.xls") .Application.DisplayAlerts = True End With Set a = Nothing; Set xws = Nothing xwb.Close; Set xwb = Nothing xls.Quit; Set xls = Nothing End Sub ------------------------------------- Public Sub aaaa(strr As String) If strr = "word1" Then Range("A2").Value = "a" End If End Sub
>>641 aaaa()内で、親オブジェクトの修飾せずにRangeを使っているのが原因。
正しくはxws.Range(...)でしょうね。
引数にxws渡すとか何かするよろし。
ところで、論理行区切りがなんでコロンじゃなくセミコロンなん?
JavaScriptかよ。
むちゃくちゃ複雑なSQL書いて抽出したデーターを、元のデーターから除外したい。 でも、accessって差集合は対応していないよね。 どうしたらいいの?
>>644 EXISTSとかLEFT JOINで対応
646 :
名無しさん@そうだ選挙にいこう :2009/11/27(金) 08:23:09
Access2002を使ってますが、弥生給与9から10にバージョンアップしたところ、 Access2002が起動できなくなりました。(インストールの準備中・・・が立ち上 ってそのまま何も起きません) 弥生給与9に戻すと起動できます。 OSはXP−Personalで弥生会計9も入ってます。 Accessも弥生も使用しますので、両方使えるようにしたいのでよろしくお願いします。
>>646 Accessのバージョン違いが同居するPCの場合、バージョンを切り替えるごとに
インストールの準備中→ セットアップが完了してから起動するのが本来の姿です。
今回の場合、弥生給与10のインストールによりAccessのバージョン違いの新しい
コンポーネントが導入されたのが原因かと思われますが、なぜAccess2002の
セットアップが完了しないのか?という点については詳しくは分かりません。
Access2002を導入後、PCのドライブを増設したなどはありませんか?
とりあえず試して頂きたいのは…
・Access2002,弥生給与10ともにアンインストール
・Access2002を先に再インストール
・次に弥生給与10を再インストール
これでも同じ症状が出るようでしたら、弥生のサポセンへ相談しましょう。
弥生給与10のアップデートは始まって間もないとは言え何か情報を持っているはずです。
648 :
名無しさん@そうだ選挙にいこう :2009/11/27(金) 16:18:02
>>647 回答ありがとうございます。ドライブの増設はしてません。
弥生のサポセンにTELしましたが、やっぱり10はまだ情報が乏しく
良い回答が出ませんでした。
他に影響がでるか心配だったので避けていた、Access2002と弥生給与
アンインストールして再度インストールしました、最初はエラー出ま
したが、修復かけてたら何とか納まりました。
ありがとうございました。
649 :
641 :2009/11/27(金) 22:27:17
>>643 遅くなりました
;なのは書き込めなかったので、改行減らしたときのミスです。
rangeのオブジェクト修飾を色々試しても、
オブジェクトが必要だとか見つからないだとか、グローバルなんとかだとか
どうしてもうまく書けないです・・。
参考までにこの部分の数行のサンプル書いてみてくだされば幸いです。。
650 :
643 :2009/11/28(土) 00:24:11
>>649 Call aaaa(xws, tar)
Public Sub aaaa(xws As Excel.Worksheet, strr As String)
If strr = "word1" Then
xws.Range("A2").Value = "a"
End If
End Sub
みたいな感じじゃないの。
>>649 >>650 でたぶんOK。個人的には・・・
With xws
If IsWord1(tar) Then
.Range("A2").Value = "a"
End If
:
:
End With
-------------------------------------
Public Function IsWord1(strr As String) As Boolean
If Strr = "word1" Then
IsWord1 = True
Else
IsWord1 = False
End If
End Function
【 システム環境 . 】 Access97 【 VBAが使えるか .】 いいえ 【 VBAでの回答 】 否 とある項目の中に入っている「空白」を クエリ上で消せないのか、という質問です。 会社で毎日10万行くらいのテキストデータが送られてくるのですが それをアクセスにインポートした際、 その中の「電話番号」という項目が 「03 1234 5678」とスペース入りで打たれている上に 「0312 34 5678」とスペースの入っている位置がメチャクチャだったりするため 一旦テーブル上で「編集」→「置換」で 「 」を「null」に置換えて「0312345678」としてから、他のクエリに使っています。 毎日置換え作業をするのがわずらわしいので クエリの中で直接エクセルのノリで 「電話番号加工後:Replace([電話番号]," ","") という指定をしたのですが全く作動しませんでした。 クエリ上でReplaceは使えないのでしょうか? それとも、もっと手っ取り早く「空白を消す」という関数はあるのでしょうか? (「Trim」は複数の空白を1個にするだけで、空白は消えませんでした)
>>652 全く作動しないってのはわかりませんが、
クエリでReplaceは使えますから、別の件で問題があるのでは?
>>652 クエリがエラーを出して動作しないのか、それとも動作はするが思った結果が得られないのかで
ずいぶん話が変わってくるけれど・・・
前者の場合はSQL表示にして構文の確認。
後者の場合は「スペース」の正体を知るためにASC関数でチェックした方が良さそう。
スペースにも全角・半角があるし、スペースのように見えて別の特殊文字かもしれない。
655 :
653 :2009/11/29(日) 18:17:46
>>652 ちょっと閃いた気がする。。。
インポートした電話番号のフィールドがnullが含まれてるのかも。
そーすっとReplaceは評価されない。
replace(nz([電話番号])," ","")
これでうまくいったら、エラーをきちんと吐かない97が悪い。
クエリ上の関数でエラーでてるのになんの表示もしないって、2000だか97でなかったっけか?
つーか、97はいつまでつかうのよw
>>650 ,651
遅くなりました。
引数にワークシート加えて指定したり
関数で判定だけさせるって発想なかったす。
まだ試せていませんが、明日試して報告します。
丁寧にありがとうございました!!
658 :
名無しさん@そうだ選挙にいこう :2009/12/01(火) 03:31:38
競馬ソフト作成している人いる?
659 :
名無しさん@そうだ選挙にいこう :2009/12/01(火) 18:20:21
ADOでレコードセットオブジェクトの内容をデータシートビューで表示する魔法を教えてください
660 :
名無しさん@そうだ選挙にいこう :2009/12/01(火) 18:23:59
CASEを使いたいんだけど、ANSI-92準拠って2003からだっけ?
coalesceさえ使えねえよ
結局iifの入れ子しかないよなw
というかANSIはiifを国際標準にするべき
iifは全部評価するから遅い
2010は新しいイベントやプロパティやコマンドはないのかよ
>>666 そうなるとレコードセット開いてループ内での判定処理になる訳だ・・・
アクセスって非力すぎて悲しい・・・orz
669 :
名無しさん@そうだ選挙にいこう :2009/12/02(水) 03:34:34
671 :
名無しさん@そうだ選挙にいこう :2009/12/02(水) 08:48:29
競馬でACCESSでも導入しないと勝ちようがないよな。
Accessとは関係ないが、昔プログラムの勉強で「馬券の損しない買い方」っていうのをやったな。 券種は忘れたが、ルールは以下のとおり。 ・常に2番人気を買う。 ・100円から開始。 ・配当で元が取れない場合は、掛け金UP。 ・勝ったら100円から。 ・配当は2倍と仮定する。 で、実際の配当を元に、一年後いくら儲けが出て、また最高掛け金はいくらになるかっていうの。
673 :
名無しさん@そうだ選挙にいこう :2009/12/02(水) 15:45:31
マーチンゲール?
>>673 マーチンゲールっていうのか。
俺がやったときは最高掛け金16000程度で120000程度は儲かる結果となったが
分が悪いみたいだね。
2007の開発者用ヘルプ見ながら2010使いたいんだけど、どうしたら良い? どっかに2007開発者用ヘルプない?
676 :
名無しさん@そうだ選挙にいこう :2009/12/02(水) 19:48:16
【 システム環境 . 】 Windowsxp, Access2000 【 VBAが使えるか .】 いいえ 【 VBAでの回答 】否 db1 db2 db3を結合したクエリを作って対象データを抜き出しましたが、 並び順を指定していないにも関わらず、元DBと並びが違う為、困ってい ます。 db1と同じ並び順にするにはどうすれば良いでしょうか?
並び順を指定してください
678 :
名無しさん@そうだ選挙にいこう :2009/12/02(水) 20:27:23
>>674 マーチンゲールの法則は連敗が続いたら、多額の資金が必要となるから
資金を用意出来なければ破綻する。
>>676 並び順が気になるなら、ちゃんと指定しろ。
指定しなければ不定が常識。
>>680 おおお、サンクス
でもプロパティボックスの日本語プロパティ名と対応しにくいよな、日本語訳が下手杉
【ver.】Access97 【質問内容】 :テーブル1のフィールドは以下 ID(主キー)、フィールド1(text)、フィールド2(text)、番号(数値) ●このテーブルから任意のデータを先頭から呼び出してフォームに 表示させる方法「など」をご教示ください。 ●イメージとしては次のような感じです。 1 まず最初にID順に先頭から100個のデータをフォームに表示させ、 このフォーム上で、番号に「1」または「2」と入力します。 2 1で番号「2」が10個あった場合には、次にフォームを開くときには、 この10個を除いた先頭の100個を同じフォームに表示させます。 つまり、1で「番号2」とした10個以外に次の10個が追加になります。 *Accessは簡単なものしかできないレベルなので、Select ...などの 記述はできません。普通のクエリー作成画面でなんとかしたいのですが。 よろしくお願いします。
Access97のサポートは終了しました
代を重ねる度にヘルプはどんどん重たく解りにくくなってくよな・・・
>>682 まだ97使ってるのか・・・細かいことは忘れたがこんな感じでできないか?
・まず[番号]<>2 を抽出条件,[ID]を昇順とした選択クエリをデザイン。
・併せてこのクエリのプロパティにて「トップ値」に100を設定して保存。
・このクエリを元にフォームを作る。
【 システム環境 . 】 WindowsXP、 Access2003、SQL2005 【 VBAが使えるか .】 はい 【 VBAでの回答 】 可能 環境をADP接続にすることになりました コンボボックスから値を選択後、ボタンを押すとレポートを開くフォームがあります 現在、そのレポートのレコードソースにクエリが入っています ADP接続だと、現行のフォームのコントロールを参照する式が使えませんでした どのように変更すれば良いのでしょうか教えて頂きたいと存じます 現行のWHERE句は以下です WHERE (((取引先マスタ.取引先コード) Between [forms]![f_取引]![ボックス1] & _ And [forms]![f_取引]![ボックス2]) AND ((取引先マスタ.取引先区分コード)=1))
質問です Access2003です。 今回excelを取り込むものを作りました。 流れは、ファイル選択>中間テーブルに一旦取り込み(エラー処理はまだなし) >追加クエリにて中間テーブルからメインテーブルに追加 と言うものなのですが、このどこかに取り込んだ内容により対応する 処理をするようにしたいですが可能ですか? 処理は取り込んだとある欄に対応するデータを表示(1ならAを表示みたいな)と 対応する数字によって消費税率を変えて計算して最後に両方をメインテーブルに入れたいです。
690 :
名無しさん@そうだ選挙にいこう :2009/12/03(木) 19:40:36
質問です。 クエリのフィールドの式ビルダで連続して別の処理を行うには どうしたらいいですか?
そんなにエクセルが好きならエクセルのほうでとある欄に対応する データを表示(1ならAを表示みたいな)と対応する数字によって 消費税率を変えて計算しておけばいいじゃない
692 :
名無しさん@そうだ選挙にいこう :2009/12/04(金) 00:28:50
>>690 連続して別の処理を行うとは?
左からクエリで演算して、さらにその結果をとなりの列で
演算とか?
>>691 そうしたいのも山々だったのですが
ちょっとそうもいかないのです。
するにはどのようにしていけばよいのでしょうか。
694 :
690 :2009/12/04(金) 13:22:57
>>692 同一フィールドで、関数を使用して処理をした後に、別の関数で別の処理をすることです
モジュールに記載すると同じ処理でもなぜかうまくいかないので、式ビルダでなんとかしたいです
>>モジュールに記載すると同じ処理でもなぜかうまくいかない なわけねえだろ
696 :
名無しさん@そうだ選挙にいこう :2009/12/05(土) 21:26:48
>>695 いや 昔、単体テストで動いてるモジュールを メインに組み込むと
動かないんですけど とクレームをつけられたことがあるぞ
697 :
名無しさん@そうだ選挙にいこう :2009/12/05(土) 22:57:09
みなさん、教えてください。 ACCESS単体で使っている人はどんな使い方をしてるのでしょうか。 ちなみに私は、エクセルと連携して使っています。ACCESSはデータベースとして利用。 エクセルVBAでACCESSを制御しています。 たまに、クエリーでACCESSを動かして使います。
2010はIME制御が不安定だなぁ
>>696 単体テストだけで満足して結合テストしてないからだろ
700 :
名無しさん@そうだ選挙にいこう :2009/12/06(日) 13:25:18
>>699 たぶんそうなんだろうね。
大手の子会社なんで、めまいがしたよ
701 :
名無しさん@そうだ選挙にいこう :2009/12/06(日) 13:31:07
そういう現象が起きたんですけど とサポートの電話で文句を言われたんだよん #すべて客先内部での話
日時型の表示形式で、nn:ss って出来ます? 2010では出来ない。。。
703 :
名無しさん@そうだ選挙にいこう :2009/12/06(日) 13:45:41
>>697 そういう用途にはSQL鯖 Express 使うから、最近Access使ってないかも
ADPって使ってる人いるのかな?
>>702 リボンからだとできないっぽいな。
プロパティシートからはできるよ。
これから調整はいるんじゃね
hhもできないんだがな by 64bit
>>704 プロパティシートからもVBからもできない@32ビット
時刻(S):n:s になってしまう
706 :
名無しさん@そうだ選挙にいこう :2009/12/07(月) 19:53:57
Access2010 βについて質問 ・「データベースツール」タブの「管理」を表示させるにはどうしたらいいのか?
>>706 その辺のコマンドは、97-2000ファイル形式とかの互換用だでな
そのバージョンのmdbを開くと活性化となるでよ。動くかどうかは知らん。
708 :
名無しさん@そうだ選挙にいこう :2009/12/07(月) 21:10:45
>>707 さんきゅー。仰るとおり。mbdファイルだと表示されたわ。
どんなカラクリなのか今の私には分からんのじゃが。追々勉強しまっさ。
709 :
名無しさん@そうだ選挙にいこう :2009/12/08(火) 16:07:04
相談させてください。 ★OS Win XP〜7 ★Access2007 ★会社にてAccess97→2007へ切り替えることとなりました。 そこで教えて頂きたいのですが、全12台分のPCへインストール予定の場合、ソフトを12購入するのとライセンス購入するの どちらが良いのでしょうか? ライセンス購入がいまいちよくわからないです。 1ライセンスで1台ですか? そうだとすると、ライセンス代よりも格安店で通常ソフトを購入した方が 2〜3千円安いのです。 少し高くてもライセンス購入した方が後々良いことがあるのか、大差ない なら通常ソフトでいいのか。 お分かりになる方がいらしたら、どうぞ教えてください。
>>709 ボリュームライセンスのほうがいいんじゃないか?
基本的にプロダクトキーが統一されているわけだから(いらないんだっけ?)。
一本一本買っていたらディスク要求されるような更新があった場合、よほど管理されていないとたぶん死ぬ。
で、ライセンス分の(ディスク)コピーをしてよかったはず。
2010 テキストボックスのステータスバーテキストプロパティって前からあった? おnewかな
【 システム環境 】 WindowsXP, Access2003 【 VBAが使えるか 】 いいえ 【 VBAでの回答 】 可 がんばります 下宿の物件管理をしています。 大家に物件のフォーマットを送るときに、物件の情報と大家の情報が一対一に対応しているので、 封筒に貼るラベルを印刷する際に(複数件物件を持っている大家の)住所が余分に印刷されてしまい困っています。 どうすれば重複している大家の情報を除いた(重複を一件にまとめた)レポートをつくれますか? よろしくお願いします。
713 :
712 :2009/12/08(火) 18:55:34
住民票だの風呂付きの間取りだのはまだまだ全然先になりそうだなw
2010 DatePickerの挙動がオカシイ、日付選択後にフォーカスがテキストボックスに戻らない、2007に戻した MSの人、見てたら改善して
718 :
名無しさん@そうだ選挙にいこう :2009/12/09(水) 10:03:43
MSの人がみてたらw
>>717 VerUpして糞になるのがMSの流儀だよな。
おれは全Ver持っているけど、2002を使っている
2010プレビュー コネクトでバグ報告したら返信も何もないで治ってた、βでは日本語で報告する所がないからメンドイから2ちゃんねるに書くだけ
721 :
709 :2009/12/09(水) 11:09:53
>>710 ありがとうございました!
早速調べてみます。
722 :
名無しさん@そうだ選挙にいこう :2009/12/10(木) 01:01:36
SQLでFROM句にDAOかADOのレコードセットオブジェクトを指定することはできますか?
>>722 状況がよくわかりませんが
SQL文一発で書いてください
724 :
722 :2009/12/10(木) 01:21:28
>>723 サブクエリ使うと重くなるので、すでに一度実行したSQLで作成した
レコードセットを再利用して追加でSQLを実行したいのです。
フォームのテキストボックスのコントロールソースのデータ型調べるにはどうしたら良いですか?
>>724 最初に実行するSQLでワークテーブルを作り、2回目はそれを使えばいい。
(情報が少ない今はこれがベスト)
>>725 テキストボックスのコントロールソースの元となっているクエリまたはテーブルの項目の型を調べればいい。
727 :
725 :2009/12/10(木) 16:38:47
VBA で任意の(ActiveControlの)テキストボックスのデータ型を取得したいのですが
728 :
725 :2009/12/10(木) 17:11:28
自己解決しますた Dim sc As String, rs As Recordset, fd As Field sc = Me.ActiveControl.ControlSource Set rs = Me.Recordset Set fd = rs.Fields(sc) Debug.Print fd.Type
質問です。 今TransferSpredsheetを使って セル指定をしてTMPテーブルに取り込んで、 そこからテーブル内参照でない項目を埋めて、 メインテーブルに取り込む物をつくりました。 今回その取り込む前にexcelのデータチェックをしたいのですが excelをダイアログから選択>データチェックとするには どういう手順で記述していくべきですか?
>>729 OLEとかODBCでexcelに接続してレコードセット作って検証するとかして、
順次テーブルにinsertしていく感じかな。
もしくは、access側のVBAでexcel開いてCellsとか使って検証したうえでimportか?
>>730 書き忘れてました。
今はとりあえず取り込んでTMPで更新クエリ削除クエリを使い完成させ
TMPが完成したら追加クエリでメインテーブルにinsertと言う形なのですが
これを崩さずにできますか?
言われたもの調べてみます。
しかし去年からずっとexcelをダイアログから選択してどうのこうの言ってるやつ とうとうTransferSpreadsheet使える程度にはなったのか。 よかったなw
>>732 人違いかと思います・・・
最近始めたばかりなのでACCESSを・・・
734 :
717 :2009/12/10(木) 23:07:24
DatePicker オカシイので2007に戻して回復したが、今日から突然2007でもオカシクなった 自動アップデート来た後からの気がする 2010 or 2007 で 日付/時刻型の日付選択カレンダーは普通に動作してますか? 日付を選択後にフォーカス失いませんか?
735 :
730 :2009/12/10(木) 23:59:16
>>731 ん、
テンポラリに取り込んで修正して削除してメインに追加するってのは、
レコードセット作っての処理だけで実現可能かなと思っただけ。どの程度の
処理があるのかわからんのでね。その辺は察してね。
今あるものは生かして、事前にexcelの内容をチェックするてんだったら、
VBAでexcelファイル扱って、excelVBA使って確認したらいいんじゃね?
まぁチェックの内容と量にもよるかな。
>>734 フォーカス失うっつーことはないね。2010(64/32)も2007も。
>>735 VBAでExcelファイルを扱うしかないですかねぇ・・・
Excel側でチェック入れていいならかなり楽になると思うんですが汗
量は23列あり行は9999もあります。(ただこれは指定してあるだけです)
チェックを掛けたい列は11項目行は大体3000行程度です!
VBAでExcelファイルを扱うか、桐にするかしかないよ
738 :
717 :2009/12/11(金) 09:03:44
いろいろ試してみたら、職場のVISTAは大丈夫だった 今朝来たらWinアップデートの無限再起動中でたちあがらず、システム復元復帰後 自宅のXPはダメ、日付選択カレンダー選択後にフォーカス失うようになった 2007も2010も 今夜システム復元してみる
740 :
名無しさん@そうだ選挙にいこう :2009/12/11(金) 14:30:25
>>724 create tmp したらってAcccessは駄目なのか(な?)
初歩的な質問す。 Dim sArray() as String If (LBound(sArray) > 0) Then ・ ・ ・ としたら当然If文の行で「実行時エラー'9':インデックスが有効範囲にありません。」エラーが出るんだが、 sArrayの要素数が未確定の状態を取得することって、エラーハンドリング以外でもできる?
>>741 懐かしいな。
VB6のFAQだったが。
Dim sArray() as String
If (Not sArray) <> -1 Then
IsArray(sArray)で
配列かどうかを知りたがっているわけではない ように見えるんだが。
745 :
名無しさん@そうだ選挙にいこう :2009/12/12(土) 10:02:19
redim sArray(0) しないと駄目じゃね? #未定義かどうか、判断できねーのか・・・?
どういうことをしようとしているのか解らんが、別の方向からアプローチしたほうがいいんじゃね? 先に要素数をカウントするとか。
条件付き書式設定して、色替えたりしてるコントロールは、.Enabled=False に出来ない つーか、.Enabled=False に設定しても編集できちゃう アクセスって素敵すぎる
まあLocked=Trueにしてるからいいけどあれはなんでなんだろうなw
条件付き書式で[有効]に設定していて、気づいてないだけとかいうオチじゃねーだろーなw
>>748 都合上、.Enabled=False の背景をグレーアウトにしたい
Locked=Trueにするとグレーアウトしなくなるので、また不都合
条件付き書式で色変えたレコードはグレーアウトしない、背景色も設定に変わるから当然だが
で、グレーアウトしないレコードは、.Enabled=False でも普通に編集できちゃう
751 :
名無し :2009/12/13(日) 12:48:28
access2010を開くと2007互換モードにしかならないのはなぜですか? access2010インストール以前には、どのバージョンのaccessも入っていません。 起動時に「コマンドまたはアクションは無効です。」と表示されます。 access初心者です。よろしくお願いします。
752 :
名無しさん@そうだ選挙にいこう :2009/12/13(日) 13:51:22
>>751 初心者がベータリリースのツールを、さらにはAccess使ったこともない
奴が質問するとか
ちょっとわきまえた方がいいですよ。
754 :
749 :2009/12/13(日) 15:55:39
>>750 いやだから、条件付き書式っていうのは、対象コントロールのプロパティが
どうなっていようとも、ある条件を満たしたときには条件付き書式の設定の方が
優先されるからこそ意味があるのよ?
>750 を読んだだけだと、そもそも条件付き書式って何するものか理解して
使っているのかという点に、かなり疑問が生じる。
仮に条件付き書式の[有効](これはヘルプを見ると分かるけど、Enabledに該当)が
オンになっていて(仮にの話よ。どっちの状態なのか一度も書いていないから
分からないけれども)、もしその条件を満たしているのであれば、コントロール自体の
.Enabledに何を設定しようが、その設定が無視されて条件付き書式の[有効]の方が
優先されるのが挙動としては正しいでしょ。
条件付き書式が条件満たしてるのに、ふつうのプロパティの設定に負けてどうすんのよ。
仮に、あなたが本当に適用したいのは色の設定の部分だけで、[有効]の設定は
無視されることを心の中で願っていたとしても、たぶんAccessにその思いは
伝わらないと思う。そういう仕様じゃないから。
もし上記を理解した上で、条件付き書式が正しく動作しない状況があるということを
主張したいのであれば、第三者に再現可能な具体例を挙げてほしい。再現したら、
そこではじめて意思疎通が成り立つわけで。漏れも「ああそういうことを言いたかった
のね、そういうバグがあるんだ、へー」で納得するわ。
そうでないんだったら、傍目には「信号無視したら捕まったんだけど、日本の警察は
どうなってんだ」くらい支離滅裂なことを書いているようにしか見えないということに、
早く気づいてほしい。
いずれでもなく、MSの決めた条件付き書式の仕様があなたの脳内仕様にしたがって
くれないという不満を訴えたいだけなら、ご愁傷様としか言いようがない。
755 :
名無しさん@そうだ選挙にいこう :2009/12/13(日) 22:08:50
>>754 彼女のクリトリスをそっと舌で まで読んだ
桐ならフォーカス設定禁止プロパティあるけどな
758 :
717 :2009/12/13(日) 23:29:57
なにしてもダメだったので、2007も2010もアンインストール 2007だけ入れたら治った 安心して2010入れたら症状再発orz WinXP Access2010 ・日付選択カレンダーでフォーカス失う ・IME設定関係の挙動がおかしい
759 :
名無しさん@そうだ選挙にいこう :2009/12/14(月) 01:07:16
>>754 /:.:.:.:.:.:/:.:.:.:.l:.:、:.:|:.:.:.:.:.:.:.、:.:.:.:.:.:.:.:ヽ:.:.ヽ
//:.:.:.:./:.:./:/ |:.:.|:.、:.:.:.:.:.:.:.:\:.:.:.:.:.:.l|:.:.:.:ト!
|:|!:.:.:.:.:!:.:.|:/ !:.:|:.:l:.:.:._l:.:.:.:.l:.:.:.:.:.:.||:.:.:ノ|
|ハ:.:.:.:.:|:.:.|'| ̄ !:.:ト、\:.:.:.|l`ヽ|:.:.:|:.:/l:/ハ
l! ヽ:.:.:.l:.:.l:| ヽl ヽ=≠-、:.l|:.:.:|//彡/:|\
\:|:.:.|=-‐ トしrハ|:.:ノ|/! |´|:.:|:.:.:ヽ
i`:.l , ー‐' ,':.:.:.:トノ:!:.:l:.:|:.|:.l!|
3行でまとめろよ、ハゲ★|:ノ:.\iヽ ー‐ /:.:.:.:/:|:.:.:.|:.:|:.:lソレ'
//:.:.:.l「| ト、__,.. ィ/:.:.:.:斗-!:.:.:|:.:.:.:.ヽ
/:.:/:.:.:./l/ ノ,へ ! /:.:./ \l:.:.:.:.:.:.',
/:.:.:/:.:.:./|/ 'ー-ri /:.:.:.:/ , |ヽ:.:.:.:.:.:',
/:.:.:.:.ノ!:.:./ ! 二j´ /:.:.:.:/ / l:.:.\:.:.:.:.',
/:.:.:.:.:.:/ ∨ノ/ ,rノー|:.:/ノ´_,,. -‐ /!:.:.:.:.:ヽ:.:.:l
!:.:.:.:/_, -‐' .〉 ,ィ´ ̄l:/ '´ /:.|:.:.:.:.:.:.:|:.:.:|
760 :
741 :2009/12/14(月) 11:21:07
しかしなぜ
>>742 のIF文で配列要素数宣言済みかどうかを判定できるのかが理解できない。
括弧を取ったりNotを取って<>を=にするとエラーになる。
だれか理論的に説明してくれないか?
762 :
742 :2009/12/14(月) 22:17:44
>>761 すまんが、正確には知らない。
自分がVB6かじったときはふつうにFAQとしてあちこちのサイトに
載っていたので、そういうものだと思って使っていたけど。
たしか、配列は頭にNotを付けると何かのポインタの論理否定を
返すみたいな話だったような。で、ReDimしていないときは領域が
確保されていないので、ぬるぽ0の論理否定すなわち-1を返す、
とかなんとか。
自分よりキャリアの長いVBユーザなら、もっと詳しく知ってるかも。
でも.NETになってもうすぐ8年経つからなぁ。
プログラムは理論ではなく実装に沿って行動するからな。 ちなみに理論は解釈によってどうとでもなる。
764 :
761 :2009/12/15(火) 00:03:09
>>762 いや一応なんとなく納得できたよありがとう。
今後使わせてもらいます。
765 :
名無しさん@そうだ選挙にいこう :2009/12/15(火) 10:40:34
ACCESS2007で、 別のPCにリアルタイムでバックアップを取得したいのですが よい方法ってありますか? ミラーリングさせるソフトを使うのがよいですかね?
>>765 スキルによる。自信が無いなら既存のソフトを使ったほうがいい。
バックアップを前提とするのなら、ミラーリングのほかに世代管理できるものを選ぶべき。
>>764 政治思想と物乞いの区別が付かないのが、チョウセンヒトモドキ
769 :
名無しさん@そうだ選挙にいこう :2009/12/16(水) 17:16:11
レポートの印刷イメージをWordに貼り付けたいのですが、方法は有りませんか? Print Screennでのコピペだと画像が落ちてしまうので、評判が良くありません。 Office LinkでWordに出力すると空白のテキストボックスやボックスが反映されません。 印刷画面をそのまま貼り付けたいのですが、方法が有りましたら教えて下さい。
PDF
>>769 印刷すればさほど汚くは無いんだけどね。
画像の縮小はしない。ぐらいしか回避法はないんじゃないか。
それか配布するPCにビュアを入れて、スナップショットで渡すとか。
何がやりたいのかわからないけど。
マニュアル作りだったら、スレ違いもいいところ。
紙に印刷してスキャナで超高解像度で取り込んでWordに貼り付けろ
質問です。 エクセルから6列分のデータをとって来て それを値にセットして、その値を処理に使う場合どんな書き方すればいいんでしょうか・・・ セット>処理終わったら次の行へ見たいな感じにしたいです。
しかし去年からずっとexcelをダイアログ選択してどうのこうの言ってるやつ もうエクセル全然関係ないだろそれ・・・
誰だか知らないですけど 真剣に質問しています。
>>775 「Excelからデータをインポートする方法」でggrkでございます。
>>775 んで、ADOなりDAOでレコードセットをごにょごにょすればおk
AccessでExcelのApplication.GetOpenFilenameのかわりになるものありますか?
779 :
名無しさん@そうだ選挙にいこう :2009/12/19(土) 08:48:53
FileSystemObject をぐぐってみたら? 使えると 色々便利だよ
ありがとう。調べてみます。
if isnull(aaa) or aaa = '' then msgbox("err") exit sub end if 毎回コレでNull&空白チェックしてるのだが、誰かこれFunctionにして
Nz使え
>>781 標準モジュールに入れてPublicにして
Exit SubのところをEndにすればいいんじゃね?
>>781 Function Check(aaa)
Len(aaa & "") = 0 Then MsgBox(#err)
End Function
IF が抜けてた Function Check(aaa) If Len(aaa & "") = 0 Then MsgBox(#err) End Function
ACCESS2000のVBAでレポートをプレビュー表示するとき、ウインドウのサイズって指定可能?
787 :
名無しさん@そうだ選挙にいこう :2009/12/21(月) 19:55:15
【 システム環境 . 】 WindowsXP, Access2003 【 VBAが使えるか .】 はい? 【 VBAでの回答 】 可 SBIでの株取引の履歴をACCESSで管理しているのですが、 取引データで、同日に複数回取引した場合の数字をまとめて表示したいです。 元データは別のファイルからも利用している為、ACCESS内で何とかしたいです。 クエリのクロス集計をしてみましたが、約定単価の算出する計算をどうしたらいいのか見当がつきません。 そもそもこういう事は出来るんでしょうか? なにかヒントをいただけませんか? テーブル1 取引日 銘柄コード 銘柄名 取引種別 約定数量 約定単価 受渡金額/決済損益 データ例 2009/12/01 1234 ○○商事 現物買 1000 200 200000 2009/12/01 1234 ●●自動車 現物買 1000 500 500000 2009/12/01 1234 ○○商事 現物買 500 180 90000 2009/12/02 1234 ●●自動車 現物買 1000 520 520000 希望データ 2009/01/01 1234 ○○商事 現物買 1500 193.33 200000 2009/01/01 1234 ●●自動車 現物買 1000 500 500000 2009/12/02 1234 ●●自動車 現物買 1000 520 520000
集計クエリでできそうな気がする
いや、集計クエリでできる。もしかしたらウィザードを使用してもできるかも。 ただ銘柄コードが同じなのと、 >希望データ >2009/01/01 1234 ○○商事 現物買 1500 193.33 200000 となる理屈がよくわからないが。
791 :
790 :2009/12/23(水) 19:47:14
ああ、間違えた。 "受渡金額/決済損益の合計" / 約定数量の合計で求めなくちゃいけないのか。 フィールド名に"/"とか使わないほうがいいよ。
792 :
790 :2009/12/23(水) 19:59:00
SELECT DISTINCTROW Format$(T1.取引日,'Long Date') AS [取引日 を日でグループ化], T1.銘柄コード, T1.銘柄名, T1.取引種別, Sum(T1.約定数量) AS [約定数量 の 合計], [渡金額_決済損益 の 合計]/[約定数量 の 合計] AS [約定単価 の 平均], Sum(T1.渡金額_決済損益) AS [渡金額_決済損益 の 合計] FROM T1 GROUP BY Format$(T1.取引日,'Long Date'), T1.銘柄コード, T1.銘柄名, T1.取引種別; ウィザードでクエリを作って、ちょっと手を加えた結果。
793 :
名無しさん@そうだ選挙にいこう :2009/12/23(水) 21:24:01
アクセスで100万レコード管理していて、エクセルVBAから抽出や更新など管理・利用という使い方をしています。 エクセルがかなり速度的にきついのですが、アクセスだけでVBA組んで抽出や管理するほうが一般的なんでしょうか。
>>793 凝らなければVBAすら必要ないかもしれない。
まぁ、AccessがすべてのPCに入っている、または入れられるのなら
Access一本でやったほうがいいかもね。ただし、データ部とインターフェイス部は分けるべき。
>エクセルVBAから抽出や更新など
恐らくADOあたりを使っているのだと思うが、そうだとすると大した速度アップは期待できないんじゃなかろうか。
>>793 WHERE条件で使用するフィールドのインデックスの見直し。
796 :
名無しさん@そうだ選挙にいこう :2009/12/23(水) 22:02:25
>>794 レスありがとうございます。
ご指摘のようにADO使っています。速度向上期待できそうもないので
アクセスだけでやってみます。
>>795 レスありがとうございます。
SELECT文は基本的な使い方しかしらないので良く勉強してWHEREも注意して使ってみます。
>>796 書き方が悪かったか。Access一本でやったとしても、速度アップは期待できないといいたかった。
ACEかJETとかは知らないが、もはやDBエンジンの問題。
即とアップが期待できるのは、
>>795 が言っているように、テーブル構造自体の見直しだろう。
798 :
名無しさん@そうだ選挙にいこう :2009/12/23(水) 22:51:57
>>797 速度アップは期待できないですか。
でもエクセルVBAが動いている間、エクセルを使えなくなることはなくなるので
それだけでも良しと考えることにします。
799 :
メモリ君 ◆7mDj3mSGOQ :2009/12/23(水) 23:17:49
>>794 できれば、そのくらいデータがあるなら、データ部分はMySQLやPostgreSQLなど
のデータベースサーバに任せるようにしたほうが、後々良いよ。
ちなみになんだが、localhostで運用した時、メモリやCPU資源が多いのであるな
らば、こちらにデータを渡して、C/Sにしたとき、Access単体よりも速度向上が期待
できるよ。もちろん、その時は、データベースサーバ側のチューンが必要。
テーブル構造が冗長になっていると、その分だけテーブルのデータをひっぱって
こないといけないから、細かく細かく正規化を進めた方がいいかもしれない。
それはそうだがこういうケースでMySQLやポスグレを薦めて SQLServerExpressEditionを外す理由がわからん
>>799 PostgreSQLはOLEプロバイダが事実上使えないからなぁ。今は知らんけど。
ODBC接続もネット上のサンプルが使えなくて苦労した。
データソースを登録すれば簡単なんだけど。
>>800 俺は候補からはずな。容量制限がきつすぎる。Access2ファイル分だもの。
MySQLはしらんが、PostgreSQLはSQLServerと同じように制限なしだったはず。
ちなみに799ではない。
803 :
メモリ君 ◆7mDj3mSGOQ :2009/12/23(水) 23:54:24
>>800 無償で商用利用できて、Accessからのマイグレーションとなると、ツールが
充実しているMySQLがお勧めだ。
804 :
メモリ君 ◆7mDj3mSGOQ :2009/12/23(水) 23:55:55
>>801 ODBCの運用でも、このくらいのデータなら大丈夫。
PostgreSQLももう少しツールが充実していたり、そういう足回りが充実
してるといいんだけれどね。日本ではMySQLよりも好まれて使われて
いるみたいだけれどね。
>>804 PostgreSQLを使おうとした理由──商用利用に関する規約が簡潔だったから。
これに尽きるw
806 :
メモリ君 ◆7mDj3mSGOQ :2009/12/24(木) 00:16:11
>>805 だからか。なるほど。
あと、SQL Serverを進めない理由は商用利用に関してちょっと問題がある
のと、制限があること。
いずれにせよ、今後、100万レコード以上を単体のAccessで動かすのは、
いろいろとリスクや問題点があるから、C/Sのテクは身につけて於いたほう
がいいと思うね。
そ
Excel&AccessはすでにC/Sでしょ。
808 :
795 :2009/12/24(木) 03:38:59
100万レコード程度ならAccessで十分だと思うんですけどね。
仮にレコード長を200byteとするとインデックスを含めても300MB程度でしょう?
>>793 の内容から想像すると、それほど複雑な処理とは思えないし。
もちろん、マルチユーザー&同時アクセスなどであればDBサーバーの導入を
検討すべきだとは思いますが・・・
>>807 Accessは残念ながらサーバーではありません。
なあ、SSDにすれば重いAccessもサクサク動くのですか?
810 :
788 :2009/12/24(木) 06:31:59
>>790 レス遅くなりました。
>フィールド名に"/"とか使わないほうがいいよ。
インポートしたままだったのですが、ややこしいですね。
修正します。
>>791 SQLありがとうございます!
やってみます。
811 :
名無しさん@そうだ選挙にいこう :2009/12/24(木) 08:58:02
>>807 Jetは構造的に全データを取り込んで処理するから
Access<->Excelが C/S だというのは、見た目はともかく
原理的には、違う気がする
#SQL投げてもデータ処理はローカルだもの
>>793 Excel出力の場合は、Excel-VBAの方が早いから
Excel-Access以外のちゃんとしたDBの方がいい気がする
Access->Excel出力は、遅いと思う
100万件くらいなら、SQLServerExpressで試して見たら
Accessのカラム名日本語だったら、Postgresとか
めんどくさい気もする
#英数字小文字以外だと "" でエスケープしないとNGだから
#今もそうだよね?
今回のケースは仮に商用利用ではないとして実データが300M程度で収まるのであれば やはりSQLServerが外される理由はないと思うんだが・・・
>>811 カラム名日本語大丈夫だったよ>PostgreSQL
まぁ、PostgreSQLに限らず、基本的に英数以外は避けたほうが無難では歩けど。
>788
解っていると思うけど、テーブル名とフィールド名が変わっているからね。
テーブル1 → T1
受渡金額/決済損益 → 渡金額_決済損益
質問 AccessのMDB ファイルが異常な勢いで増大して困っております。
質問 WindowsXP+ Access2K AccessのMDB ファイルが異常な勢いで増大して困っております。 つづき レコードロックはレコードレベルをはずしております。 レコードの削除追加はそんなに行っていないはずなのになぜ、増えるのかが不明です。 もし、このまま2GBに到達しても、放置しておくとどうなるのでしょうか? 増大を止めるほかになにか有効な手はあるのでしょうか?
816 :
名無しさん@そうだ選挙にいこう :2009/12/24(木) 16:35:02
>>813 日本語のカラム名をSQLで使う場合なんだけど、Javaだけだったのかな?
#もう忘れちゃった
>>815 最適化/修復 実行しても駄目?
817 :
名無しさん@そうだ選挙にいこう :2009/12/24(木) 23:21:31
>>808 793です。
とりあえず応急処置でSQLで対応しました。
2007なのでエクセルへのエクスポートも簡単だし、エクセルVBAからの操作はやめて
直接ACCESSでやっていこうと思います。
818 :
795 :2009/12/25(金) 01:04:58
>>817 了解。あとはMDBファイルの破損リスクに注意して定期的なバックアップを。
それから、その他の方からのアドバイスも今後のアップサイジングの可能性を
考えたら非常に有用なのでログ保存がお勧めです。
>>814-815 2GBを越えると得体の知れないエラーが頻発します。
(システムテーブルの操作ができない事が原因?)
今、ファイルサイズが増大する理由もシステムテーブルを肥大させるような
操作をしているからのような気がします。
>>815 おれもそんな現象に遭遇したことがある
絶対にありえないという勢いでサイズが大きくなる
原因は良くわからん
>>818 システムテーブルとはなんなのでしょうか?
アクセス達人の方々のご意見をお願いします FileSystemObjectを使った自分自身のバックアップは大丈夫なの? 専有の場合と共有の場合、それぞれOKですか?
>>809 多少は速くなると思うが、CPUの処理速度のほうが目に見えて影響する。
メモリの搭載量は実際の処理には影響が少ない。ただしAccessの起動と終了には影響するので
たくさん積んだほうがいい。まぁ、起動からAccessが閉じるまでを測るか、
ボタンを押して終了メッセージが出るまでを測るかの違い。
SSDって頻繁に書き換わるようなものに使っても大丈夫なの?
823 :
名無しさん@そうだ選挙にいこう :2009/12/25(金) 19:54:07
>>818 アドバイスありがとうございます。
バックアップはとって自己防衛しておきます。
>>821 俺にはこの手の質問をする人の精神構造がまったく理解でないのだが、
あえて言わせてもらえば「自分でやってみればいいだろ」に尽きるのだが。
なぜやることが解っているのに、自分で試さないの?
>>822 ありがとうございます。
ノートPCでmdbを走らせるにはSSD換装よりも高速CPUのノートへの買い換えのほうが有効なんですね。
寿命の問題は気になりますが、寿命より前に更に魅力的なSSDが発売されて乗り換えると思いますので大丈夫だと思います。
826 :
名無しさん@そうだ選挙にいこう :2009/12/25(金) 23:02:53
>>825 というよりも、読み書きを頻繁に行う上に、プログラムの
作り方によっては、莫大なメモリを消費するのがDB
まぁ、金にあまり糸目をつけないというのなら、SSD換装
も悪くないよ。確実にI/Oは改善するから。当然メモリは
あるだけ消費するし、CPUもね。
かつて、500人に大して、勤怠のデータおよび給与明細
を個別にPDF化して、個別にメールで送るプログラムを作
ったことがあるけれど、CPUがセロリンだったのも悪いん
だけれど、送信完了まで10分かかったよ。PDF化がかな
りのメモリをつかっていて、2GBくらいVMサイズになって
た。
>>824 普通のDBは更新中のバックアップとか考慮されてるけど
ACCESSではどうなってるのかという話だろ。
自分でやってみろってどうやるの?
大勢の人に更新させてその間にバックアップをとるというテストを
何度もやって確かめるの?
100回やって問題がなかったとしてもたまたまかもしれないぞ。
>>826 なるほど。メモリを莫大に消費するなら、64bitOSに大量のメモリ積めば良さそうに思えますね。
windows7にAccess2002の組み合わせがちぐはぐですが、トライしてみたいと思います。
829 :
名無しさん@そうだ選挙にいこう :2009/12/25(金) 23:13:53
>>827 起動時に、自身のコピーを5世代分、常にバックアップして
から、起動する仕組みを入れてある。
一時期、Access2007で、終了時の最適化時にファイルが消える
ってことがあって、大変だったからね。
まぁ、これがファイルであるAccessの弱点だね。こういうの過去
にもあったし。なんで、今は、MySQLをバックエンドに据えて、
動かしているけれど、こういう大規模になってくると、ロールバック
も考えないといけないよね。
単純なバックアップじゃ、ちょっとね、あれ
MySQLとかロールバックとか言いたいだけちゃうんかと
>>821 専有は問題生じてないよ。
共有はダメじゃねえのかな。
Access標準のバックアップはバックエンドは排他でやれと書いてあるくらいだからさ。
テーブルとテーブル以外でmdb分けてないのかよ テーブル以外の方は修正があったらその都度バックアップをとればいい。 1年間修正がなければ1年間バックアップは不要だし、 起動時に毎回自身を5世代とか、もうね・・・
データおかしくなって調べてるうちに4回再起動したらバックアップも全部あぼーん
起動時とか終了時をトリガーにしてるアフォがなんか語ってるって指摘なら あながち勘違いでもない
ぶっちゃけ、Accessの処理でバックアップ機能しこむってどうなの? 俺的には、壊れやすいっていわれているものに重要な機能は組み込みたくないんだけど。 面倒くさいし。 業務の合間に作業しているアマグラマーwだから、そこのところが知りたいんだけど。 バックアップソフトで、世代管理バックアップが確実のような気がするんだけど。 しかもスケジュールバックアップ。
837 :
名無しさん@そうだ選挙にいこう :2009/12/27(日) 15:08:16
OS:XP Access:2003 AccessというよりSQLの質問? でも、oracleだとできるそうなので、 やっぱりACCESS固有の話だと思います。 Accessで、SELECT結果を使ったUPDATEしたいのですが、 どうすれば、できるのでしょうか?(何が悪いのでしょうか?) いくつかのHP見ながらSQLを書いてみたのですが、 やりたいことは、 2つの列を更新したいのと、 更新する際の条件が2つ(id1とid2) で、下のSQLを書いたのですが、 「UPDATEステートメントの構文エラーです。」とエラーが出ます。 UPDATE ORG SET (ORG.date,ORG.data)=(SELECT up.date,up.data1 FROM up WHERE up.id1 = ORG.id1 AND up.id2 = ORG.id2) WHERE EXISTS (SELECT * FROM up WHERE ORG.id1 = up.id1 AND ORG.id2 = up.id2)
838 :
857 :2009/12/27(日) 15:10:29
テーブルは以下の形です。 upテーブルの値で、ORGテーブルを更新しようとしています。 ORGテーブル id1 id2 date data 1 a 20091226 AAA 1 b 20091226 BBB 1 c 20091226 CCC 2 a 20091226 aaa 2 b 20091226 bbb 2 c 20091226 ccc upテーブル id1 id2 date data1 1 c 20091226 CC2 2 a 20091227 aa2 お願いします。
>>837 うろ覚えなんだが、Accessの更新クエリって、サブクエリが使えなかったような気が。
なにか、制限があったのは確かなんだが。
840 :
名無しさん@そうだ選挙にいこう :2009/12/27(日) 17:09:00
教えてください。 Access2000+MSDE2000(ODBC接続)で開発してます。 クエリーの速度改善のためにパススルークエリー化を行っているのですが、 SQLServerのSQLはAccessのようにGUIで作成できないので効率が悪くて 困っています。 ADP使えば選択クエリーはなんとかなるのですが、ADPは更新クエリーに 対応していないので、複雑なクエリーとなると、1つ1つSQLを手書きする為 とても時間がかかってしまいます。 何かGUIでSQLを自動生成する方法があれば教えてください。 よろしくお願いします。
いまMS Access2002を使用していますが、デザインビューの拡大ができないので使い勝手が悪いと思います。 最新バージョンではデザインビューでの拡大機能はございますでしょうか?
842 :
名無しさん@そうだ選挙にいこう :2009/12/27(日) 18:06:03
>>837 update up inner join ORG on up.id2 = ORG.id2 and up.id1 = ORG.id1
set ORG.date = up.date, ORG.data = up.data1
where ORG.id1 = up.id1 and ORG.id2 = up.id2;
でいいんじゃね?
>>840 serverのGUIツール使うのがいいんじゃね?で、コピペと。
>>841 2010でもフォームは原寸のみじゃね?プロパティ設定とかでズーム使えるけど、この件じゃないよね。
>>843 ありがとうございます。拡大できないとなると解像度の影響が大きいですね。
15インチWUXGAノートで使おうかと検討中なのですが、果たして可能なのか…
845 :
857 :2009/12/27(日) 18:44:09
> 843 ありがとうございます。 目的の更新ができました。 inner joinだったのですね。 勉強になりました。
846 :
840 :2009/12/27(日) 19:13:57
>>843 ありがとうございます
Enterprise Managerが入手できなくて困っていたのですが
探したらMicrosoft SQL Server Management Studio Express
というのでもMSDE2000を管理できるらしいとわかりました
正月明けたら会社でインストールしてみようと思います。
>>837 手元にAccessがないから確かめてないけどEXISTSのあとにTrueが必要かもしれない
ところでそのSQLはORACLEでは実行できるの?なんか違うような気がするが
UPDATE ORG
SET ORG.date = up.date,
ORG.data = up.data1
WHERE EXISTS
(SELECT * FROM up WHERE ORG.id1 = up.id1 AND ORG.id2 = up.id2) = True
EXISTSじゃなくてINNER JOINの方がいいと思う
更新クエリで作ってSQLビューで見た方が早い
848 :
名無しさん@そうだ選挙にいこう :2009/12/28(月) 15:47:05
【 システム環境 . 】 WindowsXP SP2, Access2007 【 VBAが使えるか .】 はい 【 VBAでの回答 】 可(というかVBAでの方法が知りたい) 【 検索キーワード 】 Access 固定長テキスト エクスポート 項目A 数値(十進数8桁)を持つテーブルを固定長でエクスポートします。 データが「00000001」の場合は「1 」の様にゼロサプレスされて左詰で出力されていまいます。 クエリで「項目A1:Format([項目A],"00000000")の様に定義し、エクスポート定義で 「項目A1、開始位置1、桁数8」の様に定義しました。この状態で手動エクスポートすると 期待通り「00000001」で出力されるのですが、VBAで以下のように定義するとやはり 「1 」で出力されてしまいます。 VBAの記述は以下の通りです。 DoCmd.TransferText acExportFixed, "エクスポート定義名", "クエリ名", "出力ファイル名", False 期待通り「00000001」で出力するにはどうすれば良いでしょうか?
849 :
848 :2009/12/28(月) 15:49:01
上記書き込みで「1 」となっているのは「1(空白7桁)」です。
>>848 2002だと848のやり方で期待通りに出力される。
IME入力モード:ひらがな IME入力モード保持:はい と設定して、 入力モードをオフに手動切り替えして英数字入力し、 別のコントロールに移動後、再度そのコントロールに戻ると、 IME入力モードが「ひらがな」になってしまいます。 カーソル移動でなく、別アプリのウィンドウに切り替えて、 戻っただけでも、「ひらがな」になってしまいます。 どなたか対処法分かる方いませんか? WinXP SP3 + Access2002 SP3 Microsoft Update 全て適用済みです。
852 :
名無しさん@そうだ選挙にいこう :2009/12/30(水) 15:38:36
>>851 目的がいまいちよくわからないけど
IME入力モード:ひらがな
IME入力モード保持:はい
の正しい動作だよ
最初からオフにしたいならIME入力モード:オフにしとかないと
>>852 レスありがとうございます。
■T'sWare フォーム&コントロール プロパティ活用辞典-079 〜IMEHold〜
ttp://www.tsware.jp/study/vol13/prop_079.htm にあるような動作にならないんです。
「ひらがな」モード強制でなく、
ユーザー側でモード変更したら、そのモードを維持させたかったんです。
例えば、
通常は毎回日本語ONになった方が便利なんだけど、
まとめて何件か英語を入力する必要があるようなフィールドとか。
あと、
他のアプリに表示されてる英文を
[Alt]+[Tab]キーで画面切り替えしながら入力するとき、
せっかく日本語OFFにしても、
フォーカスがAccessに戻るたびに日本語ONになってしまいます。
for文で変数に値を入れて、その後に処理をする と言うものをぐるぐるまわしてるのですが 変数に入れた値がすべて残ってしまうので 変数の中身をfor文の最後に空か初期化したいのですが どのようなものを使えばできるのでしょうか。
856 :
848 :2010/01/02(土) 13:41:03
>>850 バージョンの違いですか・・・
ありがとうございます。他でも聞いてみたいと思います。
857 :
名無しさん@そうだ選挙にいこう :2010/01/02(土) 17:06:14
明けましておめでとうございます 今年も皆々様、宜しくお願い致します。
>>851 バグでしょ
IME関係は動作不安定
機種変えたり、OS変えたりすると、変わる
2010の新メンバーは新しいプロパティが目白押し、でも主にデザイン関係だけ、ファイルメーカーみたいにキラキラデザイン可能になるのか TintとかSadeとかGlowとかHoverとか良く解らん Webサービス対応とデータマクロとデータバー以外は、目新しいのはフォーム・レポート・データマクロを開くときのSetParameterメソッドくらい 2010βは製品版レベルに安定してるので、移行しちゃった
配列が一致するというのはArray1=Array2という表現はできないの? Array1(i)=Array2(i)とかしないとダメなの? そうすると、配列の一致をif文の条件にできるのかな?if のあとにfor toでloopを回して、thenをつけるの?構文エラーになるよね… 結局、andで全要素つなぐしか方法はないのかな?でも、それだと配列にするメリットがない気がするし… みなさん、どうしてます?
>>860 forかwhileでループまわして、Array1(i)<>Array2(i)でブレイク。
ループを抜けたところで、iでループを回りきったかそうでないかを判断とかでいいじゃん。
フラグを立ててもいいけど。
とても悩んでいます。 ExcelをAccessで開いて データが入力してあるセルを数えようと思い Dcountとか使ったのですが、あれだとテーブルのレコード数を数える ようでどうやっても出来ませんでした。 他に.countを使用するとセルの数だけを数えちゃったりと 今日一日悩んでました。 セルに文字列があるものの数を数えるにはどうしたらよいのでしょうか。 accessから操作したいです。 お願いがいします。
>>862 Access側で処理しようと、スレ違いだろうよ。
いったんテーブルに落としてからカウントするのならここでいいだろうけど。
>>863 う・・・そうなんですか・・・
カウントをしてそのカウントを0にしてから取り込むような処理なので・・・
そしてかなり件数多いのでやはり今のやり方しかないのかなーと思いました。
そしてごめんなさい
>>861 ありがとう。にしても面倒ですね。
配列でひとまとめに扱う方法はないものですかねえ… ま、ないんでしょうねw
866 :
名無しさん@そうだ選挙にいこう :2010/01/05(火) 01:33:58
>>864 普通にDcountでNull以外をカウントじゃダメだったの?
>>865 仮に関数で用意されていたとしても、内部的には同じこと(ループで回す)しているだけかもしれないじゃん。
あとは戻り値でTrueかFalseを返すだけでしょ。
使用頻度が高いならコードをエクスポートしておいて、必要に応じてインポートすればいい。
まぁ、コピペでもいいけど。
条件付き書式とかで色を選択するときに5行8列の色のバレットがでますよね。ヘルプによるとカラービルダーとか言うらしいですね。 この40色の色をVBAで指定したいのですが、番号をご存じの方はいらっしゃいますか?ネットを調べると膨大な色のチャートがあるのですが、 40色で十分なので是非お願いします。QBcolor関数とか色の定数だと少ないのでやはり40色の番号を知りたいのでお願いします。
自己レス。 Backcolorプロパティーで取得すればわかりそうですね。 でも、リストをお持ちの方がいらっしゃれば助かります。
>>870 ありがとうございます。なにやら面白そうですね。コメントによるとdebug.printで色の値が取得できるんですね。
自分は適当なコントロールに背景色を設定して、プロパティーで覗いて値をメモっています。小学生レベルの質問でしたね。済みませんでした。
Accessのリンクテーブルを使ってSQLサーバー上のテーブルの編集をしていて躓きました SQLサーバー上ではimage型のフィールドに画像をうまく登録する方法を教えてください VBAは使えますが、できればACCESSのUIから挿入する方法はありませんか? フィールドにカーソルを置いて描画ソフトからコピーしてもうまくいきません。 ファイルのバイナリイメージを登録する方法を教えてください AppendChunk()を使えばできそうなのですが、ACCESSのUIから同様のことはできませんか?
873 :
名無しさん@そうだ選挙にいこう :2010/01/08(金) 12:29:49
質問です。。 Accessではレコードの並び順は保証されていないと聞きました (クエリで返される結果の並び順とか・・)。 しかしこれまで違う並び順で結果が返って来たことがあまり無いように思えます。 これは何故でしょうか?逆に違う並び順になるときというのはどういった場合で しょうか?教えて!偉い人。
> しかしこれまで違う並び順で結果が返って来たことがあまり無いように思えます。 無指定・無操作なら、テーブルに書き込まれてる順番で返ってくる > これは何故でしょうか?逆に違う並び順になるときというのはどういった場合で クリエで並び順を変な風に複数指定して、テーブル作成クエリにして、別テーブル作成 この別テーブルでも、無指定・無操作なら、テーブルに書き込まれてる順番で返ってくる でも、別テーブルだけ見れば、何の順番か解らない あと、無操作でなく操作が入ると、アクセスの中の人が操作レコード順を最速の順番で最適化して、その操作順でレコードが返ってくる
875 :
873 :2010/01/08(金) 19:01:05
>>874 ありがとうです。 最速の順番かぁ・・・じゃぁ全く同じ操作でも、PCの負荷状況にも影響されて 違うってことがありうるってことですか?
>>860 If Join(Array1) = Join(Array2) Then
↑でいけるんじゃないかな?未検証だけど。
(すぐレスしたかったんだけど今日までアク禁食らってました・・・)
>>874 × テーブルに書き込まれてる順番
○ テーブルファイルに書き込まれてる順番
order byしない場合の順序は保証されないってのはACCESSに限らずRDBの基本とされてるし なんでいまさらな議論してるんだって感じだ
まったくのランダムってことは無いよね 追加した順とか主キーの順とかになってるんじゃないかな
>>876 ありがとうございます。仕事が一段落したら試してみますね。
>>879 計算機にとってランダムってのは一番苦手なことだ。
WinXp SP3、ACCESS 2002です。 条件付書式をVBAで書いているときに気づいたんですが、条件がa>=1のときにa=0で真になったりすることが時々ありました。 で、条件の式をa>=+1と書き直して正常に動くようになりました。 実際は条件式が長くて、964文字?以内にしなさいと怒られるくらい長いのを分割しています。 このバグは既知のものでしょうか?それとも、私のミスかな…
883 :
名無しさん@そうだ選挙にいこう :2010/01/11(月) 11:45:27
884 :
883 :2010/01/11(月) 11:46:23
先ほどのイメージは以下の通りです。 1.元データ Id1 Id2 Data 1 A あ 1 B い 1 C う 2 A え 2 B お 2.更新用データ Id1 Id2 Data 1 B か 3 A き 3 B く 3.反映後 Id1 Id2 Data 1 A あ 1 B か 1 C う 2 A え 2 B お 3 A き 3 B く よろしくご指導ください。
885 :
名無しさん@そうだ選挙にいこう :2010/01/11(月) 14:13:31
Accessで質問があります。 ----------------------------- A B C 番号 品名 価格 01 りんご 400 02 みかん 500 03 バナナ 300 04 ぶどう 200 ----------------------------- Excel上では上記の表をあらかじめ別シートなどに作成しておき、vlookup関数を利用してA列の番号を入力すると、 B列とC列の値が自動で入力される設定が出来るかと思います。 質問内容はこれをAccess上のフォーム(若しくはテーブル)などでできる設定は出来ますでしょうか? 上記の表を例に挙げますと、 「Access上でA列の番号を入力すると、(プルダウンメニューで選べるようにしたい)B列とC列の情報もテキストボックスに自動で入力されるようにしたい」 つまり、AccessでExcelのvlookupみたいな事をしたいのです。 宜しくお願いいたします。
886 :
885 :2010/01/11(月) 14:38:26
↑ 言い忘れました。 OS:WindowsXP バージョン:Office2003 宜しくお願いします。
887 :
名無しさん@そうだ選挙にいこう :2010/01/11(月) 17:39:28
【 システム環境 . 】 WindowsXP, Access2000 【 VBAが使えるか .】 エクセルのVBAしか使ったことありません。 【 VBAでの回答 】 可 整数型のデータで特定のBitが1であるデータをSelectしたいのですが、 うまくいきません。 今のところ、Excelにコピーして、エクセルVBAでBit演算して該当レコードを 探しています。 直接、Bit演算してSelectする方法はないのでしょうか。
>>883 リンク先の内容はMySQLだからな、そりゃうまくいかんことあるべ
キーがひとつならうまくできたんか?
>>885 できるよ。つーか、フォームの基本レベルのことだべ
Dlookupとかができるなんとか本によく出てると思う。
>>887 VBA使えるんなら、ユーザ定義関数作ってクエリに使えばいいんじゃね?
889 :
883 :2010/01/11(月) 20:20:40
SQLだからいけると思ったが、確かにそれはそうかも、 ググッてたらいいくつかヒットしたからまぁできるのだろうぐらいで、 キー1つは試してないです。試してきます。 引き続きキー2つでのINSERT & UPDATEの方法を お教えください。
Access2010 表形式で入力中に、新規行が画面上見える状態でESC押してアンドゥすると、フォーカス失う
質問です。VBAで自分のMDB内にあるテーブルのフィールドサイズを取得できますか? (テーブルがSQL ServerとかORACLEだったらできるっぽいけど・・・)
>>883 、
>>889 SQLを更新と新規追加に分けて2回実行したらいいです。
まず更新(条件はキーが一致するレコード)、次に新規追加(条件は存在しないレコード)。
順番は逆でもOKだけど更新が先の方がいいです。
>>891 ADOX/DAOについて調べてみなはれ
>>894 できますよ。
見た目は工夫次第
実装は努力次第
>>895 ありがとうございます。
これと全く同じようなのが作りたいのですが
難しそうですね・・・
897 :
891 :2010/01/18(月) 10:17:55
>>893 あざっす、ググり方が甘かったです。
調べたところADODB.Recordset.Fields(フィールド名).DefinedSize()で取得できました!(なぜかADO)
アクセス規制でお礼が遅くなってすみません。
898 :
名無しさん@そうだ選挙にいこう :2010/01/20(水) 11:27:32
零細企業です 今はエクセルで請求書作成から人件費・試算表作成まで行っているのですが フアイル数が多くなってきたために管理が煩雑になってきました そこでデータベースソフトの購入を考えているのですが、OOoとaccessはどちらがいいでしょうか
そういう目的なら、桐が良いです
900 :
名無しさん@そうだ選挙にいこう :2010/01/20(水) 12:01:45
>>899 ありがとうございます。
ですが予算オーバーと言われましたorz
とりあえず体験版ためしてみます
ふと気になりました。 データベースサーバにインストールされているSQL Serverのテーブルを読み取り専用で クライアントPCのACCESS MDBにリンクテーブルを作りたい場合、どのような方法がいいですか? 現在はWindows認証でSQL Serverに接続しています。 SQL Serverの設定でユーザに参照権限しか与えないのが手っ取り早いかなと考えてます。 リンクテーブルを作るとき、読み取り専用で作れたりしますか?
>>901 権限管理するのはSQLServerだから、できるんじゃね?
参照だけならSQL Server Reporting Servicesでいいと思うがな。
>>901 ドメインコントローラー側でSqlReadOnlyグループみたいなユーザーグループを作って
各ユーザーをそのグループに所属させた上で、SQLサーバーにそのグループに対する
アクセス制限を設定する感じだったような記憶が・・・違ったらすまん。
904 :
名無しさん@そうだ選挙にいこう :2010/01/24(日) 21:26:08
【 システム環境 . 】 WindowsXP, Access2003 【 VBAが使えるか .】 可 【 VBAでの回答 】 可 質問です。 メインフォームにAとBの2つのサブフォームを貼り付け、メインフォームを開いたときに AのOpenEvent→BのOpenEventの順で動くのですが、これを制御して順番を変えることは 可能でしょうか? よろしくお願いします。
貼りつける順番逆にして作ったら?
906 :
904 :2010/01/24(日) 21:38:07
ぁぁ貼り付けた順番で決まるのですかwww tabindexとか座標位置とかかと思いました。 やってみます。
907 :
904 :2010/01/24(日) 21:47:47
やってみました。 上手くいきました。 ありがとうございます。
908 :
名無しさん@そうだ選挙にいこう :2010/01/25(月) 10:49:45
【 システム環境 . 】 WindowsXP, Access2007 【 VBAが使えるか .】 いいえ 【 VBAでの回答 】 否 【 検索キーワード 】 クエリ 結果 レポート ユニオンクエリ 名前 種類 価格 りんご 果物 \50 みかん 果物 \10 ズボン 衣類 \700 はくさい 野菜 \80 いちご 果物 \10 にんじん 野菜 \50 ごぼう 野菜 \80 みかん 果物 \10 きゃべつ 野菜 \100 上記のようなデータがあり 以下のようなレポートを作りたいのですが上手くいきません。 -------------------------------------------------------------- 果物計80円 野菜計310円 衣類計 700円 合計 1,090円 -------------------------------------------------------------- 果物を集計したクエリ 野菜を集計したクエリ 衣類を集計したクエリ を作りレポートでレコードソースの選択を各クエリにして 値を表示させればいいかと思っていましたが 各計の値がエラーとなってしまいます。 初歩的なこととは思うのですがご教授いただけますよう宜しくお願い致します。
909 :
901 :2010/01/25(月) 10:51:05
>>908 どこでエラーが出てるかが分からんと答えにくいよ、クエリ?レポート?
911 :
908 :2010/01/25(月) 11:20:31
>>910 様
申し訳ございません。レポートでエラーになります。
各クエリはグループ化と合計で表示したい数値が出ています。
レポートデザインでテキストボックスを作り
コントロールソースを式ビルダで=Sum([クエリ名]![種類の合計]) と指定していますが
#エラー と表示されております。
913 :
908 :2010/01/25(月) 14:15:35
>>912 様
早急に回答ありがとうございました。
参照URLの通りやりましたら望みの結果がでました。
大変感謝です。本当にありがとうございました!┏○ペコ
テーブル:作品(作品ID, 作品名) テーブル:ジャンル(ジャンルID, ジャンル名) テーブル:作品のジャンル(作品ID, ジャンルID) ジャンル:ホラー ジャンル:コメディ とある場合、 ホラーでコメディな作品を抽出するSQL文が作れません。 ホラーかコメディなら分かるんですが・・・。
>>914 作品と作品のジャンルが1対多なんだよな。
サブクエリ使ってジャンルが'ホラー'の作品の中からジャンルが'コメディー'の
作品を抽出する、もしくはカウント使って抽出する。
select tbl作品.作品名
from (tbl作品のジャンル inner join tblジャンル on tbl作品のジャンル.ジャンルID = tblジャンル.ジャンルID) inner join tbl作品 ON tbl作品のジャンル.作品ID = tbl作品.作品ID
where tblジャンル.ジャンル名 = 'ホラー' or tblジャンル.ジャンル名 = 'コメディー'
group by tbl作品.作品名
having count(tbl作品のジャンル.ジャンルID) = 2
確認してないから動くかどうかわからん。
もっとエレガントなやり方ねぇかしら
>>914 select 作品名
from (((作品 t1
inner join 作品のジャンル t2 on t1.作品ID = t2.作品ID)
inner join ジャンル t3 on t2.ジャンルID = t3.ジャンルID)
inner join 作品のジャンル t4 on t1.作品ID = t4.作品ID)
inner join ジャンル t5 on t4.ジャンルID = t5.ジャンルID
where t3.ジャンル名 = 'ホラー' and t5.ジャンル名 = 'コメディ'
select 作品名
from 作品 t1, 作品のジャンル t2, ジャンル t3, 作品のジャンル t4, ジャンル t5
where
t1.作品ID = t2.作品ID and t2.ジャンルID = t3.ジャンルID and t3.ジャンル名 = 'ホラー' and
t2.作品ID = t4.作品ID and t4.ジャンルID = t5.ジャンルID and t5.ジャンル名 = 'コメディ'
select 作品名
from 作品 t1
where
exists (select * from 作品のジャンル t2 inner join ジャンル t3 on t2.ジャンルID = t3.ジャンルID
where t1.作品ID = t2.作品ID and t3.ジャンル名 = 'ホラー') and
exists (select * from 作品のジャンル t4 inner join ジャンル t5 on t4.ジャンルID = t5.ジャンルID
where t1.作品ID = t4.作品ID and t5.ジャンル名 = 'コメディ')
どれでも。
917 :
914 :2010/01/26(火) 21:10:24
>>915-916 レスありがとうございます。
>>915 さんのは抽出できませんでした。
>>916 さんのは3つとも抽出できました。
複雑ですねぇ、INNER JOIN・・・。
私も色々調べて、
SELECT 作品.* FROM 作品
WHERE
作品.作品ID In (SELECT 作品ID FROM 作品のジャンル WHERE ジャンルID=1)
And
作品.作品ID In (SELECT 作品ID FROM 作品のジャンル WHERE ジャンルID=2);
という記述で抽出できました。
でも処理効率は悪いと思います。全レコードを対象に2回検索してるような気がする。
>>915 さんの言うように
ホラーで絞り込んでコメディで絞り込んで・・・というのが
レアなジャンルから絞り込んでいけば、効率良さそうですよね。
一応作ってみたんですが、
SQL文見てすぐあきらめました。
複雑すぎてVBAで生成する気が起きません。
料理のデータベースとかで指定した材料の料理を探す、とか
使い道は有りそうなんで覚えなきゃいけないんでしょうけど・・・。
もっと簡単にできると思ってました。
>>917 こんな書き方もできるよ。
select 作品名
from 作品 t1
where
not exists (select * from ジャンル t2 where t2.ジャンル名 in ('ホラー', 'コメディ') and
not exists (select * from 作品のジャンル t3 where t1.作品ID = t3.作品ID and t2.ジャンルID = t3.ジャンルID))
>>917 作品のジャンルは2回(andまたはor検索する回数だけ)検索しにいくけど、
対象を作品IDで絞れば全件は検索しないで済むさ。
920 :
名無しさん@そうだ選挙にいこう :2010/01/27(水) 09:30:14
【 システム環境 . 】 Vista, Access2007 【 VBAが使えるか .】 いいえ 【 VBAでの回答 】 できればなしでお願いします クエリでこういったことがやりたいのですが根本的なところを勘違い しているのかうまくいきません。 1 ○○ 月曜 1 ○○ 火曜 2 ×× 月曜 3 △△ 火曜 4 □□ 水曜 ↓ 1 ○○ 月曜、火曜 2 ×× 月曜 3 △△ 火曜 4 □□ 水曜 ようは3列目を複数値フィールド化?して1列目をユニークにし、 最終的にCSV出力したいということなのですが…何卒ご教授ください。
【 システム環境 . 】 WindowsXP, Access 97
【 VBAが使えるか .】 いいえ
【 VBAでの回答 】 否
No 品名 地域 パターン(AかBか)
001 林檎 青森 A
002 蜜柑 東京 A
003 林檎 東京 B
004 梨 埼玉 A
005 梨 東京 B
005 蜜柑 千葉 B
006 林檎 青森 B
このようにテーブルに入力していて、今まではクロス集計クエリで
行見出しに品名、列見出しに地域で、商品の地域ごとの個数を集計して出していました。
しかしパターンが新しく加わることになって、地域のパターンも分けなくてはならなくなり、
http://www1.uploda.tv/v/uptv0056813.gif こんな感じで集計しないといけないんですがうまくいきません。
クロス集計でこういう風にするにはどうしたらいいんでしょうか?
>>921 列見出しのフィールドを、[地域] & [パターン] で文字列結合すればいいんじゃね?
97で確認取れねぇから、まぁ試してみて
>>920 再帰で似た感じまでできるんだろうけど、
関数定義した方がいいような気がするなぁ。
【 システム環境 . 】 xp, Access2002 【 VBAが使えるか .】 いいえ 【 VBAでの回答 】 なしでお願いします 【 目的 】出勤簿の作成 今までエクセルで出勤簿の作成を行っていましたが、なぜか急にアクセス導入を提案され、いきなりやることに… 簡単な伝票程度しか作成したことが無いので困っております。お力添えをよろしくお願いいたします。 とりあえず、作りたいものはフォームで所属コードを入力をすると 所属コード 社員番号 社員名 ○/○の出勤状況 01 0000 ○山○広 出勤 01 0000 ○山○広 休 01 0000 ○木○美 代休 01 0000 ○田○男 出勤 01 0000 ○山○子 出勤 このような一覧が、一日ずつレポートで出せるようにしたいのですが可能でしょうか? よろしくお願いいたします。
>>922 ありがとうございます。
ほかに、パターンがAだった時のみ数を集計したい時はどうすればいいんでしょうか。
パターンにBと入っていたらクロス集計から外すとかも出来ますか?
演算結果を表示するテキストボックスが起動直後だけエラーになるのは フィールド名を参照するオブジェクトを明示してないからかな エラーになるならなるで別にいいんだけど、日によってエラーになったり 普通に表示されたりするのはなんだか気持ち悪いね
927 :
922 :2010/01/27(水) 18:02:17
>>925 集計クエリにパターンのフィールドがなかったら追加、Where条件にして抽出条件入れるんだからねっ!
自習もしっかりなさい。プンプン
>>924 実現したいことは間違いなくできます。ウィザード使うだけでもできるレベルだから、まぁがんばれ。
テーブルは2つ以上になるですよ。
フォーム上のtextboxの開始日と終了日をbetweenで繋いでフィルタに反映させています。(VBAにて) 開始日をtext1、終了日をtext2とした場合に質問です。 開始日のみ入力、または終了日のみ入力した場合に○○以前、○○以降というような形でフィルタに反映させるにはどうすればいいでしょうか。 ご教授願います。
access2000を使用しています。 一つのクエリで、同じフィールドから2つデータの個数をカウントしたいんですが、無理でしょうか? フィールドに不良品か良品かを入力しているんですが、 不良品の数と良品の数、両方を集計として出したいんです。 それをさらにクロス集計で商品別の不良品の数と良品の数とで表にしたいと思っています。
>>929 質問のなかに答えが出てる気がするけど、何がわからんのだろうか
開始日が空欄だったら100/1/1、終了日が空欄だったら9999/12/13を代入するのもいいんじゃね?
>>929 テキストボックスが入力されているかどうかで
between、=>、=< を使い分ける
どうしてもbetweenだけにしたいなら
>>931 のように代入
>>930 カウントしたいフィールドを良品用と不良品用で2つクエリに登録する
>931,932 なるほど!シンプルに書きたいので代入案を使わせていただきます。 ありがとうございました!
935 :
名無しさん@そうだ選挙にいこう :2010/01/31(日) 16:08:06
access2007 でクエリに主キーインデクスできない? access2007 でクエリテーブルにデータ定義クエリで create index インデクス名 on クエリテーブル名(フィールド) with primary; とすると “リンクされているデータソースに対してデータ定義ステートメントを実行することはできません” とのことで、クエリにインデクスできません。なんででしょう? 要は、クエリで連結されたファイルを、seekを利用して高速に検索したいのです。 その方法はどのようにすればいいのでしょうか? クエリファイルはインデクスできないのでしゅうか?
レールガンで我慢しろ。
>>935 エラーメッセージの通り、CREATE INDEX ステートメントはテーブルに対して
行うものだから、リンクされているデータソース(外部テーブルやクエリ)には実行不可。
高速に検索したければ元テーブルのインデックスを見直す必要がある。
ただ、どうしてもseekでシーケンシャル検索しなければならない場合は少ないので
速度を優先したければランダムアクセスで検索できないか検討するのも手かな・・・と。
ACCESS2000です。 VBAでレポートを閉じるのをキャンセルできますか? フォームはUnloadイベントの引数Cancelに 0以外をセットしたらできますが、 レポートにはUnloadイベントが無いのでどうしたらいいものかと。
>>938 できないんじゃないか…?
閉じるボタン無効にしてフォームで開閉させるってのなら
できそうだが
レポートの罫線って普通はどうやって引くの?
テキストボックスの枠を使うのが楽でいいが、 Lineの方が融通が効く。
>>941 > Lineの方が融通が効く。
ありがと
罫線だらけの帳票が大好きなら桐にしとく これはマジレスな
桐は高いねん
945 :
938 :2010/02/03(水) 09:26:44
>>945 レポートを閉じるのをキャンセルってどういう状況なの?
947 :
945 :2010/02/05(金) 15:09:59
>>946 誤操作で閉じるのを防ぎたいんです。
フォームからレポートをプレビュー表示中にEscキーを押したときや×ボタン押したときです。
Report.Unloadイベントつかってるんだぜ。 2007だけど。
949 :
947 :2010/02/05(金) 17:23:23
>>948 バージョンが古いからそのイベント無いっすorz
【 システム環境 . 】 WindowsXP, Access2003 【 VBAが使えるか .】 はい 【 VBAでの回答 】 いいえ スペース埋めの処理を追加クエリで行うため、クエリのフィールドに以下のように 記述していますが上手くいきません。 Left([旧テーブルのデータ] & Space(新規テーブルのフィールドサイズ),新規テーブルのフィールドサイズ) 「新規テーブルのフィールドサイズ」はクエリで取得可能でしょうか。 よろしくお願いします。
>>950 関数ないから無理じゃね?
関数定義してテーブルオブジェクトから取得がよいかと。
VBAでの回答を希望してないんだったな。
フィールドプロパティをひとつひとつ開いて確認してください。
952 :
950 :2010/02/05(金) 23:20:33
2003で作ったデータベースを2007ランタイムしか入ってない別のPCで開きたいのですが、 OFFICランタイムの薄青い初期画面?のままで何も表示されません。 ランタイムで使用するには何か特殊なことをしないといけないのでしょうか? 今はただmdbをコピペして移動しただけなのですが。
>>954 そうなんだ。もっと作りこんだ形で持ってこないと駄目ってことか。ありがとう。
>>955 2007持ってないからわからんが
2003形式のファイルを2007に変換すればいいのではないか?
おれぜんぜん違う話してる?
>>955 オレはマクロのautoexecで対応したよ
データシートフォームの項目名いわゆるカラムヘッダーの色は指定できますか?
あれこれ装飾を施したいならデータシートは用途に合ってない
【 システム環境 . 】 Windows7pro, Access2007 【 VBAが使えるか .】 いいえ 【 VBAでの回答 】 可 【 検索キーワード 】 access2002ランタイム access2007 併用 ご存知でしたら教えてください。 仕事でaccess2002ランタイムを利用するソフトを使っています。 最近access2007を勉強したいと思っているのですが、 access2007を起動する度、エラーが出てofficeの設定が書き換えられます。 時間もかかるし、SSDを使っていることもあって、毎回書き換えられるのがちょっと不安です。 かと言って、access2007用のwindowsログインIDを使うのも気がひけます。 access2002ランタイムを利用するソフトとaccess2007を共存させる良い方法はありますでしょうか。 どうかよろしくお願いします。
ヒント Virtual PC
>>961 レスありがとうございます。
やっぱりそういった手が妥当なんですね。
2chブラウザを使うときXP modeを使っています。
ソフトをそちらにインストールし直さなくてはいけないので、
できれば仮想PC等ではなく、同PCの同OS上(言い方正しいでしょうか?)で使えればありがたいのですが…。
2002ランタイムを利用するソフトというのは2007では走らんの?
964 :
960 :2010/02/08(月) 18:46:06
>>963 走らないみたいです。
ついでに「access2002以外のバージョンと併用すると何か起こるよ」
的なことがHPに書いてあった気がします。
質問です。 Excelのデータをテーブルに取り込んで そのテーブルのデータを追加クエリで他のテーブルに移しているのですが 追加クエリを使うと前のデータの並びではなく順番が狂ってしまいます。 前のデータの並び順で追加したいのですが、方法はありますか? 追加するテーブルはいじれないのでオートナンバーとかができません。
「他のテーブル」とやらには行番号があるのか? あるんならVBAで順番に追加しな。
>>966 他のテーブル(メインとします)には
番号などはなく、セルを読み込んだデータを順に入れているのみになります。
>>967 じゃあ無理。
Accessは順番なんて覚えちゃくれないよ。
しかしこの質問も定期的に来るな・・・
>>968 なるほど、了解しました。
SQLかADOでINSERTする場合もそうなってしまうのでしょうか?
>>970 INSERTする場合だけじゃなくって、いつ何処で順番が変わるかわからない。
だから番号でも振れ。
>>971 なるほど、ありがとうございます。
了解しました!
レポートで明細行を印字する時に用紙に10行印字するとして、 実データが10件ない場合は罫線のみの空白行を出したいとします。 me.nextrecordsetで制御する方法をしたら、プレビューでは正しく見えているのに、 実際に出力すると、ページ数がかなり多くなってしまいます。 何故でしょうか?
上記追加。OSはXP。Access2002使用です。 レポート開く時にjをDcountで総行数を数えています。 レポート詳細でVBAでiを現在の行としてカウント。gyoを頁ごとの行としてカウントしています。 サンプルと同じようにしているつもりなのに、どうしておかしいのかさっぱりわかりません。
そのカキコを分析してサンプルとの違いを推測しています・・・ しばらくお待ちください・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
自己解決しました。 開く時ではなく、レポートヘッダーでカウントしたらいけました。 正直理屈はわかりませんが。。
977 :
名無しさん@そうだ選挙にいこう :2010/02/09(火) 19:12:55
978 :
名無しさん@そうだ選挙にいこう :2010/02/10(水) 00:47:20
暫時埋めて行く方向で
相談です。Access97使用しています。 テーブルA ID(オートナンバー) 月日 名前 作成数 1 2009/5/1 鈴木 2000 2 2009/5/1 田中 3000 3 2009/5/2 斉藤 1500 4 2009/5/4 本田 4000 5 2009/5/9 中島 2500 6 2009/6/3 田中 1500 テーブルB ID(オートナンバー) 月日 名前 不良数 1 2009/5/3 鈴木 2 2 2009/5/7 中島 3 3 2009/5/8 斉藤 1 テーブルAは月ごとの個人別の作成数を記録し、テーブルBは月ごとの個人別の不良数を記録しています。 これをクエリで5月のみを抽出してそれぞれ2つ表を作りました。
981 :
980 :2010/02/10(水) 17:04:44
2つの表を一緒に表示したいので「名前」のフィールドをリレーションシップで繋いだのですが、 名前 作成数 不良数 鈴木 2000 2 斉藤 1500 3 中島 2500 1 このように「不良数」が入力されている人しか表に表示されなくて困っています。 「'テーブルA'の全レコードと'テーブルB'の同じ結合フィールドのレコードだけを含める」 を選択すると「あいまいな外部結合が含まれているので、SQLステートメントを実行できません。」 とエラーになってしまいました。 名前 作成数 不良数 鈴木 2000 2 田中 3000 0 斉藤 1500 3 本田 4000 0 中島 2500 1 このように不良数が入っていない場合も名前が表示されるにはどうしたらいいんでしょうか?
どんなSQLを書いたのか見せておくれよ
>>980 テーブルBをオートナンバーにした時点で設計ミスじゃないか?
本来なら社員番号等のユニークキーをテーブルAに持たせて、
それでリレーすればいいわけだが。
そうすればあとは外部結合すればいいだけだったんじゃない?
それでもテーブルBに名前がなければNULLになるだろうから、
どうしても0を表示したければ、一工夫必要だろうけど。
ちょっと書いてみたけどこんな感じでどうかな? select a.名前,a.作成数,val(format([b.不良数],"0")) as 不良の数 from テーブルA as a left join テーブルB as b on a.名前=b.名前 order by a.id
五月だけか。where文を入れ忘れたな select a.名前,a.作成数,val(format([b.不良数],"0")) as 不良の数 from テーブルA as a left join テーブルB as b on a.名前=b.名前 where a.月日 between #2009/5/1# and #2009/5/31# order by a.id
>>981 集計クエリと結合は出来ないんじゃなかったっけ?
サブクエリにすれば出来ると思うが