Access 데이터베이스 (* .mdb)를 사용하는 응용 프로그램을 작성하고 싶습니다. mdb에 연결하는 방법과 SQL 문을 사용하는 방법을 알고 있습니다. 내 문제는 쿼리의 결과를 TListView에 넣고 싶다는 것입니다. 당신의 데이터 그리드를 필요로하는 경우, 당신이 할 수있는 -델파이 및 액세스 작업
는 모든 정보/링크/책 :
Access 데이터베이스 (* .mdb)를 사용하는 응용 프로그램을 작성하고 싶습니다. mdb에 연결하는 방법과 SQL 문을 사용하는 방법을 알고 있습니다. 내 문제는 쿼리의 결과를 TListView에 넣고 싶다는 것입니다. 당신의 데이터 그리드를 필요로하는 경우, 당신이 할 수있는 -델파이 및 액세스 작업
는 모든 정보/링크/책 :
당신의 결과를 당긴 다음 (예) 다음 절차에 전달 :
Query.First;
While not Query.EOF do
begin
StrObj := tStringList.create;
StrObj.Add(Query.FieldByname('id').asString);
ListView.AddItem(Query.FieldByName('Title').AsString,StrObj);
Query.Next;
end;
이것은 필드 이름 타이틀로 명명 된 노드 목록보기를로드하고, 각 노드가 포함 된 TStringList를 포함됩니다 어떤 각 노드에 대해 저장하려는 데이터 개인적으로 저는 이것을 확장하고 tStringList가 아닌 custom holder 객체를 사용합니다. 그러나 이것은 단지 예일뿐입니다.
이 루프 전에 Query.First를 호출해야합니다 ... –
뷰 TListView는 데이터 인식 구성 요소가 아닙니다, 그리고 (AFAIK)는 VCL TDBListView이없는 을 환영합니다 TDBGrid에 바인딩하거나 빠른 Google에서 찾을 수있는 TDBListView 세 번째 파트를 사용하십시오.
테이블에서 데이터를 읽고 ListView에 삽입 할 수 있다고 생각합니다. –
예. 그렇게 할 수 있습니다.그러나 Delphi는 원하는 데이터베이스 테이블이나 쿼리에 액세스 할 수있는 데이터 인식 컨트롤을 제공합니다. –
@ Remus, Gamecat이 맞습니다. 물론 데이터 셋을 반복하고, 열 구조를 매핑하는 객체 목록을 만든 다음 목록의 각 항목에 대한 객체 속성을 listview에 바인딩하여 listview를 채울 수 있습니다. 이것이 당신이 관심을 가지고있는 접근입니까? 이 접근 방식을 선호한다면 tiOPF 또는 이와 동등한 것을 사용해야한다. –
각 레코드를 TListView에 추가 할 수 있습니다. 레코드를 반복하면서 필드의 내용을 필요한 컨트롤에 넣기 만하면됩니다.
그러나 Delphi는 데이터 인식 컨트롤을 제공합니다. 그것은 데이터베이스 연결을 처리합니다. 대부분의 응용 프로그램을 위해서는 이것으로 충분합니다.
데이터베이스와 함께 작동하는 VirtualTreeView의 구현이 있습니다. 여기에 one link이 있으며 여기에 VirtualTreeView web site이 있습니다.
TreeView 및 ListView는 다른 컨트롤입니다. –
나는 그것을 알고 있었다. Mustang Peak Software @ http://www.mustangpeak.net/의 Virtual ListView 구현이 있습니다. – Mihaela
연결되지 않은 데이터 집합을 나타내는 데 ListView를 사용하면 Delphi 데이터베이스 응용 프로그램에서 가장 좋아하는 디자인 패턴입니다. ListView 컨트롤은 vsReport가 행 및 열 (다른 데이터는 vsList, vsIcon 및 vsLargeIcon)과 함께 데이터 테이블처럼 보이는 여러 가지 표시 형식을 제공합니다.
"항목"(적어도 vsReport가 표시 스타일 일 때 행에 매핑되는)을 만들려면 ListView의 Items 컬렉션에서 AddItem()을 호출하십시오. AddItem은 TListItem 형식의 개체를 반환합니다. vsReport에서 설명이되는 항목 (vsList, vsIcon 및 vsLargeIcon 스타일) 및 "table"의 첫 번째 열에 캡션을 지정할 수 있습니다. 목록 항목에는 SubItems라는 TStringList 속성도 있습니다. SubItems에 추가 된 각 문자열은 vsReport 모드의 다른 열에 대한 데이터를 제공합니다 (다른 모드에서는 SubItem이 무시됩니다).
마지막으로 정수 기본 키 값을 원본 데이터베이스 레코드에 다시 연결하려면 TListItem의 데이터 멤버를 사용하여이 작업을 수행 할 수 있습니다. 이것은 항목과 관련된 객체에 대한 포인터이지만 정수를 캐스팅하고 멀리 저장할 수 있습니다.
그래서, 예를 들면 :
이 당신에게 당신이 사용자가 목록보기에서 선택 어떤 기록을 찾을 수 있도록 기본 키 값과 함께, DS의 데이터를 포함하는 목록보기를 제공DS := TSomeKindOfDataSet.Create();
try
//Set up and open DS.
while not DS.eof do begin
with ListView.Items.Add() do begin
//establish three columns for vsReport display
Caption := DS.FieldByName('DescriptiveField').AsString;
SubItems.Add(DS.FieldByname('AnotherColumn').AsString);
SubItems.Add(DS.FieldByname('YetAnotherColumn').AsString);
//Save the record's PK value
Data := Pointer(DS.FieldByname('PKColumn').AsInteger);
end;
DS.Next;
end;
finally
DS.Free;
end;
. 사용자가 목록보기로 작업하는 동안 DS가 닫히고 처리되므로 데이터베이스에 대한 지속적인 요구가 없습니다.
ms 액세스 또는 Jet/ACE와 아무런 관련이 없으므로 ms 액세스 태그와 함께 유용한 정보는 없습니다. –
MS 월드 사용 SQL Server Express 대신에 smoehow "STEROIDS에 대한 액세스"가 있습니다. 무료입니다. – LaBracca