• ベストアンサー

アクセスのように

3つの項目を入力し、ファイルに保存していきます。 そして、入力フォーム上にそれまで入力したデータを 表示させ、修正などを行うことは可能でしょうか? アクセスのように1レコードごと参照でき、編集できるようにしたいのですが(とにかくPerlで)。 どうかよろしくお願いします。

  • jkkm
  • お礼率76% (16/21)
  • Perl
  • 回答数4
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • wolfwood
  • ベストアンサー率50% (199/398)
回答No.4

win2000でしたか・・・。 ランダムアクセスが出来ない以上、一度読み込んで連想配列に入れてからデータを指定して編集し、もう一度保存するという方法しかないかと思います。 windowsならアクセスそのものを使ってデータの保存をしてみてはいかがですか? ただし、実行速度としてどちらが速いかはデータ量によるかと思いますが・・・。 DB接続については下記URLを参考にしてください。

参考URL:
http://member.nifty.ne.jp/hippo2000/
jkkm
質問者

お礼

そうですか、やはり無理ですか。#3の方も同様に言われているやり方でやってみます。2日間にわたってありがとうございました。

その他の回答 (3)

  • duckling
  • ベストアンサー率47% (88/185)
回答No.3

> win2000上では無理なのでしょうか? と言っているのでいささか不安を感じますが、、 保存させる時は、# 2 の方が言ってらっしゃるように、 「行の指定」は出来ません。ピンポイント追加は不可能なわけです。 なので、 編集して送られたデータを一度、「整形して変数に格納」してから その「変数」を、ファイルに「上書き保存」という形でやるといいです。 ----------------------------- リンゴ,アップル,赤, みかん,オレンジ,青かな?, ----------------------------- ↑このデータに ----------------------------- リンゴ,アップル,赤, みかん,オレンジ,橙, ----------------------------- ↑これを上書きするという形ですね。

jkkm
質問者

お礼

なるほど、ファイルの中身を丸ごと入れ替えるわけですね。そういうやり方もあるんですね。ありがとうございました。

  • wolfwood
  • ベストアンサー率50% (199/398)
回答No.2

データの位置を指定してそれを読み書きができる入出力方法をランダムアクセスと言います。 アクセスを始めとしたデータベースはこの方式です。 通常のPerlのファイル入出力はシーケンシャル方式といって先頭から読み書きしたり、最後に追加したりは出来ますが位置の指定は出来ません。 テキストファイルの読み書きの場合、通常はシーケンシャルなので位置指定は出来ません。 UNIXには簡易データベースとしてDBMというものが用意されています(環境によって無い場合もある)。 これを利用すれば連想配列を利用したランダムアクセスが出来ます。 詳しくは下記URLを参考にしてください。

参考URL:
http://www.psl.ne.jp/perl/pdojo03.html
jkkm
質問者

補足

どうもありがとうございます。 そうなんですか。win2000上では無理なのでしょうか?

  • marimo_cx
  • ベストアンサー率25% (873/3452)
回答No.1

> 可能でしょうか? そんなに特殊なことではないのではないでしょうか? 問題はUIに何を使うのかというだけなんではないでしょうか。

