DBF 파일을 여는 방법: 가장 간단한 솔루션. 프로그래밍 방식으로 Access에서 DBF 파일을 연결하는 방법은 무엇입니까? DBF 파일에 업로드

오늘날에는 아마도 많은 사용자가 .dbf 확장자를 가진 파일을 자주 접한다는 사실을 아무도 알 필요가 없을 것입니다. 가장 슬픈 점은 Windows OS에서는 Microsoft Office가 설치되어 있어도 이 파일 형식과 관련된 단일 프로그램이 없다는 것입니다. 우리는 그것을 가지고 있습니다. 이제 그것을 알아 내려고 노력할 것입니다. 동시에 후속 자동 데이터 인식 및 원하는 파일 열기를 위해 확장 연결을 설정하는 방법을 살펴보겠습니다.

DBF 형식: 설명

실제로 이러한 유형의 파일 확장명에 적용된 약어를 ​​통해 이미 이것이 데이터베이스라는 결론을 내릴 수 있습니다. 이러한 파일은 일반적으로 확장자를 갖기 때문에 다소 구체적입니다.

이 경우에는 특수성에도 불구하고 이러한 유형의 정보 작업을 지원하는 많은 프로그램에서 인식되는 또 다른 것이 있습니다. 이는 기본 Microsoft Office 패키지의 일부인 동일한 Excel 또는 Access이거나 타사 개발자의 기타 Office 응용 프로그램일 수 있습니다.

표준 버전에서 DBF를 여는 방법

실제로 이러한 유형의 파일(탐색기에서도 아이콘이 사용되지 않음)을 갑자기 발견하더라도 당황하지 마십시오. 전체 논리 구조가 저장되어 있고 이를 고려하여 표준 검색 시스템을 사용할 가능성이 있기 때문에 Excel을 사용하여 매우 간단하게 열 수 있습니다.

표준 버전에서는 파일 자체와 연결된 프로그램이 없으므로 진행하는 방법에는 두 가지가 있습니다. 예를 들어 단순히 Excel 또는 Access를 시작한 다음 표준 파일 열기 메뉴 또는 Ctrl + O 키 조합을 사용하는 것이 좋습니다. 그러나 파일 형식 필드에 나타나는 메뉴에서는 "모든 파일"을 지정해야 합니다. ("기본" 형식이 아님) 찾고 있는 파일을 선택한 이유를 설명합니다. 안심하십시오. 모든 스프레드시트 프로그램은 문제 없이 이 데이터 유형을 인식합니다.

이미 분명한 바와 같이 우리의 경우 DBF 파일을 여는 방법의 문제는 수동 모드에서 표준 사무용 응용 프로그램을 사용하는 경우에만 발생합니다. 이미 분명한 바와 같이 이 방법은 항상 편리한 것은 아니며 일정 시간이 필요합니다.

관련 프로그램

이제 DBF 파일 자체를 살펴보겠습니다. 표준 오피스 제품군 프로그램을 사용하지 않고 어떻게 열 수 있나요? 예, 유사한 소프트웨어 제품에 포함된 동일한 유틸리티를 사용합니다.

예를 들어, 동일한 Open Office, Lotus 등이 될 수 있습니다. 원칙적으로 여기서는 큰 차이가 없습니다. 중요한 것은 사용된 프로그램이 표 형식의 전자 데이터로 작업할 수 있다는 것뿐입니다. DBF 형식을 읽는 것은 모든 경우에 정확히 동일하게 수행됩니다. 그건 그렇고, 이는 Oracle과 같은 플랫폼을 포함하여 모든 사람이 이러한 유형의 데이터를 지원하기 때문에 Office 제품군 개발자에 의존하지 않습니다.

기본 열기 옵션 변경

이제 자동 모드가 사용되도록 DBF 파일을 여는 방법을 살펴보겠습니다. 가장 간단한 경우, 이 작업은 일반적인 "탐색기"에서 파일을 마우스 오른쪽 버튼으로 클릭하여 호출되는 하위 메뉴에서 수행됩니다. 여기에서 "다음으로 열기..." 명령이 선택됩니다.

