달력

11

« 2014/11 »

  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
반응형
728x90
반응형

 

 

(엑셀ado)엑셀자료를 한꺼번에 DB에 저장하기

 

test_ado.zip

인터넷을 검색해보면 알겠지만, DB자료를 엑셀로 불러들이는 구문은 쉽게 접할 수 있습니다.

하지만 방대한 엑셀자료를 DB로  저장하는 구문은 그리 많지 않습니다.

 

첨부화일은 아주 간단한 그러면서도 구문을 조금만 분석하면 쉽게 응용할 수 있는 예제화일입니다.

미흡하지만 엑셀로 DB연동 프로그램을 작성하는 분에게 도움이 되길 바랍니다. 

 

Sub append_to_DB()
Dim adodbRecord As Object
Dim strConnect As String
Dim strSQL As String
Dim varAdddata As Variant, i As Long
    strConnect = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" & _
      ThisWorkbook.Path & "\test_access.mdb"
    'strConnect = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" & _
      "\\127.198.97.15\공유폴더\test_access.mdb"

    '서버접속인 경우
      
    strSQL = "SELECT Table1.* FROM Table1"
    Set adodbRecord = CreateObject("ADODB.Recordset")
    adodbRecord.Open strSQL, strConnect, 2, 3
    '이상 DB에 접속하는 전형적인 구문
    
    '엑셀자료를 DB에 집어넣습니다.
    varAdddata = Sheets("Sheet1").Range("A2:B" & Cells(65536, 1).End(xlUp).Row).Value
    With adodbRecord
      For i = 1 To UBound(varAdddata)
        .AddNew
        .Fields("name") = varAdddata(i, 1)
        .Fields("content") = varAdddata(i, 2)
      Next i
      .Update
    End With
   
    MsgBox "엑셀자료를 성공적으로 DB에 저장하였습니다.", vbInformation
End Sub


Sub from_DB()
Dim adodbRecord As Object
Dim strConnect As String
Dim strSQL As String
Dim varAdddata As Variant, i As Long
    Sheets("Sheet1").Range("F2:G65536").ClearContents
   
    strConnect = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" & _
      ThisWorkbook.Path & "\test_access.mdb"
    strSQL = "SELECT Table1.* FROM Table1"
    Set adodbRecord = CreateObject("ADODB.Recordset")
    adodbRecord.Open strSQL, strConnect, 2, 3
   
    Sheets("Sheet1").Range("F2").CopyFromRecordset adodbRecord
   
    MsgBox "성공적으로 DB자료를 엑셀로 불러들였습니다.", vbInformation
End Sub

 

 

추가로 ADO에 관심이 있다면 아래 링크도 참고하시기 바랍니다.

http://blog.naver.com/atmyhome/90036541078

 

 

수정이력)

130108 엑셀2007이상 버전에서도 작동되도록 첨부파일을 수정하였습니다. 

728x90
반응형
:
Posted by mapagilove
2014. 11. 19. 11:40

mdb(ADO) 작성 방법 프로그래밍 엑셀VBA 이야기2014. 11. 19. 11:40

728x90
반응형

 

 

mdb(ADO) 작성 방법  프로그래밍

 

Excel로 작업한 Data를 Access로 변환하는 내용입니다.

 

1.  엑셀파일을  하나  생성합니다.
      -  파일명  :  C:\Book1.xls

 

2.  엑셀파일에  다음과  같이  데이타를  작성해  주십시요.


영어단어             뜻                값 
school              학교               1 
student             학생               2 
computer          컴퓨터            3 
visual  basic     비쥬얼베이직  4 

 

      -  엑셀파일  작성시  첫번째  Row  의  값을  MDB  에선  필드명으로  인식을  합니다.  그렇기  때문에 첫번째  Row  는  필드명으로  그리구  두번째  Row  부터  데이타를  입력해  주시기  바랍니다.

 

3.  엑셀파일이  작성되었으면  비쥬얼베이직에서  프로젝트를  하나  생성하고  기본폼위에  버튼  하나와 데이타컨트롤  하나를  생성합니다.
      -  버튼  :  Command1
          데이타컨트롤  :  Data1

 

4.  폼의  선언부에  다음의  함수와  버튼에  다음과  같이  코딩하시기  바랍니다.

 

Private  STR_MDB  As  String

