Microsoft Access Club Access超初心者対象Forum Access初級者対象Forum Access初・中級者対象Forum Access VBA Tips Forum DAO、ADO、SQL Forum

     

リストへもどる

投稿記事の一括表示

タイトルadpで構築に関して
記事No10788
投稿日: 2011/05/17(Tue) 10:05
投稿者iku
解決済: ON
OS:WindowsXP Pro
Access Version:2003

こんにちわ、このたび初めてadpでの構築を行っております。
(mdbでの構築経験はそこそこあります)
以下のような処理を作りたいのですが、mdbの際と違いどうすれば良いか困っております。

@フォームを帳票フォームにて、ソースにを一時テーブルを指定し一時テーブルに直接入力する。
A次処理として、別フォームを開いて別処理を行う。
B最終処理として、@での一時テーブルのデータと本テーブルのデータをリンクし更新、追加処理を行う。
  (ストアドを利用)
このような処理です。
mdbの時は単純に一時テーブルをローカルDBに作れば良かったので悩む事は無かったのですが、
adpではそうはいきませんでした。
自分で考えた方法としては
 ・#の一時テーブルを利用する。→フォームが変更されるため、利用出来ない。
 ・##のグローバルな一時テーブルを利用する。→詳細に記憶してないのですが、ストアドで##は参照できない?
 ・オブジェクト変数にデータを格納する。→データは変数内に格納されたが、フォーム上には空白で表示された。行は増えていた。

つたない説明で理解していただけたかわかりませんが、ようは
一時テーブルを入力用として使用し、一時テーブルの内容を用いて更新、追加の処理がしたいのです。
(入力フォームは変更されたり、閉じたりするが最終的な処理画面で処理可能とする)

良い案があればご指導願います。

タイトルRe: adpで構築に関して
記事No10790
投稿日: 2011/05/17(Tue) 12:13
投稿者カリメロ
解決済: ON
私がよくやるのは、ワークテーブルとして使用する普通のテーブルを作成し、
そのテーブルの主キーにユーザを識別する情報を含めます。

こうすれば、複数のユーザでひとつのテーブルをワークテーブルとして共用できます。

大前提として、システムがユーザを識別できることが必要になります。


> OS:WindowsXP Pro
> Access Version:2003
>
> こんにちわ、このたび初めてadpでの構築を行っております。
> (mdbでの構築経験はそこそこあります)
> 以下のような処理を作りたいのですが、mdbの際と違いどうすれば良いか困っております。
>
> @フォームを帳票フォームにて、ソースにを一時テーブルを指定し一時テーブルに直接入力する。
> A次処理として、別フォームを開いて別処理を行う。
> B最終処理として、@での一時テーブルのデータと本テーブルのデータをリンクし更新、追加処理を行う。
>   (ストアドを利用)
> このような処理です。
> mdbの時は単純に一時テーブルをローカルDBに作れば良かったので悩む事は無かったのですが、
> adpではそうはいきませんでした。
> 自分で考えた方法としては
>  ・#の一時テーブルを利用する。→フォームが変更されるため、利用出来ない。
>  ・##のグローバルな一時テーブルを利用する。→詳細に記憶してないのですが、ストアドで##は参照できない?
>  ・オブジェクト変数にデータを格納する。→データは変数内に格納されたが、フォーム上には空白で表示された。行は増えていた。
>
> つたない説明で理解していただけたかわかりませんが、ようは
> 一時テーブルを入力用として使用し、一時テーブルの内容を用いて更新、追加の処理がしたいのです。
> (入力フォームは変更されたり、閉じたりするが最終的な処理画面で処理可能とする)
>
> 良い案があればご指導願います。

タイトルRe^2: adpで構築に関して
記事No10791
投稿日: 2011/05/17(Tue) 13:21
投稿者iku
解決済: ON
カリメロさん、ありがとうございます。
やはりその方法になりますか、私も現状それでやっているのですが、ちょっと困るかも知れないことがありまして・・・
一時テーブル(ワークテーブル)にあらかじめマスタからデータを追加し、
そのデータ内から1件1件選択すると言う処理です。
ですから、100件のデータがあれば100回選択することもあり得ると思います。
SQLServerで構築するときは出来るだけサーバーとの通信を減らすことと思っていますが、
この場合選択する度に通信が発生すると思います。

このような処理でもパフォーマンスに大きな影響は無いのでしょうか?

今までの経験上でなにか参考にさせていただけることがあれば教えてください。