단일 사례의 경우 나열된 응용 프로그램 중 하나가 사용됩니다. DBF 파일을 여는 방법에 대해 다시 고민하지 않으려면 선택한 응용 프로그램을 지정한 다음 하단의 "이 유형의 모든 파일에 사용" 줄 옆의 상자를 선택하면 됩니다. 앞으로 동일한 Excel(기본 프로그램으로 선택한 경우)은 일반적인 두 번 클릭으로 이러한 유형의 파일을 엽니다.

Excel 대신 이러한 유형의 데이터를 인식하고 열 수 있는 Access 또는 기타 프로그램을 선택할 수 있다는 것은 말할 필요도 없습니다. 그것은 요점이 아니다. 가장 중요한 것은 데이터베이스 자동 열기를 구성하는 것입니다. 글쎄, 소프트웨어 측면에서 무엇을 사용할지는 컴퓨터 시스템의 각 개별 사용자에게 달려 있습니다.

결과는 무엇입니까?

요약하자면, 이러한 유형의 파일을 열 때 가장 좋은 옵션은 전 세계적으로 가장 널리 퍼져 있는 Microsoft Corporation의 오피스 제품군이라고 말할 수 있습니다. 사실, Microsoft 제품을 사용하지 않는 사용자가 다른 응용 프로그램에서 이러한 유형의 데이터를 열 것이라는 사실에는 아무런 문제가 없습니다.

위의 모든 내용에서 이미 분명한 것처럼 테이블 편집기는 오늘날 알려진 거의 모든 패키지에 존재합니다. 그들은 이름만 서로 다를 수 있으며 기능 세트는 확실히 다를 수 있습니다. 이는 일반적으로 드문 경우를 제외하고 모든 곳에서 동일합니다.

따라서 무엇보다도 상당히 많은 수의 프로그래밍 언어를 사용하는 많은 개발 도구를 사용할 수 있습니다. SQL 서버의 생성 및 최적화를 지원하는 동일한 플랫폼에서 이러한 파일은 말하는 대로 즉시 열립니다. 열었을 때 일반 사용자에게는 다소 특이한 모습을 보일 것입니다. 그러나 대부분의 사용자는 이러한 전문 개발 도구를 사용할 가능성이 낮으며 표준 소프트웨어 세트로만 제한됩니다.

아마도 다음 코드가 도움이 될 수 있습니다.

MS Access에 추가해야 하는 VB 함수는 매우 간단하며 기본적으로 TransferDatabase 메서드를 호출하여 DSN(소스 데이터베이스를 가리키는), 소스 테이블 이름 및 대상 테이블 이름을 전달합니다. 코드는 다음과 같습니다:

Public Function Import(dsnName As String, sourceTableName As String, targetTableName As String) ' 테이블이 이미 존재하는 경우 삭제합니다. 오류 발생 시 GoTo CopyTable DoCmd.DeleteObject acTable, targetTableName CopyTable: DoCmd.TransferDatabase _ acImport, _ "ODBC Database", _ "ODBC;DSN=" + dsnName, _ acTable, _ sourceTableName, _ targetTableName 종료 함수

그런 다음 C# 코드는 다음과 같습니다.

객체 accessObject = null; try ( accessObject = Activator.CreateInstance(Type.GetTypeFromProgID("Access.Application"))); accessObject.GetType().InvokeMember("OpenCurrentDatabase", System.Reflection.BindingFlags.Default System.Reflection.BindingFlags.InvokeMethod, null, accessObject , 새 개체( "AccessDbase.mdb" )); accessObject.GetType().InvokeMember("Run", System.Reflection.BindingFlags.Default System.Reflection.BindingFlags.InvokeMethod, null, accessObject, 새 개체( "가져오기", "DSN 이름", "소스 테이블 이름", "대상 테이블 이름" )); accessObject.GetType().InvokeMember("CloseCurrentDatabase", System.Reflection.BindingFlags.Default System.Reflection.BindingFlags.InvokeMethod, null, accessObject, null); MessageBox.Show("복사 성공."); catch(예외 ex) ( string message = ex.Message; while (ex.InnerException != null) ( ex = ex.InnerException; message += "\r \ n----\r\n" + ex.Message; ) MessageBox.Show(message); ) 마지막으로 ( if (accessObject != null) ( System.Runtime.InteropServices.Marshal.ReleaseComObject(accessObject); 접근객체 = null; ) )