Private  Function  CREATE_TABLE()  As  Integer
        Dim  tdExample  As  TableDef
        Dim  fld()  As  Field
        Dim  dbDatabase  As  Database
       
        Dim  strTable  As  String
       
        Dim  intCount  As  Integer
        Dim  i  As  Integer

        If  Dir(STR_MDB)  <>  ""  Then
                '  파일이  존재하면  삭제한다.
                Kill  STR_MDB
        End  If
       
        strTable  =  Mid(CStr(Data1.RecordSource),  1,  Len(CStrata1.RecordSource))  -  1)
       
        '  MDB  생성
        Set  dbDatabase  =  CreateDatabase(STR_MDB,  dbLangGeneral,  dbEncrypt)

 

        '  테이블  생성
        Set  tdExample  =  dbDatabase.CreateTableDef(strTable)

        intCount  =  Data1.Recordset.Fields.Count
        ReDim  fld(intCount  -  1)
       
        '  엑셀의  필드수만큼  필드  생성
        For  i  =  0  To  intCount  -  1
                Set  fld(i)  =  tdExample.CreateField(Data1.Recordset.Fields(i).Name,  _
                                    Data1.Recordset.Fields(i).Type,  _
                                    Data1.Recordset.Fields(i).Size)
                tdExample.Fields.Append  fld(i)
        Next
       
        dbDatabase.TableDefs.Append  tdExample
       
        '  필드수를  리턴한다.
        CREATE_TABLE  =  intCount
End  Function

 

Private  Sub  Command1_Click()
        Dim  wrkDATA  As  Workspace
        Dim  dbsDATA  As  Database
       
        Dim  strTable  As  String
        Dim  strSQL  As  String
        Dim  strValue  As  String
       
        Dim  intCount  As  Integer
        Dim  i  As  Integer
        Dim  x  As  Integer
        Dim  intField  As  Integer
       
        '  Data1  데이타콘트롤에  엑셀파일을  연결하여  오픈한다.
        Data1.Connect  =  "Excel  8.0;"


        '  엑셀파일을  지정한다.
        Data1.DatabaseName  =  "C:\Book1.xls"


        '  엑셀파일내의  쉬트를  지정한다.  ($  표시가  쉬트명  뒤에  붙는다.  주의)
        Data1.RecordSource  =  "tb_test$"
        Data1.Refresh
       
        '  엑셀파일안의  데이타  갯수  (레코드  카운트)  를  읽어온다.
        Data1.Recordset.MoveLast
        intCount  =  Data1.Recordset.RecordCount
        Data1.Recordset.MoveFirst
       
        '  생성할  MDB  파일명
        STR_MDB  =  "c:\test.mdb"
       
        '  엑셀파일의  테이블명에서  마지막문자인  $  표시를  제거하여  테이블명을  만든다.
        strTable  =  Mid(CStr(Data1.RecordSource),  1,  Len _   

                          (CStrData1.RecordSource))  -  1)


        '  MDB  를  생성한다.  (리턴값은  엑셀파일안의  필드  갯수)
        intField  =  CREATE_TABLE
       
        '  생성한  MDB  를  오픈한다.
        Set  wrkDATA  =  CreateWorkspace("",  "admin",  "",  dbUseJet)
        Set  dbsDATA  =  wrkDATA.OpenDatabase(STR_MDB,  False,  False)
       
        '  엑셀파일에서  데이타를  읽어서  MDB  에  저장한다.
        For  i  =  1  To  intCount
                strValue  =  "'"  &  Data1.Recordset.Fields(0)  &  "'"
                For  x  =  1  To  intField  -  1
                        strValue  =  strValue  &  ",  '"  &  Data1.Recordset.Fields(x)  &  "'"
                Next  x
               
                strSQL  =  "INSERT  INTO  ""  &  strTable  &  ""  VALUES("  &  strValue  &  ")"
                '                                          ++                            ++
                '  만약에  ++  부분이  두개의  큰따음표로  보이면  하나로  수정하십시요. 

                ' 원래  하나입니다.


                dbsDATA.Execute  strSQL
                Data1.Recordset.MoveNext
        Next  i
       
        dbsDATA.Close
        wrkDATA.Close
       
        Set  dbsDATA  =  Nothing
        Set  wrkDATA  =  Nothing
End  Sub

 

 

 

위의것은 DB를 생성하면서 엑셀 화일을 만든 디비에 집어늫는것이고요

이방식말고..

 

 

만들어놓은 DB에 ADO방식으로 엑셀데이터를 입력하고싶은데

전혀감이 안옵니다..

만들테이블 명은 ATABLE이구요..

컬럼(필드)명은 num , nam, nrm입니다..

도와주십시요..

 

 
 
질문자가 선택한 답변 
re: 비주얼베이직..엑셀파일을 mdb(ado방식)로 저장하는 프로그램입니다. 
 
kabiyo (2005-06-23 22:46 작성) 
이의제기 | 신고
 
 질문자 평
^^ 감사합니다.. 데브피아랑 하우투는 이미 알고 있는데 거긴 없어서 ..ㅎ 암튼 고맘습니다.. 즐거운하루 상퀘한 하루 .. 
 
MSDN에 ADO에 대해서 검색해서 보시면 도움이 될겁니다

 

www.devpia.com

 

www.howtobank.net

 

여기 가시면 vb에 대한 많은 정보 얻으실수 있으시구요

 

제가 봤을땐 ADO도 특별한 방법 있는거 아닌거 같은데........

 

변수 선언할때 ADO형식으로 선언해주고......

 

ADO형식을 한번 참조해보세요 그러시면

 

코드 약간 수정으로  ADO연결 가능합니다
 

(출처 : '비주얼베이직..엑셀파일을 mdb(ado방식)로 저장하는 프로그램입니다.' - 네이버 지식iN)

[출처] mdb(ADO) 작성 방법|작성자 웰빙

 

728x90
반응형
:
Posted by mapagilove
728x90
반응형

 

우버택시 금지 법안 어느것이 좋을까요?

 

우버택시라는 말은 서울에서는 일반적이다?

우버 택시에 대하여 처음 들어보는 나에게 처음으로 뉴스를 접하고 나서 우버택시가 어플을 통해

콜택시처럼 이용할 수 있는 편리한 시스템이다라고만 알고 있었는데 이게 뉴스상에서 말들이 많

으니 한번 알아 보아야 겠다라는 생각이 들어 포스팅 해본다.

 

우버택시는 무언가요?

엄밀히 말하면 어플리케이션을 통해 사설택시를 이용할수 있으며 일반 택시보다 다소 저렴하고 더

편하다는 장점이 있는 허가없는 사설 운수업을 하는 승용차이다라고 정의 되어 있다.

 

그리고, 이 우버 택시를 금지하는 법을 최근 낸것으로 알고 있다.

어플을 이용하여 불안할 텐데 이용자수가 왜 증가했을까?

첫번째 이유로는 당연하게도 너무 비싼 택시비라고 전 생각합니다.

전 자가용을 타고다니기 때문에 택시를 안탄지가 조금 되었지만,

회식을 하게되며,  오랜만에 택시를 이용하게 되었습니다.

기본요금이 3천원이죠.

심지어 심야할증 및 시외요금을 받게되면, 택시비 자체가 엄청난 금액입니다.

우버택시 요금은 기본요금은 5천원으로 택시비보다 비쌉니다.

​근데 왜 요금이냐구요?

가장 말하고 싶은 내용이 이겁니다. 되도않는 블로그를 쓰고있는 이유지요!

야간이 되면 택시기사들은 미터기로 10,000~15,000원에 갈수있는거리를

3만원,4만원 불려 부르며, 그 가격이 합당치 않으면 승차 거부를 행세하지요.

술을 먹은 손님이면, 오히려 더 부를때도 있습니다.

그리고 제가 일하는곳은 안산시 반월공단입니다.

아침에 출근을 할때 전날 과음을 하여, 택시를 타려 하면 5천원도 안나올거리를 8천원~1만원까지 불

러가며 승차거부를합니다.

심지어 그가격에 합승까지 해서 4명이 다 모여야 출발을 합니다.

이런거에 비하면 이곳 근방의 우버택시는 5천원 기본요금 내로 회사까지 잘 도착합니다.

그럼 이 블로그를 보실 몇몇 분들 뭐가 더 났겠나요 ?

전 당연히 우버택시를 이용하겠습니다만...

두번째 이유로는 너무도 다른 서비스입니다.

우버택시는 주로 수입차로 운영을 많이합니다.

그리고 기사분들 자체가 굉장히 친절하십니다.

물론 차 자체도 모범택시 그 정도 또는 그 이상입니다.

저희가 모범택시를 타면 굉장히 편안하게 가죠^^?

하지만 모범택시보다 훨씬 싼 가격에 모범택시를 이용한다면 어떨까요?

​이렇게 우버택시를 대충 알아보았는데..

우버택시 처음엔  타기 굉장히 꺼리고, 타는 사람이 몇몇 되지 않았으나

편안한 차와 그에 맞는 서비스가 이루어지고 입소문이 퍼지니 번갯불에 콩구워먹듯 삽시간에 알려져 택시기사분들의 입지가 줄어, 정부에서 우버택시 금지 방안을 내세운것 같습니다.

과연 이게 올바른 일이 맞을까요?

대다수가 편하게 좋게 이용하고있는걸 강제로 막아야 하는걸까요?

​아니면 그걸 이용하게된 계기를 바로잡아야 할까요?

우버택시를 금지하기전에 택시기사분들 물론 몇몇 좋은분들도 계십니다.

