엑셀과 엑세스의 차이점 (Excel vs Access) - ft. 데이터 수정하기 소스

in #excel7 years ago

<요약>

1. 데이터 크기의 차이엑셀은 최신 버젼으로 해도 몇 백만건 정도만 저장되는 걸로 압니다.데이터베이스는 스토리지만 있다면 억단위 이상으로 저장할 수 있습니다.

2. 동시성의 차이엑셀은 동시에 두명이상이 수정할 수 없습니다.데이터베이스는 여러명이 같은 행만 아니라면 동시에 수정할수 있습니다.

3. 검색의 차이데이터가 많이 저장되어 있을때 데이터베이스는 엑셀보다 훨씬 빠른 속도로원하는 데이터를 검색해줍니다.

4. SQL의 활용데이터 베이스는 SQL을 활용하여 원하는 뷰로 얼마든지 보여줄 수 있습니다.

5. 응용프로그램과 연동보통 데이터베이스는 단일로 사용되기 보다는 여러 응용프로그램과연동해서 사용되는데요 이때, 응용프로그램 내에서 인터페이스 하기가 훨씬 수월합니다.

6. 무결성 제약데이터베이스는 무결성 제약이라는 것이 존재하고,정규화 과정을 거쳐 데이터의 중복및 오류를 방지하는데엑셀은 이런 부분이 취약합니다. 


<편한게 좋다> 

엑셀이든 엑세스든 사용자가 가장 편해야 좋은것이 아닐까요? 

나는 엑셀로 못하는 것이 없다!!그러냐나는 엑세스로 못하는 것이 없다.!! 그렇습니다.엑셀이든 엑세스든 사용자가 자신이 할 수있는 자신이 하고 싶은 모든것을 능히 해낼수 있으면 그것으로 좋은 거 겠죠!! 

그러나 MS에서 두가지 프로그램을 둔 이유를 곰곰히 생각 해봐야 합니다. 두 프로그램은 비슷한것 같으면서 전혀 다르고 다른것 같으면서도 같게 사용할 수 있는서로에게 상승작용을 일으킬수 있는 아주 좋은 관계(?)를 맺고 있다는 것입니다. 

엑셀로 대량 자료계산을 몇시간 걸릴일을 엑세스로 잠깐만에 해낼 수 있고그 반대의 경우도 있습니다. 어떤 데이터를 어떻게 관리하느냐에 따라 엑셀이 편할 때도 있는 것이고 엑세스가 편할 때도 있는 것입니다. 

엑셀로도 엑세스처럼 데이타베이스를 이용한 프로그램을 만들 수 있습니다.반대로 엑세스로도 엑셀스럽게 사용이 가능하게 할 수 있죠!! 우리가 요리사라 가정할 때 회는 회칼로 무는 식칼로 꼭 썰어야 한다는 법은 없습니다.다만 회는 회칼로 썰때 편하고 무는 식칼로 썰때가 편하다는 거죠!!

엑셀과 엑세스도 그 비슷한것 아닐까요!! 득과 실을 따지자면 어떻게 사용하느냐에 따라 달라 진다고 봐야겠죠!!

회칼로 무를 썰면 손에 힘이 만이 들어가지만 그렇다고 무를 못썰거나 하지는 않죠!!

반대로 식칼로 회를 뜨면 매끄럽지 못하게 떠지겠죠!!

하지만 그 회를 못먹는 것은 아니죠!! 예를 무식하게 들었는데... 

아무튼 득과 실을 따진다는 것 자체가 우스운일이 아닌가 싶습니다.

물론 앞서서 말한 것 처럼 식칼로 회를 뜨는데 이분은 초절정 고수여서 칼의 종류를 따지지 않는 분이다!!

그럴땐 상관 없겠지만 우리처럼 보통 사람들은 그냥 적절하게 사용하는 것이 좋겠죠!! 