acImport 대신 acLink를 읽도록 VBA를 변경하면 연결이 허용됩니다.

댓글 수정

이에 대해서는 도움을 드릴 수 없지만, 한 MDB에서 다른 MDB로 테이블을 연결하는 VBScript가 있습니다.

StrLinkFile = "C:\Docs\Link.mdb" strAccessFile = "C:\Docs\LTD.mdb" "링크 만들기..." Set cn = CreateObject("ADODB.Connection") cn.Open "Provider=Microsoft. Jet.OLEDB.4.0;" & _ "데이터 소스=" & strAccessFile & ";" & _ "보안 정보 유지=False" Set adoCat = CreateObject("ADOX.Catalog") Set adoCat.ActiveConnection = cn Set adoTbl = CreateObject("ADOX.Table") Set adoTbl.ParentCatalog = adoCat adoTbl.Name = "LinkTable" adoTbl.properties("Jet OLEDB:Link Datasource") = strLinkFile adoTbl.properties("Jet OLEDB:Link Provider String") = "MS 액세스" adoTbl.properties("Jet OLEDB:원격 테이블 이름") = "Table1" adoTbl .properties("Jet OLEDB:Create Link") = True "테이블 컬렉션에 테이블을 추가합니다. " adoCat.Tables.Append adoTbl

아마도 다음 코드가 도움이 될 수 있습니다.

MS Access에 넣어야 하는 VB 함수는 매우 간단하며 기본적으로 TransferDatabase 메서드를 호출하여 DSN(원본 데이터베이스를 가리키는), 원본 테이블 이름 및 대상 테이블 이름을 전달합니다. 코드는 다음과 같습니다:

Public Function Import(dsnName As String, sourceTableName As String, targetTableName As String) ' 테이블이 이미 존재하는 경우 삭제합니다. 오류 발생 시 GoTo CopyTable DoCmd.DeleteObject acTable, targetTableName CopyTable: DoCmd.TransferDatabase _ acImport, _ "ODBC Database", _ "ODBC;DSN=" + dsnName, _ acTable, _ sourceTableName, _ targetTableName 종료 함수

그런 다음 C# 코드는 다음과 같습니다.

객체 accessObject = null; try ( accessObject = Activator.CreateInstance(Type.GetTypeFromProgID("Access.Application"))); accessObject.GetType().InvokeMember("OpenCurrentDatabase", System.Reflection.BindingFlags.Default System.Reflection.BindingFlags.InvokeMethod, null, accessObject , 새 개체( "AccessDbase.mdb" )); accessObject.GetType().InvokeMember("Run", System.Reflection.BindingFlags.Default System.Reflection.BindingFlags.InvokeMethod, null, accessObject, 새 개체( "가져오기", "DSN 이름", "소스 테이블 이름", "대상 테이블 이름" )); accessObject.GetType().InvokeMember("CloseCurrentDatabase", System.Reflection.BindingFlags.Default System.Reflection.BindingFlags.InvokeMethod, null, accessObject, null); MessageBox.Show("복사 성공."); catch(예외 ex) ( string message = ex.Message; while (ex.InnerException != null) ( ex = ex.InnerException; message += "\r \ n----\r\n" + ex.Message; ) MessageBox.Show(message); ) 마지막으로 ( if (accessObject != null) ( System.Runtime.InteropServices.Marshal.ReleaseComObject(accessObject); 접근객체 = null; ) )

acImport 대신 acLink를 읽도록 VBA를 변경하면 연결이 허용됩니다.

댓글 수정

C#에 대해서는 도움을 드릴 수 없지만, 한 MDB에서 다른 MDB로 테이블을 연결하는 VBScript가 있습니다.

