• 締切済み

サブレンジ分割されたNDB(富士通)のアクセス方法を教えてください。

NDBが良くわかりません。 マニュアルで手がかりを探していますが、うまくいかないのでご存知の方がいらっしゃったら、教えてください。 ある規則性にしたがってN個にサブレンジ分割されたNDBがあります。サブレンジごとに10多重で処理を行いたいのですが、この場合のコーディングと基本的な考え方を教えてください。 1)サブレンジ分割の定義をしたNDBに対し、多重なしで全件読みは可能なのでしょうか? 2)サブレンジごとの処理を行いたい場合のコーディングはどのように行えばよいでしょうか? ○第1階層のレコードを1件読む。 この場合は GET FIRST ’レコード名’になるはずですが、このコーディングだけで、第1階層の最初のレコードをアクセスできるんでしょうか? 10個にサブレンジ分割していますが、どのサブレンジかはどうやって決まるのでしょう・・・・? ○第2階層を読む。 この場合は GET NEXT ’第2階層レコード名’ WITHIN ’SET名’ で良いのでしょうか? この時点で、  GET NEXT ’第2階層レコード名’ WITHIN ’サブレンジ名’ SUBRANGE というアクセス方法があるようなのですが、なにが違うのでしょう・・・? どうかよろしくお願いします。

みんなの回答

回答No.1

SEに聞いたり、富士通のDBMS開発を行っている事業所に、問い合わせることはできないのでしょうか? NDBを使用した経験はありませんが、マルチベンダーでのシステム開発やリプレース案件で、NDBについて少し調べたことがあります。 (1)アクセスするサブレンジを限定せず、検索条件を指定しなければ、全件検索になると思います。 →排他制御の単位をサブレンジ(?)といった大きなものにしておかないと、性能上、問題になります。 (2)サブレンジを明示指定する、方式だったように思います。 >GET FIRST ’レコード名’ >このコーディングだけで、第1階層の最初のレコードをアクセスできるんでしょうか? 最初のレコードが検索できます。 最初のレコードとは、キー順に格納するタイプなら、 最小(or最大)キー値を持つレコードです。 ハッシュで格納先を決めるタイプなら、物理的に先頭に配置されたレコードです。 >10個にサブレンジ分割していますが、どのサブレンジかはどうやって決まるのでしょう・・・・? サブレンジへの分割条件は、 分割キー値<=100・・・サブレンジA 100<分割キー値<=200・・・サブレンジB 200<分割キー値<=300・・・サブレンジC といった感じで定義されていませんか? (1)キー順で格納するタイプ  検索条件がなくても、インデクスで格納先が分かる (2)ハッシュで位置決めするタイプ  検索条件がないと物理順検索になるので、先頭のサブレンジからサーチしていく 親子検索を行う場合は、WITHINで親子集合名(セット名)を指定してください。 親子集合名の指定がないと、子レコードを親子集合に関係なく、独立のレコードとして検索することになります。 >GET NEXT ’第2階層レコード名’ WITHIN ’サブレンジ名’ SUBRANGE というアクセス方法があるようなのですが、なにが違うのでしょう・・・? マニュアル等で、第2階層レコードに対して指定するようになっていましたか? WITHINのサブレンジ指定は、特定のサブレンジのみを検索対象にする場合の指定方法だと思われます。 通常、第1階層のレコードに、指定するのではないでしょうか?

0209masami0209
質問者

補足