> 私がよくやるのは、ワークテーブルとして使用する普通のテーブルを作成し、
> そのテーブルの主キーにユーザを識別する情報を含めます。
>
> こうすれば、複数のユーザでひとつのテーブルをワークテーブルとして共用できます。
>
> 大前提として、システムがユーザを識別できることが必要になります。
>
>
> > OS:WindowsXP Pro
> > Access Version:2003
> >
> > こんにちわ、このたび初めてadpでの構築を行っております。
> > (mdbでの構築経験はそこそこあります)
> > 以下のような処理を作りたいのですが、mdbの際と違いどうすれば良いか困っております。
> >
> > @フォームを帳票フォームにて、ソースにを一時テーブルを指定し一時テーブルに直接入力する。
> > A次処理として、別フォームを開いて別処理を行う。
> > B最終処理として、@での一時テーブルのデータと本テーブルのデータをリンクし更新、追加処理を行う。
> >   (ストアドを利用)
> > このような処理です。
> > mdbの時は単純に一時テーブルをローカルDBに作れば良かったので悩む事は無かったのですが、
> > adpではそうはいきませんでした。
> > 自分で考えた方法としては
> >  ・#の一時テーブルを利用する。→フォームが変更されるため、利用出来ない。
> >  ・##のグローバルな一時テーブルを利用する。→詳細に記憶してないのですが、ストアドで##は参照できない?
> >  ・オブジェクト変数にデータを格納する。→データは変数内に格納されたが、フォーム上には空白で表示された。行は増えていた。
> >
> > つたない説明で理解していただけたかわかりませんが、ようは
> > 一時テーブルを入力用として使用し、一時テーブルの内容を用いて更新、追加の処理がしたいのです。
> > (入力フォームは変更されたり、閉じたりするが最終的な処理画面で処理可能とする)
> >
> > 良い案があればご指導願います。

タイトルRe^3: adpで構築に関して
記事No10792
投稿日: 2011/05/17(Tue) 14:35
投稿者カリメロ
解決済: ON
うーん、あんまり力になれないかも。。。

私がこの方法を使っているシチュエーションは以下の通りです。
イメージの方向性が合っているか確認して下さい。

例えば、請求書を作成する際に、
@において、未請求の伝票を検索します。
検索結果のレコードの左端には選択用のチェックボックスがあり、
ワークテーブルの選択フラグと連結しています。
もちろん、複数の伝票をひとつの請求書にまとめることができます。

請求する伝票にチェックを入力し、[請求書作成画面へ]のボタンを押すと、
次の画面(Aに相当)が開きます。

Aで請求書の作成に必要な情報を入力して、
[請求書作成]ボタンを押すと、請求データの作成等を行います。(Bに相当)

どうでしょうか?方向性は合っていましたか?


> ですから、100件のデータがあれば100回選択することもあり得ると思います。
> SQLServerで構築するときは出来るだけサーバーとの通信を減らすことと思っていますが、
> この場合選択する度に通信が発生すると思います。
>
> このような処理でもパフォーマンスに大きな影響は無いのでしょうか?

100枚の伝票を1件1件選択する、というシチュエーションは
業務上発生しづらいので、テストしてみないと分からないですね。

ただ、100件の検索結果の中から
10件程度の選択を繰り返すことで問題が発生したことはないです。

ある行にチェックを入力してから、
別の行にチェックを入力するのに、少し待たなければならない、
という事もありません。
(もちろん、チェックボックスやフォームの更新後処理では何も行っていない場合です。)


選択の際の1行の情報量がそんなに多くないのなら、
リストボックスを使う、というのはどうでしょうか?

代替案として思い浮かぶのは、リストボックスくらいですね。

あまりお力になれず、すいません。


> カリメロさん、ありがとうございます。
> やはりその方法になりますか、私も現状それでやっているのですが、ちょっと困るかも知れないことがありまして・・・
> 一時テーブル(ワークテーブル)にあらかじめマスタからデータを追加し、
> そのデータ内から1件1件選択すると言う処理です。
> ですから、100件のデータがあれば100回選択することもあり得ると思います。
> SQLServerで構築するときは出来るだけサーバーとの通信を減らすことと思っていますが、
> この場合選択する度に通信が発生すると思います。
>
> このような処理でもパフォーマンスに大きな影響は無いのでしょうか?
>
> 今までの経験上でなにか参考にさせていただけることがあれば教えてください。

タイトルRe^4: adpで構築に関して
記事No10794
投稿日: 2011/05/18(Wed) 13:12
投稿者iku
解決済: ON
カリメロさんご丁寧にありがとうございます。
方向性はまさにその通りです!
運用できているという実体験をいただき、方向性が見えました!
パフォーマンスが発揮できなくても、その他が原因として作業が出来ます!

抽象的な質問に親身のご回答ありがとうございました!
また、よろしくお願いいたします。

タイトルRe: adpで構築に関して
記事No10795
投稿日: 2011/05/19(Thu) 09:52
投稿者スナフキン
解決済: ON
>  ・#の一時テーブルを利用する。→フォームが変更されるため、利用出来ない。

↑最終的な処理を考えるとこれは無理だと思います。

>  ・##のグローバルな一時テーブルを利用する。→詳細に記憶してないのですが、ストアドで##は参照できない?

そんなことはありません。

CREATE PROCEDURE GrTblCreate
AS
BEGIN
	SET NOCOUNT ON;

CREATE TABLE ##GrTbl(
	[Number] int NOT NULL,
	[Name] char(5) NULL,
)

Insert into ##GrTbl SELECT 1,'abcd'


END
GO

でグローバルテーブルを作れば、Select * From ##GrTbl で参照できるはずです。
当然ストアド内でも可能です。

実際のやり方はおまかせしますが...
では!

タイトルRe^2: adpで構築に関して
記事No10801
投稿日: 2011/05/24(Tue) 09:58
投稿者iku
解決済: ON
スナフキンさんありがとうございます。
やはり#では無理なのですね、はっきりすることが出来、助かります。
##も可能なのですね。
どういうエラーだったのか失念したので、もう一度やってみます。

この度はありがとうございました。またなにかあればお願いします。

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No パスワード

ページの先頭へ 前ページへ戻る