Delphi의 Excel에서 MySQL / ODBC 연결을 어떻게 설정합니까?

Shamusvw

Delphi에서 새 Excel 통합 문서를 만들고 싶지만 Delphi에서 열기 전에 먼저 기존 MySQL 데이터베이스에 대한 ODBC 연결을 설정하고 쿼리를 설정하고 싶습니다. 그런 다음 열리면 즉시 데이터를 추출합니다.

내가 시도한 것은 먼저 Excel에서 매크로를 기록하고 VBA에서 연결을 설정하는 방법을 보는 것입니다. 그런 다음 Delphi에서 VBA를 복제하려고했습니다.

이것이 내가 시도한 것입니다.

var
xls, wb : OLEVariant;
begin
  xls := CreateOLEObject('Excel.Application'); {initialize an instance of Excel}
  wb := xls.Workbooks.Add; {create workbook}

  //xls.ActiveSheet.ListObjects.Add(SourceType:=0, Source:='ODBC;DSN=MySQL;', Destination:=Range('$A$1')).QueryTable; //this throws a missing operator or semicolon error
  xls.Worksheets[1].ListObjects.Add(); //add a listobject
  xls.WorkBooks[1].Worksheets[1].ListObjects.Item[1].QueryTable[1].CommandText := 'SELECT 1';
...
end;

CommandText를 설정하려고 할 때 OLE 오류 800A03EC가 발생합니다.

아래는 VBA 코드입니다. 새 통합 문서에서 매크로를 기록하여 얻습니다. 첫 번째 줄에서 연결 문자열을 입력하는 방법에 대해 많은 조합을 시도했지만 결국 오류없이 ListObject (델파이 코드에서와 같이)를 추가 할 수 있다는 것을 알아 낸 다음 각 매개 변수를 개별적으로 설정하려고했습니다. , 그러나 성공하지 못했습니다.

Sub Macro1()
'
' Macro1 Macro
'

'
    Application.CutCopyMode = False
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:="ODBC;DSN=MySQL;", _
        Destination:=Range("$A$1")).QueryTable
        .CommandType = 0
        .CommandText = Array("SELECT 1")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "Table_Query_from_MySQL"
        .Refresh BackgroundQuery:=False
    End With
End Sub
Fpiette

다음은 VBA 코드를 거의 직접 복사 한 솔루션입니다.

procedure TForm1.Button1Click(Sender: TObject);
var
    ExcelApplication       : Variant;
    WorkBook               : Variant;
    ActiveSheet            : Variant;
    ListObject             : Variant;
    Range                  : Variant;
    QueryTable             : Variant;
begin
    ExcelApplication                    := CreateOLEObject('Excel.Application');
    WorkBook                            := ExcelApplication.Workbooks.Add;
    ActiveSheet                         := ExcelApplication.ActiveSheet;
    Range                               := ActiveSheet.Range['A1', 'A1'];
    ListObject                          := ActiveSheet.ListObjects.Add(
                                  0,                 // SourceType,
                                  'ODBC;DSN=MySQL;', // Source,
                                  TRUE,              // LinkSource,
                                  xlGuess,           //XlListObjectHasHeaders,
                                  Range);            // Destination
    QueryTable                          := ListObject.QueryTable;
    QueryTable.CommandType              := xlCmdSql;
    QueryTable.CommandText              := 'SELECT 1';
    QueryTable.RowNumbers               := FALSE;
    QueryTable.FillAdjacentFormulas     := FALSE;
    QueryTable.PreserveFormatting       := TRUE;
    QueryTable.RefreshOnFileOpen        := FALSE;
    QueryTable.BackgroundQuery          := TRUE;
    QueryTable.RefreshStyle             := xlInsertDeleteCells;
    QueryTable.SavePassword             := FALSE;
    QueryTable.SaveData                 := TRUE;
    QueryTable.AdjustColumnWidth        := TRUE;
    QueryTable.RefreshPeriod            := 0;
    QueryTable.PreserveColumnInfo       := TRUE;
    QueryTable.ListObject.DisplayName   := 'Table_Query_from_MySQL';
    QueryTable.Refresh(False);  // BackgroundQuery
end;

보시다시피 코드 가독성을 위해 중간 변수를 사용했습니다. 일부는 생략 할 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

MySql에서 2 개의 열을 어떻게 결합합니까?

분류에서Dev

코드에서 ODBC를 통해 Teradata에 어떻게 연결합니까?

분류에서Dev

MySQL의 경우 그룹에서 열의 고유 값을 어떻게 연결합니까?

분류에서Dev

Atom에서 C #을 원격 MySQL 서버에 어떻게 연결합니까?

분류에서Dev

MySQL 테이블의 열을 다른 테이블의 열에 어떻게 연결합니까?

분류에서Dev

Peewee ORM을 사용하여 WebFaction의 MySQL 데이터베이스에 어떻게 연결합니까?

분류에서Dev

Delphi에서 Word 및 Excel을 어떻게 사용합니까?

분류에서Dev

VirtualBox에서 인터넷 연결을 어떻게 설정합니까?

분류에서Dev

C ++. VS 2015에서 파일 간 연결을 어떻게 설정합니까?

분류에서Dev

어떻게 MySQL의에서 몇 행 기록을 결합?

분류에서Dev

featherlight에서 기본 설정을 어떻게 재정의합니까?

분류에서Dev