엑셀과 연계에 대한 좋은 예로...엑세스로 회원관리를 하는데 문자를 전송하고 싶다...그런데 웹에서 문자발송을 해주는 아래오라는 싸이트나 기타 여러 싸이트들은 모두주소록을 엑셀파일 가져오기 비슷한 메뉴가 있습니다. 

그래서 주소록을 가져오고 문자를 발송하죠!! 물론 업체별로 모듈을 제공하여 엑세스에서도 연동이 가능한것으로 알고 있습니다만...우리는 그런 전문가가 아니니 그냥 간단하게 할 수 있는 방법은엑세스에서 문자를 보낼 회원을 선택해서 그 주소록을 엑셀로 내보내고웹에서 문자를 쓩....!!

어때요 엑세스에서 엑셀로.....  또엑세스는 세로방향 즉 같은 필드의 합은 간단하게 구해집니다.

하지만 가로방향(레코드)으로의 계산은 상당히 복잡하죠!!
그렇지만 엑셀은 가로방향도 우습게 계산해 낸다는 거죠!!  

 <데이타 수정하기 소스> 

엑셀에서 MDB 데이터베이스의 내용을 불러오는 것은 [데이터]->[외부데이터 가져오기]기능을 이용하면 된다. 하지만, MDB 데이터베이스 속의 자료를 수정하는 것은 Access를 이용할 수 밖에 없다.
여기서는, Access를 이용하지 않고 .MDB에 있는 자료를 수정할수 있는 VBA 코드를 작성하여 Acceess가 설치되지 않은 곳에서 엑셀로 데이터베이스를 접근하는 방법을 제공한다.

1. 선행환경
- MS-Office 설치시 Microsoft Query도 함께 설치되어 있으면 좋다.
- 엑셀 추가기능중에서 'Access 연결' 기능이 설치되어 있으면 좋다.

2. VBA 코드로 .MDB 데이터를 시트로 불러오는 루틴
여기서 사용한 .MDB는 회원정보를 저장한 '회원DB.MDB'를 예로 들었다.
데이터베이스의 경로와 파일명은 임의로 수정해서 사용할 수 있다.

Sub GetData()
Dim szDBPath As String
Dim szConnString As String
Dim szQuery As String

szDBPath = "C:회원DB.mdb"
szConnString = "ODBC;DSN=MS Access Database;"
szConnString = szConnString & "DBQ=" & szDBPath
szConnString = szConnString & ";DefaultDir=C:"
szConnString = szConnString & ";DriverId=281;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;"

szQuery = "SELECT 회원테이블.회원ID, 회원테이블.회원성명, 회원테이블.주민등록번호 FROM 회원테이블 ORDER BY 회원테이블.회원ID"

ActiveWorkbook.Worksheets.Add
With ActiveSheet.QueryTables.Add(Connection:=Array(szConnString), Destination:=Range("A1"))
.CommandText = Array(szQuery)
.Name = "MS Access Database_Query"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
End Sub

3. VBA 코드로 .MDB 속의 필드 자료를 수정하는 루틴

Sub UpdateData()
Dim szDBPath As String
Dim szConnString As String
Dim szQuery As String

szDBPath = "C:회원DB.mdb"
szConnString = "ODBC;DSN=MS Access Database;"
szConnString = szConnString & "DBQ=" & szDBPath
szConnString = szConnString & ";DefaultDir=C:"
szConnString = szConnString & ";DriverId=281;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;"

szQuery = "UPDATE 회원테이블 SET 회원테이블.회원성명 = '이길동' WHERE 회원테이블.회원성명='홍길동'"

With ActiveSheet.QueryTables.Add(Connection:=Array(szConnString), Destination:=Range("A1"))
.CommandText = Array(szQuery)
.Name = "MS Access Database_Query"
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SaveData = True
.RefreshPeriod = 0
.Refresh BackgroundQuery:=True
End With
End Sub 

Coin Marketplace

STEEM 0.18
TRX 0.14
JST 0.030
BTC 58679.35
ETH 3155.04
USDT 1.00
SBD 2.44