【先着1,000名様!】1,000円分をプレゼント!

小さな会社(製造業)でEXCELで事務から生産まで管理しております。
ですが将来的にはデータベースに移行しようと考えております。

その時に使うデータベースソフトは
MS-ACCESSにしようと思っているのですが、
偶然、以下のリンクの記事を見てやろうとしていることが

ACCESSで可能かどうか疑問を持つようになりました。

複数クライアントが同時にデータ登録できる
データベースアプリケーションソフト
https://oshiete.goo.ne.jp/qa/9689138.html?from=m …


MS-ACCESSに詳しい人、すいませんが以下の2点のことが
ACCESSで出来るのか(向いている)のか教えて下さい。

追記
今すぐというわけではないので、一般的に「よく使われている」とか
「他のデータベースソフトにした方がいい」というレベルでOKです。
詳しい方、説明の上手な方、よろしくお願いします。

1)複数のパソコンからデータベースにアクセスして同時にデータ入力をする

2)複数のパソコンからアクセスして同時にマクロを動かす

質問者からの補足コメント

  • うれしい

    素人の読み方ですいません。

    ご解答によると、数台なら入力端末(フロントエンド側)にある
    マクロを同時に動作させることも可能なんですよね?

    もしお手数でなければご解答を頂ければ嬉しいです。

    ※お手数でしたらスルーでOKです。
    ご解答ありがとうございました。

    No.2の回答に寄せられた補足コメントです。 補足日時:2017/04/08 14:37

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

A 回答 (5件)

それぞれの端末にあるAccessのマクロを、それぞれの端末で同時に実行するという意味だと思いますが、可能です。


データを置くサーバー・HD等にはマクロを作らず、端末にあるマクロをそれぞれで実行するということですね。
私の方では10人位の部署で使っていますが、不具合等発生したことはありません。
もちろん、作り方がおかしいと正しく動きませんが。
    • good
    • 1
この回答へのお礼

ご解答ありがとうございます。

>それぞれの端末にあるAccessのマクロを、それぞれの端末で同時に実行するという意味だと思いますが

その通りです。

>私の方では10人位の部署で使っていますが、不具合等発生したことはありません。

10台くらいまではいけるんですね。
端末3台から5台くらいまでの同時アクセスを考えていたので、
これくらいならMS-Accessでもいけそうですね。

あらためてご解答頂きありがとうございます。
機会がありましたら、またお願いします。

お礼日時:2017/04/08 16:23

Accessのフォーム画面で、1レコードの問い合わせ/更新処理を作り


データの読み込み・編集作業をしている間に、別の端末からマクロが
実行されてデータを別の値の変更を行い、その後に編集中のデータの
書き込みを行った場合、マクロで更新した値は上書きされて、元の値
または別の値に変わってしまう事があります。
その様な場合には予めテーブル単位またはレコード単位で、他からの
更新処理を制限する為のロック処理を、明示的に行う必要が有ります。
#一つのマクロの実行に長時間かかる場合も同様
それをせずに同時にアクセスして上手くいったと言うのは単なる偶然。
    • good
    • 0
この回答へのお礼

ご解答ありがとうございます。

まだ実務で使ってないので実感が湧きませんが
いろいろあるんですね。

ご解答ありがとうございます。機会がありましたらまたお願いします。

お礼日時:2017/04/08 16:57

可能です。


排他制御は アクセスで 行いますから無問題。

それと、レベルによりますが
アクセスのデータベース部分だけ利用して JETエンジン。
フロントは、VBによる コードの方が利用の幅が広がります。
ただ、これやると、フロントの自作ソフト EXEのインストール作業が必要となりこれが欠点。その分、アクセスは(JETエンジンは)1個で済む。
    • good
    • 1
この回答へのお礼

ご解答ありがとうございます。

とりあえず、No.3さんのお答え同様、
端末側でマクロを利用できるようで良かったです。

あとJETエンジンという言葉を初めて聞きましたが、
軽く検索したところ以下のサイトがヒットしました。
Jetデータベースエンジン
http://bit.ly/2oMDWxE

