次の方法で共有

AccessからShear Pointへの接続が成功、しかしデータを更新できない。解決方法を教えて頂けませんでしょうか?

Anonymous
2012-06-06T08:35:25+00:00

Access 2003 から Shear Pointへ接続し、Recordset でリストの修正をしたく、

下記コードでShear Pointへ接続は成功しましたが、実行しても更新がされません。

解決方法を教えて頂けませんでしょうか?

==========================================================

   Dim strList As String

    strList = "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx}"

    Dim strURL As String

    strURL = "http://WSSサーバ "

    Dim strCon As String

    Dim pvdr As Object

    Dim cn As New ADODB.Connection

    Dim rs As New ADODB.Recordset

    Dim cnStr As String

    cnStr = "Provider=Microsoft.ACE.OLEDB.12.0;WSS;" & _

            "IMEX=2;RetrieveIds=Yes;" & _

            "DATABASE=" + strURL + ";" & _

            "LIST=" + strList + ";"

    cn.Open cnStr

    rs.Open "list", cn, , adLockOptimistic

    Do Until rs.EOF

            rs.Fields("A").Value = "test"

            rs.Fields("B").Value = "test"

            rs.Update

        rs.MoveNext

    Loop

    rs.Close: Set rs = Nothing

    cn.Close: Set cn = Nothing

==========================================================

Microsoft 365 と Office | アクセス | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

10 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2012-07-06T10:56:28+00:00

    同じ現象かなと思ったので書き込みさせていただきます。

    私の方はCRUDはAccessのフォームに任せていますので特にコードを提供はできませんが。。。

    状況としては似ているのかなと思いレスさせていただきました。

    (フォームとサブフォームを用意しており、レコードセットの同期をとらせてはいますが、、、CRUDとは関係ないので)

    Office 365で提供されている SharePoint Online の カスタムリストを利用してAccessのデータベースを作成しました。

    利用者としては20名ほどで1日150件ほどのアイテムがたまり、現在では8000アイテムほどたまりました。

    この現象が報告されるようになったのはアイテムが2000件ほどたまった時からです。(本当はもっと早い段階でもあったのかもしれませんが。。。)

    特定条件(条件は一切不明)のレコードのみ一切更新ができなくなるようです。

    リレーションを張ってあり、カスタムリストを4つほど持っております。

    マスターAの1つのレコードのデータを含むときに 更新だけ できなくなったり

    (挿入、選択、削除は可能)

    マスターBの1つのレコードのデータを含むときに 更新だけ できなくなったり

    (これまた 挿入 選択 削除は可能)

    こちらはAccessのフォーム上、テーブル(データシートビュー上)いずれの場合でも発生し、

    SharePointから直接編集することは可能です。

    現状対応策としては問題になっているレコードが発見できたら

    新しく別の同じ意味を持ったレコードを挿入し、古い問題のあるレコードを削除して対応をとっております。

    ちなみにエラーがでるというわけではなくフリーズしてそのまま動かなくなるようです。

    ロックされているのでしょうか???それにしては削除できるのは不思議ですし。。。

    運用が少々手間になっているので私の方も何が問題なのか等を把握したいと思っております。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2012-06-13T01:06:25+00:00

    MukkuMukuさん

    情報提供頂きまして、ありがとうございました。

    アイテム数も多いのですが、サイト画面からは更新ができるのです。。。

    エラーは取れると思いますので、さっそく採取してみようと思います。

    他にも何か情報がございましたら、コメント頂けますと大変助かります。

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

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2012-06-09T00:22:09+00:00

    MukkuMukuです。

    サーバ立てる用事あったので試してみました。CRUDすべて可能で、落とし穴的なこともなかったかなと。

    サイトもしくはリストの権限によっては規定通りの動作をした。

    更新されないという場合、エラーとかは取れないのでしょうか

    ところで、アイテム数が多いとか。

    Windows Server 2008 SP2 x86

    WSS3.0 SP1(.NET3.0/Windows Internal Database)

    Access2003 SP3

    Access2007 Runtime SP3

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2012-06-07T07:33:05+00:00

    夏目様

    早速アドバイスを頂きまして、大変ありがとうございます。

    Recordset では、SharePoint にあるテーブルのデータは取得できております。

    そこで、下記を試してみましたが、更新されません。

    ========================================

    Do Until rs.EOF

    rs.Update "A","test"

    rs.Update "B","test"

    rs.MoveNext

    Loop

    ========================================

    SharePointの権限の設定でしょうか?

    なお、権限はメンバ[投稿]となっております。

    何かお分かりになりましたら、またコメントを頂けますと大変助かります。

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

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  5. Anonymous
    2012-06-07T06:07:36+00:00

    sachisuge さん、こんにちは。Answers のご利用ありがとうございます。

    SharePoint への接続はうまくいったということでしたが、データの更新ができない状態なのですね。

    Recordset では、SharePoint にあるテーブルの取得はできているでしょうか?

    もし取得はできているようでしたら、原因を絞り込むため、コードを一部変更して試してみてはいかがでしょう。

    ========================================

    Do Until rs.EOF

    rs.Fields("A").Value = "test"

    rs.Fields("B").Value = "test"

    rs.Update

    rs.MoveNext

    Loop

    ========================================

    …という部分ですが、以下のように変更してみてください。

    うまくいけば、元の記述が成功した場合と同じ結果になるかと思います。

    ========================================

    Do Until rs.EOF

    rs.Update "A","test"

    rs.Update "B","test"

    rs.MoveNext

    Loop

    ========================================

    試してみた結果、また書き込んでみてくださいね。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません