본문 바로가기

work/vb

VB 에서 Access에 테이블을 만들고 연결하는 방법

VB 에서 Access에 테이블을 만들고 연결하는 방법좀 알려주세요 부탁드립니다.
promichael 2005.01.06 19:19 
답변 1| 조회 3,052
 

1.VB 에서 Access에 테이블을 만들고 연결하는 방법좀 알려주세요 부탁드립니다.

만약 1번이 불가능하면...
2. VB.net에 Access를 이용해서 데이터베이스 환경을 만들려고 합니다. Access 파일에는 1000개의 테이블이 있고요. 어떻게 연결할수 있나요?

만약 2번도 불가능하면...
3. 툴박스에 OleDbDataAdapter를 이용해서 1000개를 한꺼번에 설정하는 방법이 있나요?

만약 3번도 불가능하면...
4. 밑에 코드는 제가 나름데로 계속 시도하고 있는 파일인데요.
계속 에러 메세지가... 뭐가 잘못됐는지 좀 알려주세요.
"Update require a valid InsertCommand when passed DataRow collection with new rows"

============================================================================
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn2.Click

'General object declarations
Dim objConnection As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:\BiologicalSystem\VB\AEBERacewayMaster10\bin\input2003.mdb")
Dim objDataAdapter As New OleDb.OleDbDataAdapter("Select * from A1", objConnection)
Dim objDataSet As New DataSet, objRow As DataRow

objDataAdapter.FillSchema(objDataSet, SchemaType.Source, "A1")
objDataAdapter.Fill(objDataSet, "A1")

'Add a record
objRow = objDataSet.Tables("A1").NewRow

objRow.Item("FeedDate") = DateTime.Parse("11/29/2004")
objRow.Item("FishNumber") = 100
objRow.Item("AmountOfFeed") = 100
objRow.Item("FlowRate") = 100

objDataSet.Tables("A1").Rows.Add(objRow)
objDataAdapter.Update(objDataSet, "A1")
End Sub
============================================================================
신고

의견 쓰기
답변하시면 내공 10점을, 답변이 채택되면 내공 25점을 드립니다.

현재 답변들 1
등록순 | 최신순

re: VB 에서 Access에 테이블을 만들고 연결하는 방법좀 알려주세요 부탁드립니다.1. VB에서 모듈 하나 만든 다음에 아래 소스를 통째로 넣으세요.

Option Explicit

Public gDB As Database 'Oracle DB 연결 Database
Public gsConnect As String 'Oracle DB 연결 CONNECT STRING
Public gsErrMsg As String 'Error 메세지
Public Ado_Conn As New ADODB.Connection

Public Sub DBConnect()

Dim ConStr As String

On Error GoTo ERROR_RTN

ConStr = "provider=Microsoft.jet.oledb.4.0;Data Source = " & App.Path & "\data\maya.mdb"

If Ado_Conn.State <> adStateClosed Then Ado_Conn.Close
Ado_Conn.CursorLocation = adUseClient
Ado_Conn.ConnectionString = ConStr
Ado_Conn.Open
MsgBox "접속 성공"
frmMain.Command3.Enabled = True
Exit Sub
ERROR_RTN:
MsgBox Err.Description, , "DB 연결오류"

End Sub

'WorkSpace를 만든다
'Open 할 때 화일이 존재하지 않으면 만들어준다
Public Function gfunOpenDB() As Boolean

On Error GoTo Err_Handler

Dim DBName As String

Screen.MousePointer = vbHourglass

DBName = App.Path & "\data\maya.MDB"

If Not (gDB Is Nothing) Then Set gDB = Nothing

'실제로 Workspace만드는 루틴
Set gDB = Workspaces(0).OpenDatabase(DBName, False, False)
gfunOpenDB = True

Screen.MousePointer = vbDefault

Exit Function

Err_Handler:
'Err넘버가 3044(디렉토리가 존재안함)이면 MKDir
' 3024(MDB가 존재안함)이면 Create MDB
'아니면 Exit....

Select Case Err.Number
Case 3044
MkDir (App.Path & "\Data")
Case 3024
Case Else
Err.Clear
Screen.MousePointer = vbDefault
Exit Function
End Select

'Create MDB
Set gDB = CreateDatabase(DBName, dbLangKorean)

'Create Table
Call gsubCreateTable

Err.Clear 'Error초기화
Resume
Screen.MousePointer = vbDefault

End Function

'Create Table
Private Sub gsubCreateTable()

Call gsubCreateTable_TagData

End Sub

'Create Table - TagData
Private Sub gsubCreateTable_TagData()

Dim tb As TableDef
Dim ndx(1) As Index
Dim i As Integer

'사용자 데이터 파일 생성
Set tb = gDB.CreateTableDef("TAGDATA")

With tb.Fields
.Append tb.CreateField("TAGNAME", dbText, 10)
.Append tb.CreateField("TAGTYPE", dbText, 10)
.Append tb.CreateField("TAGVALUE", dbLong)
End With

For i = 0 To 1
tb.Fields(i).Required = False
tb.Fields(i).AllowZeroLength = True
Next i

gDB.TableDefs.Append tb '테이블 적용

For i = 0 To UBound(ndx, 1)
Set ndx(i) = tb.CreateIndex(CStr(i))
Next i

ndx(0).Fields = "TAGNAME" 'index 필드명
ndx(1).Fields = "TAGTYPE" 'index 필드명

For i = 0 To UBound(ndx, 1)
tb.Indexes.Append ndx(i) '설정을 적용
Next

Set tb = Nothing
Screen.MousePointer = vbDefault
End Sub


2. 폼에 버튼을 세 개 만들고 아래와 같이 코딩 합니다.

Option Explicit

'MDB만들기
Private Sub Command1_Click()
Call gfunOpenDB
End Sub

'DB 접속하기
Private Sub Command2_Click()
DBConnect
End Sub

'데이터 test
Private Sub Command3_Click()
Dim Sql As String
Dim Ado_rs As New ADODB.Recordset

Sql = " INSERT INTO TAGDATA (TAGNAME, TAGTYPE, TAGVALUE)" & vbCrLf
Sql = Sql & " VALUES ('name_test','type_test',777)"

Ado_Conn.Execute Sql

Sql = " SELECT TAGNAME, TAGTYPE, TAGVALUE " & vbCrLf
Sql = Sql & " FROM TAGDATA" & vbCrLf

Ado_rs.Open Sql, Ado_Conn

If Not Ado_rs.EOF Then
MsgBox Ado_rs(0) & ""
Else
MsgBox "No Data"
End If

Ado_rs.Close

End Sub

간단한 예제 이지만 공부하는데 도움 되실겁니다.
수고하세요.