データベースの分野ではこんなのがあるんですね。

いろいろ教えて頂きありがとうございます。
機会がありましたらまたお願いします。

お礼日時:2017/04/08 16:54

サーバーまたはLANでつないだHD等にデータベースを置き、各端末側にもAccessを入れて入力することが可能です。



データベースのことをバックエンドと呼び、Accessではテーブルというものだけを置きます。これと各端末とをリンクで結びます。

入力端末に入れるAccessにはクエリ、フォームなどというものだけを置きます(リンクされたテーブルはありますが、実体はバックエンドにあります)。こちらはフロントエンドと呼ばれます。

PC数台程度の小規模ネットワークならこの方法が手軽です。

でも実は、この方法はAccessでは推奨されておらず、SQL Serverというソフトを使うことが推奨されています。台数が多く規模が大きい場合はその方がいいというより上記の方法に信頼性がなくなりますが、数台程度ならまずエラーなどは起きないと思います。
この回答への補足あり
    • good
    • 1
この回答へのお礼

ご解答ありがとうございます。

フロントエンド、バックエンドのお話ありがとうございます。

ローカル環境で少しだけですがACCESSで業務をしております。
なので、テーブル、クエリー、フォームは使っており、
ACCESSの中だけですがデータベースの概念はちょっとだけ実感しております。


>数台程度ならまずエラーなどは起きないと思います。

小さな会社なので、同時アクセスする端末は3台から5台程度です。
それを考えると微妙なところですね。

No.1さんの説明も読んだのですが、データベースの場合いろいろあるんですね。
参考になりました。

今回はご解答頂き、ありがとうございます。
機会がありましたらまたお願いします。

お礼日時:2017/04/08 14:23

>ACCESSで出来るのか(向いている)のか教えて下さい。


向いているかいないかといえば、向いていない方でしょう。

複数のパソコンから同じデータベースのデータにアクセスする為には、
データベースに何を使うかによらず、アプリケーション側でレコード
単位又はテーブル単位での排他処理が必須です。

ACCESSは、データベースアプリケーションを簡単に作成できますが、
もともとが個人用途なので、複数端末からの同時接続に対する対応は
弱く、多くの端末からの同時アクセスが予想される場合には、避けた
方が良いでしょう。
    • good
    • 1
この回答へのお礼

ご解答ありがとうございます。

>ACCESSは、データベースアプリケーションを簡単に作成できますが、
もともとが個人用途なので

リンク先にこのことが書いてあり、初めて知りました。

リンク先の解答では、FileMakerPROがおすすめだそうですが、
とにかくMS-ACCESSは向いてないんですね。

今回は、ご解答ありがとうございます。機会があればまたお願いします。

※他の方の意見も聞いてみたいので、しばらく質問は開けておきます。

お礼日時:2017/04/08 14:28

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

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

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

QVBAで書いてあることの意味を教えてください。

VBA初心者です。
仕事で簡単なシステムを引き継いだのですが
バックアップを押すとエラーが出るので修正
したいのですが今一つわかりません
バックアップのイベントプロシージャは下記
のとおりです。

Private Sub BackupSelect()
 Select case Right(CurrentProject.Name,3)
   Case "mdb","mde" 'Jet
    Call OpenOtherMdb("auBackupSys07",CurrrentProject.FullName)
  Case "adp","ade" 'SQLSV
Call Bakup_SQLSV
End Select
End Sub

ひとつひとつを調べていくと条件分岐にようなのですが
とりあえずは書いてある内容を教えてほしいです。

Aベストアンサー

自分自身のアクセスの種類をしらべて、mdb,mde なら、
OpenOtherMdbでなんかをして、
adp,adeなら、
Bakup_SQLSVでなんかをしている。

何をしているかは、それぞれの中身を見ないとはっきりとはわかりませんが、、、
雰囲気的に、自分自身のバックアップをとろうとしているような雰囲気があります。

