エクセルはある程度操作ができるようになりました。現在、アクセスを勉強していますがアクセスがエクセルより優れている点が今一つ実感できません。そこで、アクセス派の方に質問です。
「この点は、アクセスの方が絶対優れているよ。」という使用例がありましたら教えてください。使わないと忘れてしまいますし、どんどん利用していきたいものですからよろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

Excel(に代表される表計算ソフト)とAccess(に代表されるデータベースソフト)の違いを一言で言うと,



「同一のものを同一のものとして識別できるかどうか」

ということになるかと思います。

 これだけじゃわかりにくいと思いますので,例を挙げてみます。

 例えば「職場連絡先一覧」という表と,「プロジェクト進行度管理」という表と,「プロジェクト予算管理」という表があったときに,「職場連絡先一覧」表に載っている山田太郎さんは,「プロジェクト進行管理」表のプロジェクトAとBの担当として記されている山田(太)さんと同じ人物である,あるいは「プロジェクト進行管理」表のプロジェクトAというのは「プロジェクト予算管理」表のproject-Aと同じものである,ということを,データベースソフトは意識することができるのです。

 ですから,例えば「プロジェクト予算管理」表からproject-Aを検索し,それを使って「プロジェクト進行管理」表から現在の担当者である山田(太)さんを検索し,さらにそれを使って「職場連絡先一覧」表から山田太郎さんの連絡先を(複数)取り出し,同時に「スケジュール管理」表から山田太郎さんが今日は出張であるという検索結果を得て,その結果プロジェクトAの現在の進行状況に対する問い合わせを山田太郎さんの携帯電話に対して行う,という様な処理を自動化できるようになるわけです。

 これが表計算ソフトだと,例えば「プロジェクト進行管理」表の山田(太)さんと「職場連絡先一覧」表の山田太郎さんが,同一人物なのか似た名前の別人なのかを,確実に弁別することは非常に困難です。

 もちろん,すごく手間をかければ表計算ソフトでも同様のことはできますが,上記のように複数の表を連携させる処理を行う場合,例えば同姓同名の人がいることを想定してプログラムを書かなければいけないなど,データベースソフトに比べるとどうしても処理が煩雑になります。

 また,なにをどれくらい同一のものとして扱うのかということも,データベースソフトでは細かく制御できます。例えば,「鉛筆」を単に「ボールペン」と区別できればいいのか,それとも「三菱の鉛筆」と「トンボの鉛筆」を区別したいのか,それとも「1月20日に納品された三菱の鉛筆」と「2月8日に納品された三菱の鉛筆」を区別したいのかに応じて,その識別の粒度を変えることも,データベースソフトなら可能になります。

 もちろん,こうしたデータベースの能力を活用するためには,十分注意を払ってデータベースを設計する必要があり,したがって事前の準備にかかるコストは表計算ソフトより大きくなります。

 ですから「同一のものを同一のものとして識別する」必要があるような,柔軟で複雑な処理を頻繁に行う場合はデータベースソフトを,単にあるデータを表として整理するだけのシンプルな用途には表計算ソフトを,というように使い分けるものではないかと思います。
    • good
    • 29

元々、出自の違うカテゴリのソフトだけに優れているかどうかという比較自体があまり意味が無いとは思いますが・・・。


あえて、比較するなら使用する場面の問題でしょうね。
表計算とデータベース。
これが、全てを表していると思います。
マトリクス化されたデータを何がしかの式を使って計算するというのが、Excel(というか表計算)の本来の仕事です。
式をセルに埋め込んでおく事によって、データが変わっても、勝手に再計算してくれる。
これは、データ構造があまり複雑でない場合には、非常に有効に機能します。

データベースの場合で同じ事をやろうとすると、かえって手順が複雑になるばかりか、入力用インターフェース・出力用インターフェース等を作るのが非常に面倒になったりします。
データベースの良い点はいくつかあります。
複数の密接に関連するが、管理は別々にしたいようなデータを別々に作成し、簡単に連携したデータを作れる事です。非常に項目数の多いテーブルから、行う処理に必要な項目だけを取り出して、リストにしたり、関連する複数のテーブルから、やはり必要な項目のみを取り出す事も簡単にできます。
極論すれば、まさにこのデータの取り出し(検索と言ってもいい)こそが、リレーショナルデータベースの最大の利点です。
Accessでいうクエリー、データベース一般の用語ではビューといいますが、これを一つ作るとテーブルを新たに作らなくても、テーブルのようにデータを扱えるわけです。

Excelで複数のシートをデータベースの変わりに作り、それらを連携する形で新たなデータの見せ方をするというのは、できない事も無いでしょうが、非常に面倒な作業になるでしょう。

もう一つは、扱えるデータ量(件数)の限界です。
Excelは、縦に約65000、横に600弱程度のデータしか扱えません。
データベースの限界はもっともっと先です。

例えば、営業でも物流でも顧客のデータは必要でしょう。
しかし、営業部と物流部が別々にデータを管理していた場合、顧客に関するデータを同じ社内で二重管理される事になり、無駄が多くなり、データの管理コストも増えます。
しかし、顧客マスタと言う形で共通して管理していれば、そのデータのみをきちんと管理していれば、問題ありません。また、例えば広報部が現在の顧客あてに何か案内を出したいと思ったら、同じデータベースから顧客データを引っ張って来れるわけですよね。
また、特定の顧客に対する今期の売上が知りたい等の要件にも、恐らく別にあるであろう営業の成績管理データベースと、顧客マスタのデータをもとにサクッと引っ張って来れるわけです。

ちょっと、話が大きすぎたかもしれませんが、Accessといわず、データベースとはそんな風に使ってこそ利点が見えます。
単なる台帳で終わる用件なら、Excelの方がはるかに効率的です。
私は、この両者の使い分けは次のような判断を元にしています。
つまり、データの再利用性です。
汎用性を持ったデータ構造を考えておけば、後でいろいろ便利そうだと思うと、Accessに入れます。
その場だけのデータ(例えばある顧客向けの見積もりとかですね)そういった物は、迷わずExcelです。
部下が増えて、勤務表の管理が辛くなった時に、それまでExcelに入力させてた物を、タイムカードアプリをAccessとASPで作成し、その中に部下のメンバマスタ(人事マスタもどきですね)も作ったら、月次の勤怠のレポートは楽になったし、他の要件でもそのマスタが役にたちました。

とまあ、なんだか脈絡なかったでしょうか。
参考になれば幸いです。
    • good
    • 10

Visual Basic(VB)やACCESSでプログラムを組んでいるものです。

一応ACCESS派としておきましょう。
初期のころのACCESSでは、画面入力系のプログラムは使いものになりませんでした。また、ちょっと凝ったものを作ろうとするとACCESSのメリットであるノンプログラミングでシステム構築ができずVBAでゴリゴリ書かなくてはなりませんでした。そんな訳でACCESS嫌いだったのですがどうしても一つだけ捨て難い面があり今でも使用している次第です。それはレポート機能です。以前は、VBでレポートのプログラムを作成するのは非常にやっかいで、それをビジュアルインターフェースで簡単に作成できるACCESSで作成していました。そういう事があり今でもレポートはACCESSを使っています。(今は、VBでもよいツールが出てきてますが...)
それともう一つデータベースを使うならACCESSは便利です。今、ORACLEというデータベースを使って仕事をしていますが、データのチェック用にACCESSのクエリーを使っています。テーブルの項目を選択して条件を設定するだけで必要なデータが、EXCELのリストのように表示、参照できこれは重宝しています。SQL文も自動生成してくれます。(使い方を誤るととんでもない複雑怪奇なものができる場合もありますが...)

私の場合、EXCELはあまり使用したことが無いのでEXCELよりも優れている点についてよくわかりませんが、複数の関係するソースデータを扱う場合は、ACCESSは優れているかと思います。これを足がかりにデータベース、SQLについて学ぶのもいいかなと思います。ACCESSはちょっととっつきにくいですが、テーブル、クエリー、フォーム、レポート、マクロ、モジュール等の関係がわかってくるとおもしろくなると思います。あまり参考にならないと思いますがちょっと書いてみました。
    • good
    • 6

公務員じゃないすけど



大概の仕事ではエクセルとアクセスってのは
やることが違うんで(2つをからめてってのもありますが…)

でも公務員でも人のデータを記憶して行くなら
アクセスなんかだと入力フォームをつくって、記入して
みたいなことできますよ☆

あとは、普通の使い方では
エクセルで入力→アクセスにて読み込み
なんてのできますし、まぁ別物と考えていただければ♪
    • good
    • 3

エクセルとアクセス


http://oshiete1.goo.ne.jp/kotaeru.php3?q=221839
アクセスについて
http://oshiete1.goo.ne.jp/kotaeru.php3?q=210885
アクセスの使い道
http://oshiete1.goo.ne.jp/kotaeru.php3?q=198653
等ここの質問検索で『エクセル アクセス』で検索すると沢山出てきます。

ここからは、私の意見
 在庫管理などのデータベースを使用する物をアクセスに軍配が上がります

参考になれば幸いです
    • good
    • 5
この回答へのお礼

早速、回答いただきましてありがとうございました。
十分な、質問検索してなくて「教えてgoo」ユーザーの方々申し訳ありません。(反省)
仕事がら在庫管理はありません。できれば、公務員関係の仕事で使っている方に利用例を教えていただくと有難いのですが。

お礼日時:2002/03/15 17:46

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QACCESS2003のデータアクセスページの使い方について

イントラ内でACCESS2003のデータアクセスページを使いたい。

1.ACCESS2003のデータアクセスページを作成しました。
2.そのMDBファイルと、データアクセスページ(htmファイル)を、WINDOWS2000ServerのInetpub内のwwwrootフォルダの中へ入れました。
3.ここにはイントラ内のHPなどを置いています。(普通に見れています。)
4.クライアントから、データアクセスページのhtmファイルを見に行くと「データソースログオン」が立ち上がります。(パスワードを設定しています。)
5.パスワードを入れるとデータアクセスページ(htm)から、通常のアクセスのフォームのごとくデータ入力が出来る予定なのですが(泣)できません。(泣)

で、悩んでおります。

ACCESS2003のMDBファイルとデータアクセスページ(HTMファイル)をサーバーのwwwrootへ置いただけでは、データアクセスページを通してmdbファイルへの入出力は不可能なのでしょうか?

Aベストアンサー

MDBに接続されたAccessプロジェクトを開いている場合データアクセスページは自動的にそのデータベースに接続されてそのパスがデータアクセスページのConnectionString プロパティに設定されます。
ページを作成した後でデータベースを移動またはコピーした場合はConnectionString プロパティに設定されているパスを更新して新しい保管場所を設定する必要がありますがどうなっていますか?
そこを確認してみてください。

Qアクセスのデータをエクセルで参照したい

100万件程のデータを扱いたいのですが、エクセルでは行数が限られており(65000件)無理なので、アクセスにデータベースを置き、エクセルからそのアクセスを参照する方法はないでしょうか?関数などありますか?LOOKUPやMATCHなどの作業がしたいのです。

Aベストアンサー

> 関数などありますか?
ユーザー定義関数を自作するしかないと思います。

> LOOKUPやMATCHなどの作業がしたいのです。
ということなら、Excelではなく、Accessのクエリを使った方がいいような気がしますけど (^^ゞ

Qホームページ移転に伴う.htaccessの使い方ですがアップロードして

ホームページ移転に伴う.htaccessの使い方ですがアップロードして削除できなくなる事ないですか??また、さくらサーバーは.htaccess使えますか??

Aベストアンサー

.htaccessだけではなく、
ファイルはパーミッションによっては一旦削除できなくなると思いますよ・・・
使えないのにアップすると削除出来ないとか。

>さくらサーバーは.htaccess使えますか??
使えます。
.htaccessを使えない有料サーバってあるのでしょうか?・・・

QエクセルVBAでアクセスデータベースを抽出して読み込む方法

エクセルVBAでアクセスデータベースを抽出して読み込む方法

アクセスで見積の提出情報のデータベースを作成しています。
このデータベースをエクセルのフォームで日付指定し抽出したいと考えております。

データベースの全てを読み込む事には成功したのですが、
いざフォームを作成し日付を入力。
実行したのですが、日付の構文エラーとなってしまいました。
抽出条件を表すSQLステートメントがおかしいのかもしれません。
どこを訂正したらよいのでしょうか?

Private Sub CommandButton1_Click()
 Dim rcs As ADODB.Recordset
 Dim cnStr As String, sqlStr As String
 Dim sday As Date

 sday = TextBox1.Text

'一覧のクリア、始点へ移動
 Range("A5:N300").Select
 Selection.ClearContents
 Range("A5").Select
'データベースの保存場所
 cnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Accexl\見積予定.mdb"
'検索条件
 sqlStr = " SELECT * FROM 予定表 WHERE 作成日 = # sday #"
'データベースの読込、コピー、閉じる
 Set rcs = New ADODB.Recordset
 rcs.Open Source:=sqlStr, ActiveConnection:=cnStr, CursorType:=adOpenStatic

 ActiveCell.CopyFromRecordset rcs

 rcs.Close

 Set rcs = Nothing

  Range("C:C,E:E").Select
  Selection.NumberFormatLocal = "h:mm;@"
  Range("B:B,D:D").Select
  Selection.NumberFormatLocal = "m/d;@"

 Range("A3").Activate

End Sub

フォームの中にテキストボックス(日付を入力)、コマンドボタン(検索実行)を配置しています。
テキストボックスには日付表示するようにしています。

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim ret As Long
  ret = 0
  If KeyCode = vbKeyReturn Or KeyCode = vbKeyTab Then
    With TextBox1
      .Text = Replace(.Text, "/", "")
      If IsNumeric(.Text) Then
       If IsDate(Format(.Text, "0000""/""00""/""00")) Then
        .Text = Format(.Text, "0000""/""00""/""00")
        Else
         ret = 1
        End If
      Else
       ret = 1
      End If
     If ret = 1 Then
      MsgBox "日付指定です"
      KeyCode = 0
    End If
    End With
   End If
End Sub

エクセルVBAでアクセスデータベースを抽出して読み込む方法

アクセスで見積の提出情報のデータベースを作成しています。
このデータベースをエクセルのフォームで日付指定し抽出したいと考えております。

データベースの全てを読み込む事には成功したのですが、
いざフォームを作成し日付を入力。
実行したのですが、日付の構文エラーとなってしまいました。
抽出条件を表すSQLステートメントがおかしいのかもしれません。
どこを訂正したらよいのでしょうか?

Private Sub CommandButton1_Click()
 Dim rcs A...続きを読む

Aベストアンサー

以下でどうですか。

sqlStr = " SELECT * FROM 予定表 WHERE 作成日 = #" & sday & "#"

QAccessで作成したテーブルのOLEオブジェクトの使い方

Accessで作成したテーブルにデータ型(OLEオブジェクト型)で画像を取り込みできるようにしました。
取り込みした画像を開くためのフォームを作成して画像を開けるようにしました。
下記の内容です。

Private Sub Form_Open(Cancel As Integer)
Form.Caption = ProgName
End Sub

しかし「ビットマップ形式」ですと問題なく開くのですが、「JPG形式」ですと開けないのです。取り込みしたAccessテーブルのフィールドから直接だとひらけます。
Accessで作成したフォームから、「JPG形式」の画像を開くにはどうすればよろしいですか?
また、画像を1000件ほど取り込みすると大きいデータベースになってしまいます。Accessのデータベースのサイズは制限があるのかしら?
アドバイスいただけれは幸いです。

Aベストアンサー

Access のバージョンは?
んで Web で検索する努力はしましょうよ。
丸 1日ぐらい検索しっぱなしで悩まないと。

Google「access ole jpeg」で検索
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=access+ole+jpeg&num=50

Access 2003 では以下のような制限があるようです。
■ Access 2003 で OLE オブジェクトとして JPEG および GIF 画像を取り扱う場合の注意事項
http://support.microsoft.com/kb/884484/ja

■ OLE オブジェクト型のフィールドに格納されているイメージが正しく表示されません
http://support.microsoft.com/kb/832508/ja

解決策としては JPEG を開ける OLE コンテナになるアプリケーションをインストールしておく。

Google「Access データベース サイズ 制限」で検索
http://www.google.com/search?hl=ja&num=50&q=Access+%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9+%E3%82%B5%E3%82%A4%E3%82%BA+%E5%88%B6%E9%99%90&lr=lang_ja

Access のバージョンは?
んで Web で検索する努力はしましょうよ。
丸 1日ぐらい検索しっぱなしで悩まないと。

Google「access ole jpeg」で検索
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=access+ole+jpeg&num=50

Access 2003 では以下のような制限があるようです。
■ Access 2003 で OLE オブジェクトとして JPEG および GIF 画像を取り扱う場合の注意事項
http://support.microsoft.com/kb/884484/ja

■ OLE オブジェクト型のフィールドに格納されているイメージが正...続きを読む

Qアクセス2000とアクセス95の並存のつもりが…

初めまして,PC初心者です。
あるシステム(MSDEでできているとか)を導入するに当たってすでにAC95がインストールされているwin2000のPCに,AC2000を95と並存した形でインストールしなければならないところを誤って上書きしてしまいました。
慌ててアクセス95をインストールしましたが,何か不具合が起きてしまうのでしょうか。それより,最初から95,2000の順番に再インストールしたほうがよいのでしょうか。
インストール後にも何かの設定が必要になるのか,どなたか教えてください。
あと,MSDEとJETとかいう言葉の意味もわかりませんので,教えてください。

Aベストアンサー

Accessを単体でインストールするのであればホルダを別にすれば問題はないと思います。
Officeに組み込まれているAccessでしたら順にインストし直せばAccessの旧バージョンを残してインストできるはずです。
mdbなど起動する際はそのmdbにあったバージョンのAccessを最初に起動するか起動をかける記述が要ります。

QAccess2000でFTPの使い方について。

Access2000のフォームから、実行のボタンをクリックするとFTPサーバに接続→ファイル取得→Accessテーブルに取込→FTPサーバのファイル削除→FTPサーバの接続切断という処理をしたいのですがどのようにしたらよいかわかりません。説明不足だとは思いますが、アドバイスを宜しくお願い致します。

Aベストアンサー

ちなみに先ほどのFTPサンプルは、BASP21をインストール後、サンプルのコードを新規モジュールに貼り付けて(たとえば以下をまるごと)実行すればAccessでもそのまま動きます。

sub file_download()

Dim ftp As Object, rc As Long, v As Variant, v2 As Variant
Dim ctr As Long

Set ftp = CreateObject("basp21.FTP")
ftp.OpenLog "c:\temp\log.txt"
rc = ftp.Connect("ftp.microsoft.com", "anonymous", "")
If rc = 0 Then
v = ftp.GetDir("bussys/winnt/winnt-public", 2) ' ディレクトリ一覧(詳細)
If IsArray(v) Then
For Each v2 In v
Debug.Print v2
Next
End If
v = ftp.GetDir("bussys/winnt/winnt-public") ' ディレクトリ一覧(ファイル名のみ)
If IsArray(v) Then
For Each v2 In v
Debug.Print v2
Next
End If
rc = ftp.GetFile("bussys/winnt/winnt-public/*", "c:\temp") 'ファイル受信

end sub

実行には20秒ほどかかります。
実行前にはCドライブにtempというフォルダを作っておいてください。

ちなみに先ほどのFTPサンプルは、BASP21をインストール後、サンプルのコードを新規モジュールに貼り付けて(たとえば以下をまるごと)実行すればAccessでもそのまま動きます。

sub file_download()

Dim ftp As Object, rc As Long, v As Variant, v2 As Variant
Dim ctr As Long

Set ftp = CreateObject("basp21.FTP")
ftp.OpenLog "c:\temp\log.txt"
rc = ftp.Connect("ftp.microsoft.com", "anonymous", "")
If rc = 0 Then
v = ftp.GetDir("bussys/winnt/winnt-public", 2) ' ディレクトリ一...続きを読む

Qアクセス97のファイルをアクセス2007で開くには

はじめまして。

手元にAccess97で作成したmdbファイルがるのでが、Windows7環境のAccess2007で開くことができません。

エラーメッセージは、「オブジェクト 'テーブル1'が見つかれませんでした。オブジェクトが存在していること、名前やパス名が正しいことを確認してください。」となっています。

このファイルをAccess2007で開くためには、いったんAccess2000~Access2003で保存し直したうえで、Access2007で開く必要があるという情報をMSのページで見ました。

しかし私はAccess2000~Access2003環境を持っておりません。
そのような中で、このAccess97で作成したmdbファイルを開かなければならないのですが、何か方法はないでしょうか。
ご教示いただけると誠に幸いです。
どうぞよろしくお願いいたします。

Aベストアンサー

私も質問者さん同様、中間ファイルを作成してから・・と思っていましたが、
Windows Vista および Windows 7 で Access 97 ファイル形式のデータベースを Access 2007 または Access 2010 ファイル形式に変換できないことがある
http://support.microsoft.com/kb/942394/ja
↑のようにすれば一発変換ができました。

以下、手順。
(当方Windows7 64bit & Access2010 32bit 環境です。適宜、読み替えてください。)
(検証したファイルは唯一残っていたNorthWind.mdb です。)
Windowsのスタートボタンを押し、「Microsoft Access 2010 」を右クリック、
プロパティを選択し、互換性タブを選択、
「互換モードでこのプログラムを実行する」にチェックを入れ、
直下のプルダウンメニューから、「Windows XP(Service Pack 2)」を選択、
OKを押して閉じます。

Accessを今まで通り立ち上げて新規ファイルを作成します。
リボンの外部データタブから、Access を選択してウィザードに従って
全てのオブジェクト(テーブルやクエリ、フォームなど)を選択してインポートします。
途中でエラーが発生するかもしれませんが最後まで進めます。
そのまま修正作業に入りたいところですがぐっとこらえてAccessを終了し、
前述の互換モードのチェックを外します。

Accessを立ち上げて必要に応じてインポートしたファイルの細々とした修正作業を行います。
(ここからが大変かもしれません。)

なお、
Windows 7 上の Office 製品を Windows XP SP3 互換モードで実行し VBEditor を開くと、マクロの全角文字の一部が削除されコンパイル エラーが発生する
http://support.microsoft.com/kb/2297924/ja
というバグがありますので、互換モードはSP2を選択が無難です。
また、互換モード中であれば直接97形式のmdbを開く事も出来ました。
開く際に変換するかそのまま開くかの選択肢が現れます。

私も質問者さん同様、中間ファイルを作成してから・・と思っていましたが、
Windows Vista および Windows 7 で Access 97 ファイル形式のデータベースを Access 2007 または Access 2010 ファイル形式に変換できないことがある
http://support.microsoft.com/kb/942394/ja
↑のようにすれば一発変換ができました。

以下、手順。
(当方Windows7 64bit & Access2010 32bit 環境です。適宜、読み替えてください。)
(検証したファイルは唯一残っていたNorthWind.mdb です。)
Windowsのスタートボタンを押し、「Mi...続きを読む

QRuby on Rails 「attr_accessor」 の使い方に

Ruby on Rails 「attr_accessor」 の使い方について

こんにちは。

現在、Ruby on Railsで登録画面を作成しているのですが、attr_accessorで定義した項目に対して、validationのチェックを行うと、問題が起きてしまいました。

attr_accessorで定義した項目は、DB登録の対象ではないのですが、lengthのチェック等を行う必要があり、validates_length_of等を使って入力チェックを行っています。

問題になったのは、入力があったときだけチェックをかけたいのに、入力がなくてもチェックがかかってしまうという状態になってしまうことです。
「:if => 項目?」を書いてみると、「undefined method」のエラーがでてしまいます。

どなたか対応策の分かる方がおられましたらご教授いただけないでしょうか?

下記に実際の問題箇所のモデルクラスのソースを書いておきます。

 class User < ActiveRecord::Base

   attr_accessor :NEW_USER_PW ← 追加したアクセサ

   # 追加したアクセサに対するチェック
   validates_length_of :NEW_USER_PW, :minimum=>4, :message=>"は%d桁以上を設定してくださ            
    い。", :on => :update, :if => :NEW_USER_PW?

 end

上記のチェック内の「:if => :NEW_USER_PW?」で落ちてしまいます。
入力がないのにチェックに引っかかるとまずいので、入力がないときだけ上記チェックを行えれば良いのですが・・・。

どうぞ宜しくお願い致します。

Ruby on Rails 「attr_accessor」 の使い方について

こんにちは。

現在、Ruby on Railsで登録画面を作成しているのですが、attr_accessorで定義した項目に対して、validationのチェックを行うと、問題が起きてしまいました。

attr_accessorで定義した項目は、DB登録の対象ではないのですが、lengthのチェック等を行う必要があり、validates_length_of等を使って入力チェックを行っています。

問題になったのは、入力があったときだけチェックをかけたいのに、入力がなくてもチェックがかかってしまうという状...続きを読む

Aベストアンサー

attr_accessor :NEW_USER_PWを定義したからといって、
NEW_USER_PW?メソッドが定義されるわけではりません。
attr_accessorはゲッターとセッターメソッドを作るだけです。
それ以外の論理値を返すようなメソッドは自作しなければなりません。

NEW_USER_PW?メソッドを作成されていないのなら、「undefined method」が
出てしまうのは当然です。

質問にあるように、「入力があった場合のみ」とありますので、
NEW_USER_PW?メソッドを下記のように実装すればチェック可能です。

def NEW_USER_PW?
@NEW_USER_PW.size > 0
end

また、ifにはprocオブジェクトを渡すこともできますので、
:if => Proc.new{|u| u.NEW_USER_PW.size > 0}
と書いてもいいでしょう。


NEW_USER_PWというインスタンス変数はすべて大文字を使用されていますが、
見る人によっては定数と勘違いします。
変数であれば小文字表記を利用するほうが良いかもしれません。

attr_accessor :NEW_USER_PWを定義したからといって、
NEW_USER_PW?メソッドが定義されるわけではりません。
attr_accessorはゲッターとセッターメソッドを作るだけです。
それ以外の論理値を返すようなメソッドは自作しなければなりません。

NEW_USER_PW?メソッドを作成されていないのなら、「undefined method」が
出てしまうのは当然です。

質問にあるように、「入力があった場合のみ」とありますので、
NEW_USER_PW?メソッドを下記のように実装すればチェック可能です。

def NEW_USER_PW?
@NEW_USER_PW.s...続きを読む

Qアクセス97で作成したものは問題なくアクセス2003で動く?

アクセス97で作成したデータベースは、2003でも動くのでしょうか?
以前、アクセス2000でちょっと立ち上げてみた時に何らかのエラーで動かなかった記憶があります。
マクロやVBAなど一通り作りこんでいます。

変換ツール等あるのでしょうか?

Aベストアンサー

何もせずとも動く場合はあると思いますが、

> マクロやVBAなど一通り作りこんでいます。
だと、厳しいかな。

> 変換ツール等あるのでしょうか?
「ツール」⇒「データベースユーティリティ」⇒「データベースの変換」
を試してみてください。

そこでエラーになる場合なんかは、

[ACC2000] データベースの変換についての情報の入手先
http://support.microsoft.com/default.aspx?scid=kb;ja;208769

[ACC2000] 変換で問題が発生する場合のトラブルシューティングのヒント
http://support.microsoft.com/default.aspx?scid=kb;ja;208645

こちらを確認してください。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報