반응형

관련글_1


Public Cn As ADODB.Connection
Public Rs As ADODB.Recordset
Public Cstmst As String
Public strConnectionString As String


Private Sub Command1_Click()
Set Cn = New ADODB.Connection
Cn.Open "ODBC; Driver=Sybase SQL Anywhere 6.0;" & _
                   "Uid=DBA;" & _
                   "Pwd=SQL;" & _
                   "Dsn=YkAgDb;"


Set Rs = New ADODB.Recordset

Dim SQL
Dim Mng_cd
SQL = "SELECT mng_cd, cst_nm, zip_no, cst_addr, boss_nm, tel_no, emp_dlv, cst_gb1, cst_gb2, cst_ymd, cst_abc, cst_st FROM dbo.CSTMST WHERE bit_cd4 = 'Y' ORDER BY mng_cd, cst_nm, zip_no, cst_addr, boss_nm, tel_no, emp_dlv, cst_gb1, cst_gb2, cst_ymd, cst_st, cst_abc"

Rs.Open SQL, Cn       ' Sql 문으로 레코드 오픈

Open "c:\work\Ykcon.csv" For Output As #1

Do Until Rs.EOF
    Mng_cd = Format(Val(Rs!Mng_cd & ""), "000000") 'Rs!Mng_cd
    'Retail = Rs!Retail
    cst_nm = Rs!cst_nm
    zip_no = Rs!zip_no
    cst_addr = Rs!cst_addr
    boss_nm = Rs!cst_addr
    tel_no = Rs!tel_no
    emp_dlv = Rs!emp_dlv
    cst_gb1 = Rs!cst_gb1
    cst_gb2 = Rs!cst_gb2
    cst_ymd = Rs!cst_ymd
    cst_abc = Rs!cst_abc
    cst_st = Rs!cst_st
   
 폼어느 위치에다가   선언을 해줘야 하나여?? 처음 폼형식에서 선언해줘야 하는건가여?


관련글_2

1. sybase odbc 드라이브를 구하세요...
( 못구하시면  mail 보내시면 보내드릴께요 용량이 14M가 넘어서 파일첨부에 되지 않습니다)

2. setup으로 설치하십시오
3.  dsedit를 실행하십시오
4.  확인
5. 화면의 왼쪽부분(server 부분 아래 빈공간)에서 오른쪽 마우스를 누르시고 add를 선택하십시오
6. 서버이름을 지정하시고요
7. 오른쪽 Server address 부분에 sybase서버 ip와 포트를 입력하세요
   (ex :    211.2.100.3,3035)  반드시 ip와 포트 사이에 콤마를 쓰셔야함....
8. 번개 모양의 아이콘 (ping server임) 으로 test하여 성공하여야 합니다
9. dsedit종료하시고요
10. 제어판의 odbc관리자에 시스템 dns에 설정하세요...... (꼭 필요한 것만 하면되요...)

애고 잘모르는데 설명 해들릴려니깐 힘드네요.....

위에 처럼 하시면 됩니다..  
안되시면 메일 주세요....



관련글_3

일단 Provider가 나오는 경우는 ODBC연결이 아닌 OLEDB로 연결하려는 것 같은데
Sybase는 Oracle이나 MS-SQL가 달리 VB에서 기본으로 제공하지는 않습니다..
그리고  Sybase 11버전 까지는 OLEDB가 지원되지 않고 Syabse12부터  지원이 됩니다,,,,
일단 Sybase Open Client버전이 11이하이면 www.sybase.co.kr에서 Open Client 12.5버전을
개발환경에 새로 인스톨하시고 그러면 그 안에 OLEDB라는 폴더가 생깁니다...
OLEDB폴더 안에 sydaadm.exe를 실행시켜 Server를 지정합니다..
(지정하는 방법은 ODBC와 비슷)그리고 그리고 Proveider명은
Provider =Sybase.ASEOLEDBProvider.2입니다..
예) DB Server IP=111.111.111.111,   Port=5000
      Data Sourcer Name = TEST(sydaadm.exe에서 생성)
      User Id = Test,  Password = 123456
      DB명 = TestDB라고 하면

    VB에서 Connection String은

    sCnSvr1 = "Provider=Sybase.ASEOLEDBProvider.2;Initial Catalog=TestDB;Password=123456;"
    sCnSvr1 = sCnSvr1 + "User Id=Test;Data Source=Test;Server Name=111.111.111.111;"
    sCnSvr1 = sCnSvr1 + "Server Port Address=5000"

이라고 사용
위에서 ServerName은 반드시 IP주소로 표시

더 자세한 문의는 메일로 연락바람.....(저도 처음에 Sybase OLEDB연결 때문에 고생 많이함..ㅠ.ㅠ)

관련글_4

ADO연결 방식으로 Sybase에 연결하여 사용 중입니다.

  Set DB = New ADODB.Connection
  With DB
    .ConnectionString = "UID=**;PWD=******;DSN=******"
    .ConnectionTimeout = 30
    .CommandTimeout = 120
    .Open
  End With

  Set Rs = New ADODB.Recordset
  S_SQL = "select a.ab, ... from aaa a, bbb b where ... ... order by a.cont_no, b.cnt"
  Rs.Open S_SQL, DB, adOpenStatic, adLockReadOnly

  위와 같이 쓰는데요...
  건수가 작은 한 5천 미만 건수는 잘 처리 되는데요...
  약 5천 건수를 초과하면

  -2147217887 (오류코드)
  ODBC 드라이버가 요청한 속성을 지원하지 않습니다.
 
  이렇케 되는 군요...

관련글_5

네트웍에 DB를 접속 할려면 Direct가아닌 연결해주는 ODBC를 사용하죠(물론 다른것도 있습니다.)
그래서 직접 jet를 이용해 local의 db를 연결하는것과 좀 다르죠
물론 local도 odbc로 연결이 가능합니다.
그런데 그건 속도의 저하를 가져와 그렇게 사용하는 사람은(거의) 없죠

provider는 mdb를 읽을 드라이버 명이구요
(3.51은 아마도 Access 2000은 인식 못할꺼구요 3.6은 인식합니다. 이러한 차이죠..)
datasource는 당연히 화일명이죠 mdb의 위치...(넘 당연한가..)


    adoConnectionString = "dsn=sybaseodbc;" & _
                          "server=" & adoServerName & ";" & _
                          "uid=" & adoLoginID & ";" & _
                          "pwd=" & adoLoginPassword & ";" & _
                          "database=" & adodefaultDatabaseName

dsn(Dats Source Name) => ODBC에 잡힌 이름이죠, Sybase 접속 할려면 꼭 설정해 줘야 겠죠
server                => 당연히 접속할 서버 이름이겠죠..
uid                   => 접속할 사용자 명이구요
pwd                   => 이건 패스워드 겠죠
database              => DB의 여러 데이터 베이스중 기본으로 접속할 이름을 써주는 곳이죠..

답이 되었는지 모르겠내요..
제가 설명이 좀 그래서..
부족하시면 다시 질문 주세요..

+ Recent posts