余談ですが、2013でadpは廃止されたので、「だからアクセスは、、、」 
と呼ばれる理由がまた一つ増えましたね。

Q〖エクセル〗MOD関数で、小さな数字を大きな数字で割り算した場合が理解できません

GOOの皆様いつもありがとうございます。
例えば1を2で割り算した場合は、0.5ですが、
MODした場合、余りの数はなぜ1になるのですか?
簡単に説明して頂ける方はいらっしゃいますか・・・

Aベストアンサー

>補足
そのとおりですね。
その例で言えば、10を3で割った余りは1です。
では、余った1を3で割るとどうなりますか?
3で割れないから1余ったのですよね?
なら、余りは1のままです。
割られる数が割る数より小さい正の値であれば、商は0、余りは割られる数そのままです。

Q【EXCEL】ワークシートの名前を半角文字に変更したい

お世話になっております。

ワークシートの名前に半角に変換できる全角文字があれば
マクロの処理で半角に変換したいと思っております。

とりあえずシート名を取得して、
取得した文字列を半角に変換するところまで出来ました。
※以下のマクロです

ですが、半角に変更した文字列をシート名に反映する方法がわかりません。

すいませんが、詳しい方、説明の上手な方、
コードで説明出来る方、シート名の全角文字を半角文字に変更する方法を
教えて下さい。よろしくお願いします。

追記
下記のマクロはこちらの実力をわかって頂くために記載しただけです。
シート名の全角文字を半角文字に変換出来ればいいので、
こちらのコードを利用して変更しても、新規のコードでもOKです。

---------------------
Sub sample()

MsgBox Sheets(1).Name
wsn = Sheets(1).Name
Range("A1").Value = wsn
Range("A5").Value = StrConv(Range("A1").Value, vbNarrow) '全角文字を半角文字にする

'Sheets(2).Name = Range("A5").Value
'Sheets(2).Name = wsn
'Sheets(2).Name = "wsn"

End Sub

お世話になっております。

ワークシートの名前に半角に変換できる全角文字があれば
マクロの処理で半角に変換したいと思っております。

とりあえずシート名を取得して、
取得した文字列を半角に変換するところまで出来ました。
※以下のマクロです

ですが、半角に変更した文字列をシート名に反映する方法がわかりません。

すいませんが、詳しい方、説明の上手な方、
コードで説明出来る方、シート名の全角文字を半角文字に変更する方法を
教えて下さい。よろしくお願いします。

追記
下記のマ...続きを読む

Aベストアンサー

全シートのシート名を半角にする場合です。
---------------------------------------------
Public Sub 全シート半角変換()
Dim ws As Worksheet
For Each ws In Worksheets
ws.Name = StrConv(ws.Name, vbNarrow)
Next
End Sub


特定のシートのシート名を半角にする場合です。
「Sheet1」のシート名が実在しないとエラーになります。
---------------------------------------------
Public Sub 特定シート半角変換()
Dim ws As Worksheet
Dim sheetName As String
sheetName = "Sheet1"
Worksheets(sheetName).Name = StrConv(sheetName, vbNarrow)
End Sub

Qコーラって昔はビンで売ってたんですか? (今でもビンで出すお店とかあると思いますが)

コーラって昔はビンで売ってたんですか?

(今でもビンで出すお店とかあると思いますが)

Aベストアンサー

瓶でしたよ。
醤油、みりん、お酒、
食用油は缶とか
ペットボトルは、醤油メーカーで採用されてから普及し
コーラーも瓶、缶から今はペットボトルが主流ですね。

Q年月日の分離

年月日の分離
Excelで、2016/1/20 を年月日に分けて表示したく、
2016、1、20と表示させることできました。
しかし、データそのものは3つとも、2016/1/20のままです。
データを3つに分ける方法ありませんか。
値複写では、2016/1/20のままです。
left、mid、right関数は思いつきました。
しかし、これでは1桁、2桁ある月日の「場合分け」がありそうで面倒です。
確定申告の医療費の集計で、全件不可の通知があり、この問題と解釈しました。
なお、環境はWin10、Excel2013です。

