2016-07-01 18 views
0

私は以下のコードを使ってSQLからデータを取り戻そうとしています。接続は問題なく、すべて正常に動作しますが、私は以下のコードの内容をアクセスのテーブルに格納したいと思います。 助けてもらえますか?完全なテーブルと相互作用しない、あなたの特定のクエリのためにMS Access SQL Serverのテーブルに結果を挿入します

Public PERSONALDBCONT As Object, _ 
SQLSTR As String, SQLSTR1 As String, _ 
SQLSTR2 As String, SQLSTR3 As String, _ 
RecCount As String, DB As String 
Function CONNECT_TO_DB() 
    Set PERSONALDBCONT = CreateObject("ADODB.connection") 
    Dim SCONN As String 
SCONN = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=" & tempdb & ";Data Source=WBACUKSQLPD001;" & _ 
"Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=WBAC173427;Use Encryption for Data=False;Tag with column collation when possible=False" 
     PERSONALDBCONT.Open SCONN 


End Function 



Function CLOSE_CONNECTION_TO_SQL() 

    On Error Resume Next 

     PERSONALDBCONT.Close 

     Set PERSONALDBCONT = Nothing 

    On Error GoTo 0 

End Function 

Sub SQL_() 

      Dim rs As Object 

      Dim iCols As Integer 

      Set rs = CreateObject("ADODB.Recordset") 

      On Error GoTo ERR 



       CONNECT_TO_DB 
      Dim SQLSTR As String 
      SQLSTR = "Select top 1 * from sys.objects" 
       rs.Open SQLSTR, PERSONALDBCONT 




       Exit Sub 



ERR: 

      CLOSE_CONNECTION_TO_SQL 

      MsgBox "There was an error at " & Stage & "." & vbNewLine & "Please see the instructions and investigate" 

      If Application.Visible = False Then Application.Visible = True 

      End 

End Sub 
+0

それはアクセスDBにリンクすることができますし、単純なINSERTINTO MAKE TABLEなど。 –

+0

こんにちは@Nathan_Sav、リンクが何を意味するのか分かりません。 – Krishn

+0

GoogleはSQL ServerテーブルをAccessにリンクしています。 –

答えて

0

、SQL Serverのクエリからのデータを収容することができますので、予めAccessテーブルの構築を検討。その後、反復追加クエリまたはレコードの更新のいずれかを使用してテーブルにアクセスするために、SQL Serverのレコードを移行:(パラメータ化クエリ定義を使用して)

追加クエリ

' ... same code as above ... ' 
Dim db As Database 
Dim qdef As Querydef 
Dim strSQL As String 

Set db = CurrentDb 

' PREPARE SQL STATEMENT (SPECIFY PARAM NAMES AND TYPES IN FIRST LINE) ' 
strSQL = "PARAMETERS Col1 Text(100), Col2 Text(100), Col3 Integer, Col4 Boolean;" _ 
      & " INSERT INTO AccessDestinationTable (Col1, Col2, Col3)" _ 
      & " VALUES ([Col1], [Col2], [Col3]);" 

' LOOP THROUGH SQL SERVER RS ' 
Do While Not SqlServerRS.EOF 

    Set qdef = db.CreateQueryDef("", strSQL) 
    qdef!Col1 = SqlServerRS!Col1 
    qdef!Col2 = SqlServerRS!Col2 
    qdef!Col3 = SqlServerRS!Col3 

    qdef.Execute 

    SqlServerRS.MoveNext 
Loop 

SqlServerRS.Close 

Set qdef = Nothing 
Set db = NOthing 

レコード更新( 2つの開いているレコードセットを使用)

' ... same code as above ... ' 
Dim db As Database 
Dim AccessRS As Recordset 

Set db = CurrentDb 
Set AccessRS = db.OpenRecordset("AccessDestinationTable") 

' LOOP THROUGH SQL SERVER RS ' 
Do While Not SqlServerRS.EOF 
    ' OPEN EDIT MODE OF ACCESS RECORSET, SET VALUES TO FIELDS, APPEND ROW ' 
    With AccessRS 
     .Edit 

     !Col1 = SqlServerRS!Col1 
     !Col2 = SqlServerRS!Col2 
     !Col3 = SqlServerRS!Col3 

     .Update 
    End With 

    SqlServerRS.MoveNext 
Loop 

AccessRS.Close 
SqlServerRS.Close 
関連する問題