2016-04-26 7 views
1

SQL Serverをバックエンドとして使用するMicrosoft Accessでアプリケーションを構築しています。別のソースから顧客情報を取得し、Arrayに格納するコードがあります。配列は動的であり、要素の数は常に異なります。MS AccessでForループでInsertストアドプロシージャを実行する

この場合、配列には59個の要素があります。現時点では、ストアドプロシージャを実行して、この顧客データをForループに挿入し、ストアドプロシージャを59回実行します。

私はパラメータとして配列を渡す方法を研究していますが、私は運がありませんでした。私のコードは正常に動作しますが、ストアドプロシージャをn回実行するのではなく、これを行うためのより効率的な方法があれば疑問です。

For i = 0 To C.lngArraySize - 1 
     Dim cmd As New ADODB.Command 
Dim Prm As ADODB.Parameter 
    With cmd 

    .CommandText = "spAddAccountArray_INS" 
    .CommandType = adCmdStoredProc 
    .ActiveConnection = CurrentProject.Connection 

    Set Prm = .CreateParameter("@pID", adInteger, , , C.ReturnCustomerID) 
    .Parameters.Append Prm 

    Set Prm = .CreateParameter("@pName", adVarChar, , 50, C.aeName(i)) 
    .Parameters.Append Prm 

    Set Prm = .CreateParameter("@pType", adVarChar, , 30, "Authorized Employee") 
    .Parameters.Append Prm 

    Set Prm = .CreateParameter("@pacct", adVarChar, , 16, C.aeAccount(i)) 
    .Parameters.Append Prm 

    .Execute 
    End With 
    Set cmd = Nothing 
Next i 

答えて

1

あなたの最高のパフォーマンスをXMLにデータをパッケージ化、および(ストアドプロシージャを通じて)SQL Serverにそれを出荷し、そこを細断処理した後、挿入を行うことになります。

https://technet.microsoft.com/en-us/library/aa905917(v=sql.80).aspx

彼らは道記事は説明してXMLを作成しないでください。

sXMLDoc = "<ROOT>" 
    sXMLDoc = sXMLDoc & "<Customers CustomerID='VINET' ContactName='Paul Henriot'>" 
    sXMLDoc = sXMLDoc & "<Orders CustomerID='VINET' EmployeeID='5' OrderDate='1996-07-04T00:00:00'>" 
    sXMLDoc = sXMLDoc & "<Order_0020_Details OrderID='10248' ProductID='11' Quantity='12'/>" 
    sXMLDoc = sXMLDoc & "<Order_0020_Details OrderID='10248' ProductID='42' Quantity='10'/>" 
    sXMLDoc = sXMLDoc & "</Orders>" 
    sXMLDoc = sXMLDoc & "</Customers>" 
    sXMLDoc = sXMLDoc & "<Customers CustomerID='LILAS' ContactName='Carlos Gonzlez'>" 
    sXMLDoc = sXMLDoc & "<Orders CustomerID='LILAS' EmployeeID='3' OrderDate='1996-08-16T00:00:00'>" 
    sXMLDoc = sXMLDoc & "<Order_0020_Details OrderID='10283' ProductID='72' Quantity='3'/>" 
    sXMLDoc = sXMLDoc & "</Orders>" 
    sXMLDoc = sXMLDoc & "</Customers>" 
    sXMLDoc = sXMLDoc & "</ROOT>" 

これは、msdnサイトにも存在することは恥ずかしいことです。 msxml2.domdocumentオブジェクトを使用してxmlを作成します。文字列連結を使用してxmlをcretaeしないでください。

(2016年に)あなたがアクセスのフロントエンドを作成しているのはなぜノート

  1. のカップル?メンテナンスのためのその恐ろしい。適切なビジネスロジックレイヤーとデータアクセスロジックレイヤーを持つDotNet winformsオブジェクト(少なくとも)を試してみてください。

  2. OPENXMLは、SQL Server 2000を参照してください以降に更新されました:

http://pratchev.blogspot.com/2007/06/shredding-xml-in-sql-server-2005.html

+0

私はXMLの方法を見てみましょう。私はAccessを使用しています。これは、迅速に開発する必要があるアプリケーションであり、これは私が経験したものです。私はSQL Serverを初めて使い、今すぐdotnet winformsアプリケーションを構築する方法を学ぶ能力がありません。アプリケーションがAccessで構築されたら、次にそのアプリケーションをWebアプリケーションに移動します。 –

+0

「すばやく開発」概念実証アプリケーションを維持するのに費やす時間は、基本的な3層アプリケーションのスピードアップに必要な時間のほんのわずかです。 http://www.c-sharpcorner.com/UploadFile/dacca2/understand-3-tier-architecture-in-C-Sharp-net/ – granadaCoder

関連する問題