Aベストアンサー

year,month,day,それぞれに関数をつけてググれば
いっぱい出ます。

Qマクロのコピー&ペーストの繰り返し

マクロの記録にて全て同じ動作を記録するぐらいのレベルで200以上の繰り返し作業は色々調べましたが難しく解る方いらっしゃいましたら教えて下さい。
内容は
*sheet 1 E6 コピー
sheet 2 A2 貼り付け
*sheet 1 H6 コピー
sheet 2 E2 貼り付け
*sheet 1 I 6 コピー
sheet 2 C5 貼り付け
sheet 2 C29:D29 コピー
*sheet 1 L6:M6 貼り付け
この動作が一回で
*印のセルが6~200まで繰り返したいのですが教えて下さい。

Aベストアンサー

Sub 繰り返し()
Dim 位置 As Long
For 位置 = 6 To 200
Sheets("Sheet2").Range("A2").Value = Sheets("Sheet1").Cells(位置, 5).Value
Sheets("Sheet2").Range("E2").Value = Sheets("Sheet1").Cells(位置, 8).Value
Sheets("Sheet2").Range("C5").Value = Sheets("Sheet1").Cells(位置, 9).Value
Sheets("Sheet1").Cells(位置, 12).Value = Sheets("Sheet2").Range("C29").Value
Sheets("Sheet1").Cells(位置, 13).Value = Sheets("Sheet2").Range("D29").Value
Next
End Sub

※「Cells(位置, ○)」の「位置」は行番号、「○」は列番号です。今回は列は変更しないのであまり意味はありませんが、行のように変化する場合は、「列記号」よりも今回のように「列番号」を使った方が便利なのでこちらで覚えた方が良いです。

Sub 繰り返し()
Dim 位置 As Long
For 位置 = 6 To 200
Sheets("Sheet2").Range("A2").Value = Sheets("Sheet1").Cells(位置, 5).Value
Sheets("Sheet2").Range("E2").Value = Sheets("Sheet1").Cells(位置, 8).Value
Sheets("Sheet2").Range("C5").Value = Sheets("Sheet1").Cells(位置, 9).Value
Sheets("Sheet1").Cells(位置, 12).Value = Sheets("Sheet2").Range("C29").Value
Sheets("Sheet1").Cells(位置, 13).Value = Sheets("Sheet2").Range("D29").Value
Next
End Sub

※「Cells...続きを読む

QExcel セルの高さ修正で困っています:履歴書フォーマットの右側

Excelの履歴書フォーマットを使って履歴書を作っています。

職歴に書く内容が多いので、資格・免許の行(この行は職歴を書く行より狭いです)
を下にずらして職歴の場所を広げたいので、職歴の行の挿入を使ってみたり、
資格・免許の行を削除してみたりしているのですが、行の高さやセルが崩れて
しまいます。

履歴書の左側を崩さず、うまく職歴の行と同じ高さの行を作る方法を教えてください。

よろしくお願いします。

Aベストアンサー

オプションにクイックアクセスツールバーという項目が
あって基本的なコマンドをすべてのコマンドに切り替えると
カメラというのがあるので追加してください。

その上で、思い切って別シートでその部分だけを作ります。
というか作ってあるんだからシートコピーで複製を
作り、左側の崩れは無視して希望通りにセルを調整します。
出来た部分を選択して、今追加したカメラをクリックします。
元のシートの上でクリックすると貼り付くので
真ん中付近をつかんで位置を微調整してください。
これで完全に、元のシートともう一つのシートのセルの関連性は
断ち切れます。

Q最も高い身長を表示するプログラム

5人分の身長から最も高い身長を表示するプログラムをつくったのですが、エラーがでて実行できません。改善すべきところを教えてください。お願いします。
int main(void)
{
double a[5], max = 0;
int i;

for (i = 1; i <= 5; i++)
{
a[i] = 0;
}
printf("数値を5つ入力してください。\n");

for (i = 1; i <= 5; i++)
{
scanf("%lf", &a[i]);
}

for (i = 1; i <= 5; i++)
{
if (a[i] > max)
max = a[i];
}

printf("最も高い身長は%fです\n", max);

return 0;
}

Aベストアンサー

double a[5] ;
と宣言したら、安全に使えるのは a[0] 〜 a[4] です。

なので、このプログラムを安全なものにするなら
・double a[5]はそのまま、 i=0;i<5;i++ にして、 i=0〜4 の範囲で使う
・「i = 1; i <= 5; i++は変えない」 のなら
 ・ i=1〜5を、 0〜4 に対応させて使う
   単純明快なのは、 a[i-1] とすること
 ・double a[5+1] と宣言して、a[5] を安全に使えるようにする。
   a[0] が無駄になるけど気にしない

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

Q図形の大きさを固定したい

お世話になります。

マクロで所定のセルに背景色を付けて、
同時にセルに「〇」を入力しております。
今まで問題なく、機能していたのですが、

別のワークブックにユーザーフォームを移動し同じ操作を行ったところ、
なぜかワークシート上にある
図形(横書きテキスト)の大きさが変わります。

対処として一度、画面のズームの倍率を変更し、
最初の倍率(100%)に戻すと元に戻るので、
今は、マクロで画面のズーム倍率を一度、
拡大してから元に戻すことによって
図形のサイズを元に戻しております。

これでも実用上問題はないのですが、
今後のために図形の大きさを固定する設定で、
マクロも利用できるような設定があるのでしたら、
教えて下さい。

すいませんが、詳しい方、説明の上手な方、
コードで直接説明出来る方、よろしくお願いします。

問題のコードは以下のコードで、
このコードを実行すると図形(横書きテキスト)の大きさが
約3倍になります。

追記1
このワークブックを別のパソコンにUSBメモリーで移動させて
動作確認したところ、同様に図形のサイズが大きくなります。
※一応、ズームの拡大(105%)、縮小(100%)のコマンドは無効化してあります

追記2
根本的な原因に心当たりのある方で、
この操作時に図形のサイズが変更されない方法でももちろんOKです。

追記3
このユーザーフォームを利用していたオリジナル(最初の)の
ワークブック(ワークシート)は表示倍率60%のシート上で利用しておりました。

--------------------------------------
Private Sub CommandButton71_Click()

With ActiveCell.EntireRow

Cells(ActiveCell.Row, 1).Interior.Color = RGB(0, 200, 200) ' 入力、背景色
Cells(ActiveCell.Row, 8).Interior.Color = RGB(0, 200, 200) ' 入力、背景色
Cells(ActiveCell.Row, 19).Interior.Color = RGB(0, 200, 200) ' 入力、背景色
Cells(ActiveCell.Row, 20).Value = "〇"

'画面の拡大縮小(図形の大きさもどす)
' ActiveWindow.Zoom = 105
' ActiveWindow.Zoom = 100

End With

End Sub

お世話になります。

マクロで所定のセルに背景色を付けて、
同時にセルに「〇」を入力しております。
今まで問題なく、機能していたのですが、

別のワークブックにユーザーフォームを移動し同じ操作を行ったところ、
なぜかワークシート上にある
図形(横書きテキスト)の大きさが変わります。

対処として一度、画面のズームの倍率を変更し、
最初の倍率(100%)に戻すと元に戻るので、
今は、マクロで画面のズーム倍率を一度、
拡大してから元に戻すことによって
図形のサイズを元に戻しておりま...続きを読む

Aベストアンサー

https://support.microsoft.com/ja-jp/help/2510274
の件でしょうか?
もしそうなら既知の問題ですとあるので、Microsoft的には
「判ってるけどほったらかすよ」ってつもりだと思います。

多分解決策はズームの変更をしないという
逃げが実現できるかどうかじゃないかな?

あと2007、2010の問題とあるのでバージョン上げれば
違うのかも、生憎こちらは2010使用なのでわかりませんが。


人気Q&Aランキング