​정확히 말하면 나쁜 못된 택시기사분들을 제지하고 야간 호객행위를 하는것을 단속하고 , 악용할수있는 방법을 없애 사람들이 택시를 안전하고 정당하게 탈수있게끔 만드는게 전 우선적으로 이루어질 일이라고 봅니다.

[출처] 우버택시 금지 법안에 관하여..|작성자 비둘기

 

​위에서 참조된 블로그를 통해 우버택시를 알아보았는데 참~~어려운 것같다. 기존의 상권의 기득

의 입장에서는 법적으로 주어진 자기 권리나 상권을 갉아먹는 부분이므로 엄청난 방항이 될수

있는 부분이다.

 

그러나, 편리성이나 요금의 현실성에 대해서 기존의 택시업계에서는 고민할 필요가 있을 것으로

보인다. 가까운 거리를 3~4만원을 주고 이용하자니 승차거부나 기타 제약사항으로 인하여 갑이

아닌 을에 처지에 놓인 이용자들로서 아주 큰 불만이 있게 마련이다.

 

물론 현재는 금지되어 잠깐 이용되지 않을 수 있으나 시간이 지나면 어느 부분은 대세를 거를 수

는 법 - 현재 택시 없계가 가지고 있는 어느 정도의 모순점과 고객 우선위주로 요금정책 및 서비

정책을 바꾸어 간다면 조금씩 바뀔수 있다는 점을 강조하며 포스팅 해본다.

 

 

728x90
반응형
:
Posted by mapagilove
2014. 11. 19. 10:19

불국사 봄을 기억하다 여 행 이야기2014. 11. 19. 10:19

728x90
반응형

 

불국사 봄을 기억하다

 

저녁에 회사에 다녀온 후 앨범을 정리해 본다. 앨범도 지겨울 때즈음 하드디스크에 있는

예전 사진들을 보 다가 지난봄 불국사에 다녀왔던 보다가 새삼 예전 기억에 젖어

불국사에 갔던 기억을 더듬어 포스팅해 본다.

 

우선 경주라는 곳에 대하여 잠깐 이야기 하자면, 우리나라의 최대 예전 유물이 환경 그대로 남아 있는 곳

이면 우리 가족이 매년 이 곳에 찾아 새로운 메모리를 만드는 곳이다.

 

봄바람이 솔솔 마음도 발걸음도 가볍에 불국사를 오른다.

주위엔 온통 새싹이 맘개하는 좋은 시절....

 

아이들이 불국사를 들어가 입구에서 다보탑으로 가기위해 올라간다.

가는길에 있는 연못에는

아주 큰 잉어들이 득실득실... 아이들이 신기하다고 난리다.

 

일주문을 가기전 다리 바로 아래

연못에는 대형 잉어가 득실득실~~

 

천왕문앞에서 이쁜 막내 한컷~~ 우와 늠름한 모습~~

 

다보탑, 석가탑을 보기전 아래 대형 나무아래서 가족 모두 한컷 웃음이 만발하다.

근데 좀있다가 입구에있는 기념품 가게 앞에서

아무거나 다 사겠다고 때를 쓰다 .... 울음보 폭발~~

 

다보탑앞에서 사진 한컷 ,

애들은 동전에 나온 탑이라며 너무 좋단다. 

 

 

다보탑이 있는 곳을 돌아 나와 걸어오는 길에

아주크게 쌓아 올린 담벽락이 예사롭지 않다.

 

관음전? 뒤에 조그많게 아주 많이 쌓이 탑이 쌓여있는 곳에서 애들도 탑을 쌓아 보겠다고

한층한층 쌓는 모습이 진지하다.

 

막내는 이쁘게 탑을 쌓아 올리고 한껏 웃어 본다.

 

큰애도 한컷 중간에 빠진 이빨과 웃음이 웃음을 나게 한다.

 

관음전 벽옆에서 기념으로 한컷 - 기도하는 자세로 찍어본다.

 

막내 혼자 이쁘고 수줍게 사진을 찍을려는 모습에 웃음이 활짝 핀다.

 

관음전에서 내려오는 길이 가파르다. 그래도 멋지게 사진한컷~~

 

불국사와 경주를 2박 3일로 돌아보는 길에 본 불국사는 아이들에게 아주 상쾌한 자연의 공기와 그리고,

그 곳과 어울어진 문화 유산을 같이 볼 수 있어서 더욱 좋았고 아주 멋진 기억을 남게했던 것 같다.

 

또 올 봄에 기회를 만들어 경주 투어를 할 생각을 하며 포스팅을 마감한다.

 

 

728x90
반응형
:
Posted by mapagilove
반응형