모든 컴퓨터에 odbc 연결을 설정하는 대신 Excel 스프레드 시트에서 odbc 문자열 연결을 만들어 이식 가능하게 만드는 방법은 무엇입니까?

분류에서Dev

라이브 연결의 SSH 설정을 어떻게 변경합니까?

분류에서Dev

Ubuntu Nautilus의 기본 파일 연결을 연결 프로그램 탭에 나열되지 않은 항목으로 설정하려면 어떻게합니까?

분류에서Dev

Ubuntu Nautilus의 기본 파일 연결을 연결 프로그램 탭에 나열되지 않은 항목으로 설정하려면 어떻게합니까?

분류에서Dev

Bash에서 두 변수의 각 줄을 어떻게 연결합니까?

분류에서Dev

Windows 7에서 연결을 어떻게 연결합니까?

분류에서Dev

janusgraph에서 노드의 속성에 null 값을 어떻게 설정합니까?

분류에서Dev

appsettings.json에 연결 문자열을 어떻게 설정합니까?

분류에서Dev

Windows 10의 계정에서 Microsoft 계정 자격 증명을 연결 해제하려면 어떻게합니까?

분류에서Dev

중첩 연결을 위해 getConfigs에서 parentName, parentId 및 connectionName을 어떻게 정의합니까?

분류에서Dev

Ruby에서 Contentful 필드의 날짜 형식을 어떻게 설정합니까?

분류에서Dev

드롭 다운 선택에서 TextField의 값을 어떻게 설정합니까?

분류에서Dev

iOS에서 UICollectionView의 제약 조건을 어떻게 설정해야합니까?

분류에서Dev

ConEmu에서 Clink의 --profile 옵션을 어떻게 설정합니까?

분류에서Dev

Javascript에서 SVG CSS 속성의 스타일을 어떻게 설정합니까?

분류에서Dev

Eclipse에서 Target Platform JAR의 중단 점을 어떻게 설정합니까?

분류에서Dev

nixos에서 postgres의 인증 설정을 어떻게 구성합니까?

분류에서Dev

Eclipse에서 코드의 기본 전경색을 어떻게 설정합니까?

Related 관련 기사

  1. 1

    MySql에서 2 개의 열을 어떻게 결합합니까?

  2. 2

    코드에서 ODBC를 통해 Teradata에 어떻게 연결합니까?

  3. 3

    MySQL의 경우 그룹에서 열의 고유 값을 어떻게 연결합니까?

  4. 4

    Atom에서 C #을 원격 MySQL 서버에 어떻게 연결합니까?

  5. 5

    MySQL 테이블의 열을 다른 테이블의 열에 어떻게 연결합니까?

  6. 6

    Peewee ORM을 사용하여 WebFaction의 MySQL 데이터베이스에 어떻게 연결합니까?

  7. 7

    Delphi에서 Word 및 Excel을 어떻게 사용합니까?

  8. 8

    VirtualBox에서 인터넷 연결을 어떻게 설정합니까?

  9. 9

    C ++. VS 2015에서 파일 간 연결을 어떻게 설정합니까?

  10. 10

    어떻게 MySQL의에서 몇 행 기록을 결합?

  11. 11

    featherlight에서 기본 설정을 어떻게 재정의합니까?

  12. 12

    모든 컴퓨터에 odbc 연결을 설정하는 대신 Excel 스프레드 시트에서 odbc 문자열 연결을 만들어 이식 가능하게 만드는 방법은 무엇입니까?

  13. 13

    라이브 연결의 SSH 설정을 어떻게 변경합니까?

  14. 14

    Ubuntu Nautilus의 기본 파일 연결을 연결 프로그램 탭에 나열되지 않은 항목으로 설정하려면 어떻게합니까?

  15. 15

    Ubuntu Nautilus의 기본 파일 연결을 연결 프로그램 탭에 나열되지 않은 항목으로 설정하려면 어떻게합니까?

  16. 16

    Bash에서 두 변수의 각 줄을 어떻게 연결합니까?

  17. 17

    Windows 7에서 연결을 어떻게 연결합니까?

  18. 18

    janusgraph에서 노드의 속성에 null 값을 어떻게 설정합니까?

  19. 19

    appsettings.json에 연결 문자열을 어떻게 설정합니까?

  20. 20

    Windows 10의 계정에서 Microsoft 계정 자격 증명을 연결 해제하려면 어떻게합니까?

  21. 21

    중첩 연결을 위해 getConfigs에서 parentName, parentId 및 connectionName을 어떻게 정의합니까?

  22. 22

    Ruby에서 Contentful 필드의 날짜 형식을 어떻게 설정합니까?

  23. 23

    드롭 다운 선택에서 TextField의 값을 어떻게 설정합니까?

  24. 24

    iOS에서 UICollectionView의 제약 조건을 어떻게 설정해야합니까?

  25. 25

    ConEmu에서 Clink의 --profile 옵션을 어떻게 설정합니까?

  26. 26

    Javascript에서 SVG CSS 속성의 스타일을 어떻게 설정합니까?

  27. 27

    Eclipse에서 Target Platform JAR의 중단 점을 어떻게 설정합니까?

  28. 28

    nixos에서 postgres의 인증 설정을 어떻게 구성합니까?

  29. 29

    Eclipse에서 코드의 기본 전경색을 어떻게 설정합니까?

뜨겁다태그

보관