• 締切済み
  • 暇なときにでも

access97とSQLserver6.5間のデータ連携

access97とSQLserver6.5を用いたシステムで、SQLのDB内にあるマスタから複数個の項目を抽出し、別のデータ(これもSQLのDB内にあります)へ書き出しを行なおうとしています。 その際、accessのフォームから insert into 命令をかけて実行しているのですが、受け側 の項目の桁数が送り側の桁数よりも小さい場合、エラーがでてしまいます。 同じ事をSQLのクエリーツールで実行させるとできてしまうので、訳がわかりません。 アドバイスいただければ幸いです。 よろしくお願いいたします。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数85
  • ありがとう数4

みんなの回答

  • 回答No.1
noname#9414
noname#9414

実際にACCESSとか、SQLなどはいじったことがないので、あまり深いことは 言えないのですが、それでもプログラムはある程度分かるので、その観点から、 答えます。 まずは、どの様なエラーが出てくるのかが分かると、もう少し詳しい方が、 答えてくれるかもしれませんね。私の意見では、ACCESSはきっと、いらん チェックをしているため、桁数があふれるとエラーを出すんじゃないでしょうか。 逆にSQLの方は、チェックをしてないとか・・・もし、プログラム側で、ACCESSと SQLのデータの桁数をチェックできるのでしたら、渡す前にチェックしてみるとか、 そういったことをしてはどうでしょうか。 実際に、こんなことができるかどうか分かりませんが、できそうでしたら、 試してみてください。 うまくいくことを願って・・・ 間違いなどがありましたら、ご指摘下さい。 ではでは☆

共感・感謝の気持ちを伝えよう!

質問者からの補足

せっかく回答をいただいたのに、返事が遅れてしまい申し訳ありませんでした。 確かに抽象的な質問だったなあと反省しています。 おっしゃられるようにいろいろと試してみます。 どうもありがとうございました。

関連するQ&A

  • accessからsqlserverへの移行について!

    accessからsqlserverへの移行について! 現在accessでシステム運用しています。 処理に時間がかかるのでDBのみsqlserverへの移行を検討しています。 時間がかかる原因は計算項目が多く計算の為に必要な定義項目と参照項目で計算項目を含めると約300項目となります。 この為、クエリーをNo.1とNo.2の2個のクエリーに分けて対処しています。 クエリーNo.2はNo.1の式の値を使用し更に式で計算しています。 クエリーで定義している計算式も条件が複雑なものもありさらに計算結果⇒計算結果⇒・・・・となっています。 この様な内容なので入力画面はレスポンスが遅く印刷は5~10分位かかるものがあります。 とりあえず印刷処理を早くしたいと思い一旦ワークテーブルに必要項目を出力する等をやって見ましたがやはり抽出に時間がかかりあまり改善しません。 データ件数は約3万件なのでデータ件数は問題ないと思っています。 accessの処理はそのままでDBをsqlserverからODBCでリンクしようと思います。 DBをsqlserverに移行することで処理速度の改善はどの程度見込めるのでしょうか。 計算項目数が多いのであまり見込めないのではと思っています。 accessからsqlserverへの移行された方でどの位改善されたのか教えて下さい。 現在の運用環境はサーバは使用せずファイル共有で4台のPCで運用しています。OSはWinXPです。 今回も専用サーバは使用せず現在のWinXPのPCにSQLServer2005無料を使用しようと思っています。 又、accessの処理で他に早くする方法がありましたら教えて下さい。 よろしくお願いします。

  • ACCESSからSQLServerのデータを取得したい

    SQLServerが利用できない環境にデータを持っていくため、以下のようなシステムを考えております。(テーブルのリンクは不可・手動でのデータのエクスポートは不可) 1.ACCESSのフォームに「データベース名」「テーブル名」を入力し、実行ボタン押下 2.ADOでSQLServerに接続 3.指定のテーブルと同じ構造のテーブルをACCESSに作成 4.SQLServerのデータをACCESSにINSERT ここで質問なのですが、ACCESSは自分のデータベースとSQLServerのデータベースに同時に接続できますか? 同時接続した場合のACCESS/SQLServerの書き分けはどのようになるのでしょうか。

  • SQLServerでREPLACE/SELECTができるか?

    My-SQLでは以下のSQLにより test01というDBからtest02というDBへ データをinsertすることができると思います。 また「insert」ではなく「replace」にすることで 同一キーの場合エラーにならず置き換えで データを登録してくれます。 ======================================= insert into [test01].dbo.test_table select * from [test02].dbo.test_table ======================================= そこで上記の「replace」を同じように SQLServerでできないか知っている方が おられたら是非ご教授いただきたく。 よろしくお願いいたします。

  • accessからsqlserverへの移行について!

    accessからsqlserverへの移行について! accessからsqlserverへの移行することにしました。 問題が起きないよう先日質問させて頂いた内容でもう少し詳しく教えてください。 以下が前回の内容です。編集をしています。 accessの処理はそのままでDBをsqlserverからODBCでリンクしようと思います。 現在の運用環境はサーバは使用せずファイル共有で4台のPCで運用しています。OSはWinXPです。 現在のマシンは4台とも3年前に購入したPentiumの2.40GHzメモリは2GBです。 今回も専用サーバは使用せず現在のPCにSQLServer2005無料を使用と思っています。 データ件数は約3万件で必要な項目にはインデックスを付けてリレーションも張っています。 計算項目が多く定義と参照項目含め約300項目となり、クエリーをNo.1とNo.2の2個のに分けています。 クエリーはデータやマスタとリンクしています、No.2はNo.1の式の値を使用し計算しています。 計算式は複雑なものや計算結果⇒計算結果⇒・・・・となっています。 入力画面はレスポンスが遅く、単票印刷で約30件の処理に5~10分位かかるものがあります。 印刷はワークテーブルに必要項目を出力する等をやって見ましたが改善しませんでした。抽出に時間がかかっています。 DBをsqlserverに移行することで処理速度の改善はどの程度見込めるのでしょうか。 計算項目数が多いのであまり見込めないのではと思っています。 頂いた回答です。 >それら複数のテーブルをサーバーに置いてリンクテーブルにし、従来通りのクエリーをそのまま使った場合は、確実に遅くなります。 ?これはsqlserverのデータをリンクしクエリーはそのままにしたら遅くなるのでしょうか。  対象方法はsqlserverにクエリーをVIEWで定義すればいいでしょうか。対処方法を教えてください。 >高速化にはそれなりのテクニックが必要です。 ?参考になるサイトがあれば教えてください。 >やはり抽出に時間がかかりあまり改善しませんとのことですので、計算式なしで[select * from ...等]にしてみて流してみてください。 ?早くなった場合必要な値はどの様にして取得しているのでしょうか。 >やはり、エンジンを置くPCの性能がカギで、これが遅いのでは期待はできないとしたものです。聞けば同じマシンで代替するとのことなので、あまり期待しない方がよい と思います。 ?サーバを設置しサーバOSにするとにより処理速度はかなり速くなるのでしょうか。  専用サーバも高価なものは買えないので現在のPCと同等程度の性能となります。 よろしくお願いします。

  • テーブルの結合の仕方 MSAccess97→MSSQLServer2000Dev

    初心者なので初歩的な質問かもしれませんがどうぞよろしくお願いします。 現在MSAccess97(Win2K)のDBをVB6sp4(Win2K)で操作しておりますが、 MSAccess97のDBをMSSQLServer2000に移行しようと考えておりましてクエリー(VBで作成したクライアント内のSQL文)での記述のしかたについて質問したいのですが、下記のように○売上明細テーブルと○商品マスタが存在していて いままで(Access)は SELECT 売上明細.*,商品マスタ.* FROM 売上明細 LEFT JOIN 商品マスタ ON 売上明細.商品コード = 商品マスタ.商品コード; で結合して追加・削除・更新などしておりました。 商品マスタの内容は変更・削除しないで売上明細のほうは削除できました。 移行(MSSQLServer)しようとSQL文を書き直し SELECT 売上明細.*,商品マスタ.* FROM 売上明細 LEFT OUTER JOIN 商品マスタ ON 売上明細.商品コード = 商品マスタ.商品コード; として(SQLServerのDBを)削除すると商品マスタのほうまで削除されてしまいます。SQLServerのViewで直接削除してみても同じでした。 +-----+-------+--+----+-------+ |商品コード| 商品名   |単価| 数量 |  金 額  | +-----+-------+--+----+-------+ |00001 |        |50 |  20 |  1,000 |          ↑                              ここに設定する項目が売上明細にないので         商品マスタから参照したい(参照のみで更新・削除はしない)   SQLServerで商品マスタを変更・削除せずに商品明細のレコードを削除できる結合方法はないでしょうか?どなたかよろしくお願いいたします。

  • SQLserverについて

    SQLの勉強を兼ねて、SQLserver を インストールして使ってみたいのですが、 特にサーバーなど立てずに、 スタンドアローンの環境で SQLserverをインストールして ローカルのACCESS のmdbに接続して SQL文など実行出来るのでしょうか? (Enterprise Manager は 使えるのでしょうか?) よろしくお願いします。

  • Access or SQLServer どちらを使用しますか?

    こんにちは。 みなさんならAccessかSQLServerの、どちらのDBを使うかご意見ください(出来ればメリットやデメリットなどもあるとうれしいです) <環境> サーバー:Win2000Server、Access2000または、SQLServer7.0 クライアント:Win2000 ×10台 開発環境:VB6.0(SP5)、Win2000 <やりたいこと&悩み> 1)複数のパソコンからDBのデータをSelect、Insert、Update、Deleteする 2)データが多いので、Accessの場合は3つくらいのmdbに分けないといけない(Accessのサイズ上限を超えてしまう為)。分けた場合は、リンクテーブルが必要。データ数は、1ヶ月に3万件くらい 3)タイミングによっては、同時アクセスあり 4)AccessをDBとして試作品を作成したところ、ファイルをロックできませんでしたというエラーが1日1回程度でてしまう 5)SQLServerでは気軽(?)にユーザーがメンテナンスできない(Accessの知識は多少あり) このような感じですが、みなさんならどちらを選択されますか?ご意見よろしくお願いします。

  • ACCESS→SQLServerへ

    現在ACCESS2000で使用しているモジュールを、SQLServer上で動かすことになり、その移植作業で難航しております。皆さんのお知恵をお借りしたく思います。 具体的には重複レコードのあるテーブルから重複を省いたテーブルを作るという処理で、FIRST関数がSQLServerで使えなくて困っています。以下はACCESSでのSQL文です。 INSERT INTO tbl2(fld1,fld2,fld3) SELECT (tbl1.fld1), First(tbl1.fld2) AS fld2の先頭, Count(tbl1.fld3) AS カウント FROM tbl1 GROUP BY tbl1.fld1; よろしくお願いします。

  • AccessVBAでSQLServerのデータを操作する際のlikeについて

    いつもお世話になっております。 タイトルの件なのですが、Accessのフォームを作成しました。 実行ボタンを押下すると入力した内容を元に、SQL文を作成してSQLServerのデータベースを操作するという内容です。 以下の順番で操作しています。 (1)該当データの件数を取得 (2)該当データをAccess上の一時テーブルに挿入 (3)該当データを更新 入力項目の1つが前方一致ですので、Where文に 項目名 like '入力内容%' といったlike演算子を含む分があります。 Where句は(1)~(3)全てで同じものを使用しています。 ですが、(1)(2)はこの文で問題なく実行できるのですが、(3)のみ実行できません。 同じWhere句を使っているのに、何故このような違いが起きるのでしょうか? 詳しい事は初心者なので分からないのですが、 DAOを使用してExecuteでSQL文を実行しています。

  • accessとオラクルの連携について

    お世話になります。アクセスでテーブルのデータをSQL文で取得し、 そのデータをオラクルのテーブルにinsertしたいと思ってます。 ただ、フィールドの数が40個もあるので insert into ・・・・Fields(0),Fields(1)・・・・ と記述するのはかなり面倒なので何かいい方法はないでしょうか よろしくお願いします。 なお、access側とオラクル側のテーブルは同じ型です。 ’ローカルテーブルのデータを取得 rec.Open "select * from tesuto", cnn ’取得したデータをinsertする Do Until rec.EOF sql= insert into value(Fields(0),Fields(1),・・・ rec1.Open "select * from tesuto1", cnn1 Loop

専門家に質問してみよう