関連するQ&A

  • Access2000トラブル テーブル閲覧不可

    Access2000でテーブルが開けなくなりました。 「レコードが削除されました」と出てきてデータシートビューでの編集・閲覧ができません。 デザインビューでは見れますが、特に問題無い様に思います。 フォームでは各入力項目に「Delete」が表示されています。 どうすれば良いかおしえてください。

  • Access2003 ~入力のみ可能なフォームを作成したい~

    Access2003 ~入力のみ可能なフォームを作成したい~ データ入力用のフォームを作っているのですが、テーブル上の既存のデータに対しても 編集が可能になっているので、これを出来ないようしたいのですが、どのように操作すればよいのでしょうか? 作りたいものは次のいずれかです。 (1)既存のデータは参照のみ可能で新規エントリー可能。 (2)既存のデータは表示させずに、完全に入力しかできないフォーム。 ●さらに入力後に、データを登録するかキャンセルするか を行うボタンを設定したい。 ※入力しただけではデータが保存されないようにしたい。 よろしくお願い致します。

  • Accessで条件の合うページにジャンプ

    MS-Access97を使用しています。 レコードに日付のデータを2、3日おきに入力したデータがあります。 フォームでこのデータを編集するときにクリックすると今日の日付の レコードを表示するボタンを作成したいにですがどうしたらよいですか?

  • アクセスのフォームで

    アクセスのフォームで、この様に、"品番"、"設備名"、"単価"、"担当者"のテーブル(1000レコードほどあります)のフォームがあります。 このフォームを開いた時には、1レコード目が表示されますが、下に一覧が全て表示(100以上は次のページ)され、検索フォームに品番、又は、設備名を入力すると、絞りこまれて表示される様にできますか? 又、下の一覧の担当者の右に"編集ボタン"を置きボタンを押すと、左のデータを編集できる様に(編集は上のフォームで行う)できますか? 説明がへたくそで申し訳ありませんが、誰か教えて頂けませんか? よろしくお願いします。

  • Access 検索した値を別フォームに

    Accessのシステムを会社で作ってます。 検索したIDをサブフォーム(データシート型) で表示したレコードを編集フォーム(別フォーム)に呼び出したいのですが上手く出来ません。 ネットでも検索しましたが良いのがありませんでした。 どなたか、お手数ですがコードを教えていただけないでしょうか? 何卒よろしくお願いします。 *adodbとDAOのどちらか使う必要があるならDAOを使用して作成したいです。 *クエリは使わずに作成したいです。 ○検索フォーム 検索ボタン ID入力テキスト 編集ボタン サブフォーム(データシート型) 編集ボタンを押すと ○編集フォーム 単帳型 *レコード項目 ID プロジェクト名 日付 モジュールNO

  • ACCESS新規レコードが追加出来なくなりました

    ACCESS2010初心者です。クエリから入力用のフォームを作りましたが、新規レコードの保存が出来なくなりました。※マーク有効、データ入力も可能、エラーメッセージなしですが、フォームを閉じて、開きなおすと新規レコードが消えている(保存されていない)といった状況です。フォームの元クエリも新規レコード保存なしですが、クエリの元デーブルのみ新規データがどんどん追加されています。原因と対策をご教授頂きたく宜しくお願い致します。

  • アクセス97

    データ入力フォームからデータ検索をして同フォームに表示させる。一部書き換えた後 新しいレコードとして登録したいのですがどうしても同じレコードが書き換わってしまいます 助けてください。 具体例: 登録フォーム”A”に入力項目がID(主キー、オートナンバー)会員番号、名前、購入品、 購入日時等があります。”A”フォームから会員番号で名前を抽出して他の項目内容を 新たに入力し、追加レコードとして登録したい。 ”A”フォームにデータ抽出は出来るのですがレコード内容の書き換えになってしまいます。 回答よろしくお願いします。

  • access2003のエラーについて!!

    access2003のエラーについて!! ACCESSでデータを入力中に突然テーブルのレコードが「レコード削除された」のメッセージが表示され、レコードが消えてしまいました。 また、フォームでは、レコードが表示されていないにもかかわらず、データが表示されます。 新規にレコードを作製しようとしても「レコードは削除されています」のメッセージが表示され、 作成できません。 この状態を、元に戻す方法はないでしょうか?

  • Access2010で、名簿を作って使っています

    Access2010で、名簿を作って使っているのですが。 Access2010で、名簿を作って使っているのですが、 普通の単票形式で、フォームを作って、そこで新規登録したり閲覧したりしています。 その人の顔写真を1データごとに1枚ずつ載せているのですが、 970件を超えたあたりで、いきなりファイルが壊れます。 先に写真以外のデータ(すべて文字)は入力を1000件以上しても、普通に動作しました。 最後に写真だけ貼る作業をしたのですが、970件を超えたあたりで必ず壊れるので、写真が関係あるのかなあ、と勝手に思いまして…。 症状としては、写真を貼って「次のレコード」の繰り返しで貼る作業をしていたのですが、 必ず970件を超えたあたりで「次のレコード」ボタンを押したときに「指定したレコードに移動できません。」と表示されます。 そうなると、もうレコードを移動できません。 仕方がないので閉じようとすると「データベース"を開くことができません。アプリケーションで認識できないデータベースであるか、またはファイルが破損しています。」と出て、 「このレコードを保存できません。」と出ます。 「はい」を押すと強制的に閉じれるのですが、もう一度そのファイルを開くと 「レコードは削除されています。」と出ます。 そしてフォームは開けません。 開こうとすると「レコードは削除されています。」と出ます。 一番メインのテーブルを開いて中を見てみると、 写真が貼れなくなった人(指定したレコードに移動できません。)と表示された時の人のデータが 全項目「#Deleted」になっています。 この症状に身に覚えがある方、 解決方法を知っていらっしゃる方、 おりましたらぜひ、ご教授ください…。 よろしくお願いします。

  • アクセスのフォームでデータ元をテーブルからクエリにかえたい

    上手く表現できるかどうかわからないのですが、頑張って書きます。少々長いです。 アクセスでフォームを使ってデータ入力しています。これは単純で、あるテーブルへのデータ入力をフォームを使ってやるだけのことです。このテーブルの中に「都道府県」というフィールドがあります。ある事情からこのフォームを使ってデータ入力(または修正)をするレコードは、「都道府県」のフィールドが「福岡県」のものだけでよくなりました。 そこで、「都道府県」に「福岡県」を持っているレコードだけを取り出すクエリを作ります。このクエリを元にして、同じフォームでデータ入力したいのです。入力項目は全く同じです。「福岡県」をもっているレコードだけが全く同じフォームで表示されるようにしたいのです。 もとのテーブル名を「全データ」とし、クエリを「福岡県抽出クエリ」と呼ぶとすると、どこかで「全データ」を「福岡県抽出クエリ」に書き換えればすべてのテキストボックスのデータ元が入れ替わってくれると思うのですが、それでいいのでしょうか。その場合、どうやったらいいのでしょう。 なぜ一からファームを作り直さないかというと、テキストボックスの大きさや配置を決めるのに膨大な労力を費やしていて、全部をやり直したくないからです。 どうかお願いします。ご指導ください。

専門家に質問してみよう