StrLinkFile = "C:\Docs\Link.mdb" strAccessFile = "C:\Docs\LTD.mdb" "링크 만들기..." Set cn = CreateObject("ADODB.Connection") cn.Open "Provider=Microsoft. Jet.OLEDB.4.0;" & _ "데이터 소스=" & strAccessFile & ";" & _ "보안 정보 유지=False" Set adoCat = CreateObject("ADOX.Catalog") Set adoCat.ActiveConnection = cn Set adoTbl = CreateObject("ADOX.Table") Set adoTbl.ParentCatalog = adoCat adoTbl.Name = "LinkTable" adoTbl.properties("Jet OLEDB:Link Datasource") = strLinkFile adoTbl.properties("Jet OLEDB:Link Provider String") = "MS 액세스" adoTbl.properties("Jet OLEDB:원격 테이블 이름") = "Table1" adoTbl .properties("Jet OLEDB:Create Link") = True "테이블 컬렉션에 테이블을 추가합니다. " adoCat.Tables.Append adoTbl

블로그 독자 여러분, 좋은 하루 되세요. 오늘 기사에서는 다양한 방법으로 DBF 파일(테이블)에 액세스하는 방법에 대해 설명하겠습니다. FoxPro DBF 테이블에 액세스해야 할 때 이 문제가 발생했습니다. BDE를 시도했지만 작동하지 않았고 Paradox 테이블(dbf)에만 작동했습니다. 결국 TDBF 구성 요소를 시도하기로 결정했습니다. 역시 실패로 판명되었습니다. 나는 옛날 방식으로 ADO를 통해 연결을 시도하기로 결정했고 모든 것이 시계처럼 진행되었습니다.

따라서 이 기사에서는 세 가지 방법으로 DBF 테이블에 연결하는 방법을 설명합니다.

  • BDE 사용 - 이 옵션은 FoxPro 테이블에서는 작동하지 않았습니다.
  • ADO 사용 - FoxPro 테이블이 완벽하게 열림
  • TDBF 구성 요소를 사용하면 인코딩이 다르거나 dBase가 잘 있는 Paradox 테이블이 열립니다.

솔직히 말해서 저는 BDE를 전혀 참을 수 없지만 그런 테이블을 가지고 작업해야 했고 그 테이블에 연결하고 싶었던 첫 번째 옵션은 BDE를 사용하는 것이었습니다. 원칙적으로는 제게는 효과가 있었습니다. 즉, 나는 테이블 목록을 얻을 수 있었고 그것에 대해 만족했고 모든 것이 예상대로 진행될 것이라고 생각했지만 그렇지 않았습니다. 테이블에 연결하려고 할 때 다음과 같은 오류가 발생했습니다.

BDE 관리자 자체와 연결 시 모두 설치를 시도했지만 아무것도 작동하지 않았습니다. 하지만 이 방법을 사용하면 dBase와 같은 Paradox 테이블인 DBF에 완벽하게 연결할 수 있었습니다.

따라서 BDE 탭의 양식에 다음 구성 요소를 설치합니다.

  • TTable 또는 TQuery
  • 선택적으로 TDataSource 및 TDbGrid를 사용할 수 있습니다.

다음으로, TDataBase 컴포넌트의 DatabaseName 속성에서 데이터베이스 이름을 설정하고 - MyDB라고 썼으며, 동일한 컴포넌트의 DriverName 속성에서 드롭다운 목록에서 STANDART를 선택했습니다. 테이블에 로그인 및 비밀번호가 없으므로 LoginPromt 속성을 False로 설정했습니다. Params 속성에서 연결 매개변수를 설정하고 테이블 경로만 지정했습니다.

또한 TDataBase 컴포넌트를 두 번 클릭하고 필요한 연결을 구성하고 Connected 속성을 True로 설정하면 오류 없이 테이블에 연결될 수 있습니다. 그게 다입니다. DatabaseName 속성에 데이터베이스 이름, 즉 MyDB를 나타내는 TTable 구성 요소로 이동하겠습니다. TableType 속성에서 테이블 유형을 선택하고 ttDBase를 지정하고 TableName 속성에서 테이블 이름을 선택한 후 Active 속성을 True로 설정합니다. 그게 다입니다. 그것은 나에게 완벽하게 연결되고 테이블을 잘 표시합니다.