いつも優しく教えていただきありがとうございます。 もう何年も前に本番稼動しそのままになっていたシステムを年明けから変更しなければならないのですが、当時の開発に携わったメンバーは異動となっており、現行メンバーだけではうまく回らなくなっているのが現状です。 来月月末以降富士通さんにも参加していただくのですが、それまでの間に、テスト的にいろいろ試し、問題点を出そうとしているところです。ですが、思うような結果が得られていないため、今回質問させていただいております。 もしお分かりになる箇所がありましたら、本当に申し訳ないのですが、もう少し、お付き合いいただけたらと思います。よろしくお願いいたします。 (1)についてですが、アクセスするサブレンジを限定せず、、、、、とありましたが、この場合のサブレンジの限定とはプログラム上のことでしょうか? たとえば全件読みの処理を、サブレンジ限定で行う場合(n多重で行う)と、サブレンジに関係なく全件読みを行う場合の違いはプログラム上のコーディングで決まるのでしょうか? また、サブレンジ分割の件ですが、確かに10個に分割されていて、ご指摘のようにどのキーがどのサブレンジに格納されるかの定義がありました。この場合、単純にSTORE(書き出し)すると、システムで定義したサブレンジの場所に格納してくれるのでしょうか? などなど、質問が初心者で申し訳ありませんが、どうぞよろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ホスト汎用機でのNDBアクセス方法

    NDBのアクセス方法がわかりません。ご存知の方、教えていただけますか? 第1階層にkey項目を設定してアクセスする方法は GET ANY ‘第1階層レコード名’ では、メンバーレコードを続けてN件読みたいときはどうすればよいですか? GET NEXT ’第2階層レコード名’ だと思うのですが、このあとに続くものが何なのかよくわかりません。お分かりの方よろしくお願いいたします。

  • Access レコードを分割する方法

    早速ですが、質問させてください。 Accessでフォームから以下のようなテーブル1へ入力できるようにしています。 テーブル1のフィールド 検体名(文字型)、試験1(YES/NO型)、試験2(YES/NO型)、試験3(YES/NO型) 以下のようなレコードがあるとき、レコードを分割する方法をご教授いただけないでしょうか。 テーブル1 検体名1、1、0、1 検体名2、1、1、1 検体名3、0、0、1 分割後 検体名1、1、0、0 検体名1、0、0、1 検体名2、1、0、0 検体名2、0、1、0 検体名2、0、0、1 検体名3、0、0、1 目的としては必要試験毎に検体名と試験名が記載された小さいラベルを作りたいと考えています。 それらのラベルを1枚のラベル台紙にまとめて印刷できるようなレポートを作るため、試験毎 かつ ラベルの必要枚数分にレコードを分割したいと考えています。 何卒、よろしくお願いいたします。

  • Select時に取得行番号を指定する方法って・・

    Select文の時、大量データを処理する場合(java)、レコードセットクラスのnextメソッドでレコードを取得していますが、取得レコードが大量になるとnextメソッド内でヒープサイズがオーバーし、例外が発生してしまいます。なのでトランザクションを複数回にわけて発行し、全件処理したいのですが、Select時に例えば1件~1000件目まで取得とか、1001件から2000件まで取得とかって可能でしょうか?ちなみにDBはDB2を使用しています。

  • ACCESSデーターベースの分割

    OS: Windows 2000 version: Access 2003 ACCESSでデーターベースを構築し運用していますが、破損が頻繁に起こり、 全員がいったんデーターベースを閉じ修復を行うまで、新しいユーザーがデーターベースを開けなくなってしまいます。 現在、ユーザーは5名ほどです。 過去の質問を読んでいますととにかくテーブル側とフォーム側に mdbファイルを分割せよとの皆さんおっしゃっておられますので試したところ、処理速度が格段に遅くなってしまいます。 一つのフォームを開くのに15秒以上かかることもあります。 このような問題はみなさんどうやって解決されているのでしょうか? 

  • accessレポートの抽出条件

    こんにちわ。 いまaccess2000で, フォームからレポートを出力する処理をしています。 そのレポートは[コントロールソース]としてあるクエリを設定しています。 そこで, DoCmd.OpenReport "r_帳票", acPreview, , "[番号] = 'a100'" とコーディングしました。 なおレポートの[フィルタ]プロパティは"はい"にしています。 ところが,出力されたレポートには条件で抽出されずに 全件が出力されてしまいました。 抽出条件を効かせるためにはどうすれば良いでしょうか? 教えてください。お願いします。

  • Accessサブフォームのレコード移動

    Accessにおいて、サブフォームのレコードの移動方法をどなたか教えてもらえませんか。「Forms![メインフォーム名]![サブフォーム名].Form.SetFocus DoCmd.GoToRecord acDataForm, "サブフォーム名", acNext」とコーディングしたのですがダメでした。よろしくお願い致します。

  • Access2000で変数が初期化されないようにする

    フォームを開く際にインプットボックスで担当者名を入れて変数に格納、そのフォームにおけるレコードの登録ごとに、その担当者名をあるテーブルのあるフィールドに毎回入れようとしているのですが、1レコード目はいいのですが、2レコード目以降は変数が初期化されてしまうらしくエラーが出ます。そのような場合に静的変数?を使ったような気がするのですが、どのようにコーディングするのでしょうか?どなたか教えて下さい。よろしくお願いします。

  • アクセス フィールド値を分割したい

    いつも大変お世話になっております。 初心者につき、ご教示いただけますと幸いです。 アクセスのテーブル・フィールドに AAAA,BBBB,CCCC という値が入ってしまうため 「,」を区切りに分割したいです。 テーブル:T_商品 フィールド: 顧客ID|注文内容(連結で入ってしまうフィールド) 0001|AAAA 0002|AAAA,BBBB 0010|AAAA,BBBB,CCCC 0101|AAAA,BBBB,CCCC,DDDD,・・・ といったように、連結した値の数はまちまちで、 最大10個になります。 ちなみに、 これを ↓フィールド名 顧客ID|注文商品   に 0001|AAAA 0002|AAAA 0002|BBBB 0010|AAAA 0010|BBBB 0010|CCCC  ・  ・  ・ といったように、 最終的には 1つのフィールドにまとめたいです。 ご教示のほど、よろしくお願い致します。 尚、前半の「連結値を分割」だけでも テーブル更新(分割毎にフィールドに挿入)できれば、とても助かります! →この場合、予備フィールドなどを作成しておくか、  ワークテーブルなどで処理になりますでしょうか。 是非とも、よろしくお願い致します。

  • レコードの分割処理

    お世話になります 現在、レコード長70000バイト (50000-70000バイトの不定長) のテキストファイルがあります この長さだと他のソフト(エクセルなど)で 処理が不可の場合が多いということもありますので レコード長を分割して5000バイトぐらいにして 最大14レコードを作成したいと思います vb6ランタイムはあるのですが プログラムの作成とその起動処理がわかりません お手数ですがよろしくお願い致します それと、そのようなことができるフリーソフトが あればよろしくお願い致します WINDOWS98SEです

  • 一対一のテーブル分割(ACCESS2003)

    ACCESS2003にて、フィールド数が上限の255、レコード数がおよそ1万件の商品マスタテーブルを作ったとします。入力必須フィールドは主キーである商品ID、あと商品名ぐらいで、あとは商品によって入力したりしなかったりするフィールドで、テーブルを開くと空欄が非常に多く目立ついわゆるスカスカの状態になっているとします。そこで商品マスタテーブルを数個に分割(商品の価格情報、商品の品質情報等々)し、商品IDを主キーにもたせ一対一の外部結合でつなげて、密度の濃い(?)テーブルを複数作ったほうが、ファイルサイズの縮小やクエリ等のパフォーマンス向上にメリットがあるのでしょうか?(一対一の結合はあまり使用しないのが一般的なようですが、このような場合使用すべきでしょうか?)教えて頂きたくお願いいたします。

MG7530印刷できない
このQ&Aのポイント
  • PCからLAN経由で通信できず、MG7530プリンターが印刷できない状況になっています。
  • プリンターの電源ボタンは点灯しているが、OFFにすることもできず、表示窓には何も表示されません。
  • ドライバーの再インストールも試しましたが、解決できない状態です。
回答を見る