그러나 위에서 언급한 것처럼 FoxPro 테이블에서는 이 옵션이 작동하지 않았습니다. 따라서 문제를 해결하기 위해 ADO 기술을 사용하기로 결정했습니다. 그래서 ADO 탭에서 다음 구성 요소를 설치했습니다.

  • TADO연결
  • TADOQuery 또는 TADOTable
  • 선택적으로 TDataSource 및 TDBGrid를 설치할 수 있습니다.

다음으로 MS Access 데이터베이스에 대해 만든 연결을 생성하면 됩니다. 이는 Microsoft Visual FoxPro ODBC라는 다른 데이터 공급자를 선택한다는 점에서 다릅니다. 그게 다입니다. 그런 다음 인코딩과 테이블 경로를 나타냅니다. FoxPro 테이블인 경우 폴더에는 모든 테이블 목록이 포함된 파일(확장자 *.dbc)이 포함되어 있어야 합니다. 즉, TADOCOnnection 구성 요소의 연결 문자열은 다음과 같습니다.

TADOConnection 구성 요소를 TADOTable 또는 TADOQuery와 연결하고 필요한 테이블을 사용하여 작업합니다.

또 다른 옵션은 프로젝트에서 사용하는 TDBF 구성 요소를 사용하여 dbf 형식 테이블로 작업하는 것입니다. 솔직히 말해서 포기하고 싶습니다. 인코딩과 잘 작동합니다. 작업 방법은 말씀드리지 않고 예시로 링크만 남겨드리겠습니다.

DBF는 지난 세기 80년대에 등장하여 널리 사용되는 데이터 저장 형식입니다. 이 형식은 dBase DBMS 제품군에서 처음 사용되었습니다. dBase의 인기와 광범위한 사용으로 인해 dBase와 유사한 많은 소프트웨어 제품(총칭하여 xBase라고 함)이 만들어졌습니다. 형식이 상당히 오래되었음에도 불구하고 여전히 널리 사용됩니다. 이 문서에서는 1C:Enterprise에서 DBF로 작업하는 방법을 설명합니다.

1C:Enterprise에서는 특수 소프트웨어 개체인 xBase가 DBF 형식(버전 dBase III)의 파일 작업에 사용됩니다. 이 개체를 사용하면 일반적으로 문제가 발생하지 않습니다.

주목!

DBF 파일로 작업할 때 파일 이름은 제약 조건 8.3을 충족해야 한다는 점을 기억하세요.

주목!

xBase 개체는 클라이언트 측과 서버 측 모두에서 사용할 수 있습니다. 각각의 특정 문제를 해결할 때 클라이언트-서버 상호 작용을 통해 생각해야 합니다.

DBF 파일 읽기

DBF 파일에서 데이터 읽기는 여러 연속 단계로 수행됩니다.

  1. XBase 객체 생성
  2. 파일 열기
  3. 파일의 모든 라인을 순차적으로 반복하고 필드 값을 읽습니다.
  4. 파일을 닫는 중입니다.
DBP = 새로운 XBase; DBP. OpenFile("D:\MyFile.dbf" ); // 2단계. 파일 열기 진실주기 동안 // 3단계. 파일 줄을 반복합니다.보고서(DBF.NAME); DBP가 아닌 경우. 다음() 다음 // 다음 레코드의 위치 중단; endIf; 엔드사이클; DBP. 닫기파일(); // 4단계. 파일 닫기

파일 줄을 반복하기 위해 약간 수정된 알고리즘을 사용할 수 있습니다.

아직 DBF가 아닙니다. AtEnd() 루프 보고서 (DBF.이름); DBP. 다음(); 엔드사이클;

DBF 파일에 업로드

DBF 파일 업로드 단계:

  1. XBase 객체 생성
  2. 인코딩 지정(지정되지 않은 경우 ANSI 인코딩이 사용됨)
  3. 필드 설명
  4. 파일을 생성하십시오.
  5. 줄을 추가하고 채우는 루프;
  6. 파일을 닫는 중입니다.

예를 사용하여 이 프로세스를 살펴보겠습니다.

DBP = 새로운 XBase; // 1단계. XBase 객체 생성 DBP. 인코딩 = EncodingXBase. OEM; // 2단계. 인코딩 지정 DBP. 필드. Add("CODE" , "S" , 9 ); // 3단계. 필드 이름 및 유형에 대한 설명 DBP. 필드. Add("이름" , "S" , 40 ); DBP. CreateFile("D:\MyFile.dbf" ); // 4단계. 파일 생성선택 = 디렉토리. 명명법. 선택하다(); 안녕 선택. 다음() 루프 DBP. 추가하다(); // 줄 추가 DBP. 코드 = 샘플. 암호; // 필드 값을 입력합니다. DBP. 이름 = 선택. 이름; DBP. 쓰다();(); // 라인을 작성합니다. EndCycle; DBP. 파일 닫기

// 6단계. 파일 닫기

  • 인코딩을 지정할 때 다음 두 가지 값을 사용할 수 있는 XBase 인코딩 유형이 사용됩니다. ANSI
  • – Windows 형식; OEM

– DOS 형식.

구조를 설명할 때 새 필드를 추가하는 구문은 다음과 같습니다. (< Имя>, < Тип>, < Длина>, < Точность>)

추가하다

  • 다음 유형을 사용할 수 있습니다.
  • “N” – 숫자;
  • “S” – 문자열;
  • “D” – 날짜;
  • “L” – 부울;

“F” – “N” – 숫자와 유사합니다.

"N", "F" 및 "S" 필드 유형에는 필드 길이가 필요합니다.

인덱스 작업

인덱스 파일은 하나 이상의 인덱스에 대한 정보를 포함할 수 있는 DBF 파일과 함께 사용될 수 있습니다. 인덱스가 있으면 파일의 모든 행에 대한 순차 검색뿐만 아니라 검색을 사용할 수 있습니다.

  • 인덱스 파일을 생성할 때 다음을 지정해야 합니다.
  • 지수 목록

인덱스 파일을 저장할 경로(업로드 4단계)

인덱스 파일 생성 예: DBP. 인덱스. Add("INDCODE" , "CODE" ); DBP. 파일 생성

("D:\MyFile.dbf" , "D:\index.cdx" );

구조를 설명할 때 새 필드를 추가하는 구문은 다음과 같습니다. (< Имя>, < Выражение>, <Уникальность>, < Убывание>, < Фильтр >)

새 인덱스를 추가하는 구문은 다음과 같습니다.

  • DBF 파일에서 읽을 때 인덱스를 사용하려면 다음을 수행하십시오.
  • 인덱스 파일의 경로를 지정합니다(다운로드 2단계에서).

현재 인덱스를 설정합니다.

인덱스 파일 생성 예: 인덱스 파일을 사용하여 DBF 파일을 여는 예:;

주목!

. OpenFile("D:\MyFile.dbf" , "D:\index.cdx" ); DBP. 현재지수 = dbf. 인덱스. 인덱스코드

DBF 파일을 열 때 파일의 첫 번째 레코드에서 위치 지정이 발생합니다. 파일의 첫 번째 항목이 인덱스의 첫 번째 항목과 일치하지 않습니다. 이 때문에 인덱스를 사용할 때는 행을 순차적으로 탐색하기 전에 인덱스의 첫 번째 행에 위치해야 합니다. 이는 First() 메서드를 사용하여 수행할 수 있습니다. 예를 들면 다음과 같습니다.

DBP. 첫 번째();

  • 두 가지 기능 중 하나를 사용하여 검색할 수 있습니다. (< Ключ>, < Режим >) ;
  • 찾다< Режим >) .

키별 찾기(

  • «>=»;
  • «>»;
  • «<=»;
  • «<«.

두 함수의 결과로 Boolean 유형의 값이 반환됩니다(지정된 조건의 레코드가 발견되었는지 여부). 검색이 성공하면 현재 포인터가 찾은 행으로 설정됩니다. 다음 값 중 하나를 검색 모드로 사용할 수 있습니다.

DBP 예제를 사용하여 DBF 파일에서 검색하는 방법을 살펴보겠습니다. = 새로운 XBase; DBP. OpenFile("D:\MyFile.dbf" , "D:\index.cdx" );// DBF 파일을 열 때 추가 인덱스 파일을 지정합니다. DBP. 현재지수 = dbf. 인덱스. 인덱스코드; // Find 메서드를 사용하여 검색합니다. DBP라면. Find("000000003" , "=" ) 그런 다음 보고( + DBP.NAME); Else Report("찾을 수 없습니다."); endIf; // FindByKey 메서드를 사용하여 검색합니다. DBP. 열쇠. 코드 = "000000002" ; DBP라면. FindByKey("=" ) 그런 다음 보고( "발견되었습니다. 항목 이름: "+ DBP. 이름);();

Else Report("찾을 수 없습니다."); endIf; DBP. 파일 닫기

DBF 파일의 항목 삭제

인덱스 파일 생성 예: 레코드 삭제는 삭제() 메서드를 사용하여 수행됩니다.();

. 삭제 그러나 이 방법을 사용하면 기록이 파일에서 영구적으로 삭제되지 않고 삭제된 것으로 표시됩니다. 행을 반복할 때 삭제 표시된 레코드는 건너뜁니다. 삭제 표시된 항목을 포함하여 전체 파일을 크롤링하려면 속성을 True로 설정해야 합니다.표시삭제됨

인덱스 파일 생성 예: xBase 개체. RecordDeleted() 함수를 사용하면 레코드가 삭제 표시되었는지 여부를 확인할 수 있습니다. 삭제 표시를 제거하려면 Restore() 메서드를 사용하십시오.(); 엔드사이클;

. 디스플레이삭제 = 참; 아직 DBF가 아닙니다. AtEnd() 루프 If DBP. RecordDeleted() 그런 다음 DBP입니다. 복원하다(); endIf; DBP. 다음

인덱스 파일 생성 예: 표시된 항목을 직접 제거하려면 Shrink() 메서드를 사용합니다.();

. 압박 붕대

인덱스 파일 생성 예: 파일의 모든 항목을 직접 삭제해야 하는 경우 ClearFile() 메서드를 사용할 수 있습니다.();

. 클리어파일

ADO를 사용하여 DBF에서 로드

ADO 기술을 사용하여 DBF 파일을 작업할 수 있습니다. ADO 드라이버는 Windows 운영 체제에 포함되어 있으므로 추가로 설치할 필요가 없습니다.

ADO 기술을 사용하여 DBF 파일을 읽는 코드의 예를 살펴보겠습니다. 야단법석 = New COMObject("ADODB.Connection" );//COM 객체 생성 야단법석. 열려 있는("공급자=Microsoft.Jet.OLEDB.4.0; |데이터 원본=""D:\""; |확장 속성=DBASE III" ); DB = ADO. Execute("MyFile에서 *를 선택하세요." );// MyFile.DBF 파일에서 모든 레코드를 가져오도록 요청합니다. 안녕 BD. EOF= 0 사이클//DBF 파일 레코드를 반복합니다. Report(DB.Fields("이름").value);// 필드 값에 접근하는 예 DB. 이동다음();//다음 항목으로 이동

엔드사이클; 야단법석. 닫다();

  • 아래 예에서는 "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="D:\";Extended Properties=DBASE III" 연결 문자열을 사용합니다. 이 줄에서:
  • 공급자는 사용되는 드라이버입니다.
  • 데이터 원본 - DBF 파일이 있는 경로입니다. 경로는 디렉토리에 정확하게 지정됩니다. 파일 이름은 쿼리에서 테이블 이름으로 사용됩니다.

주목!

지정된 방법을 사용하여 읽을 때 기본 인코딩은 OEM입니다. 인코딩을 ANSI로 변경하려면 Windows 레지스트리에서 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\xBase\DataCodePage 매개 변수를 "ANSI"로 설정해야 합니다.



질문이 있으신가요?

오타 신고

편집자에게 전송될 텍스트: