2011-04-06 22 views
0

SQL Server 2008 R2 데이터베이스에 연결하는 VB6 프로그램에서 작업하고 있습니다. 과거에는 항상 MSFlexGrid 컨트롤을 사용하여 수동으로 채 웠습니다. 그러나 지금 나를 위해 돈을 지불하는 사람이 데이터 바운드 그리드를 대신 사용하기를 원합니다. MSHFlexGrid 컨트롤을 사용하게하려면 DAO가 아니라 ADO를 사용하고 있어야합니다. 그래서, 두 가지 질문이 있습니다 ...VB6 및 데이터 바인딩 MSHFlexGrid, 열 이동 및 채우기

먼저 MSHFlexGrid에서 열을 어떻게 움직입니까? 예를 들어, 세 번째 열을 격자의 여섯 번째 열로 표시하려면 간단한 단일 행을 사용하면됩니까?

두 번째로 믿거 나 말거나, 필자는 레코드 세트에서 데이터를 표시하는 것 외에는 그리드에서 아무것도하지 않아도됩니다. 그러나 이제는 다른 파일의 레코드를 참조하는 ID 번호 만 포함하는 필드가있는 레코드 세트가 있습니다. 예를 들어 고객의 이름이 들어있는 필드 대신 Customers 테이블의 레코드를 참조하는 ID 번호가 들어있는 필드 . 가장 쉬운 방법은 레코드 세트에서 고객 ID 번호를 표시하는 열 대신 고객 이름을 표시하는 것입니다. MSHFlexGrid 열에 sql 명령을 포함시킬 수있는 방법이 있다는 것을 읽은 것 같았습니다. 그렇다면 어떻게 해야할지 모르겠습니다. 가능한가요, 아니면 더 간단한 방법이 있습니까?

TIA,

케빈

답변

1

일반적으로 열 순서는 SELECT 문에 의해 처리됩니다.

당신은 과일 테이블에 FruitID 관련된 FruitID 외래 키가있는 파이 테이블을 말해봐 :

SELECT PieID AS ID, Pie, Fruit FROM Pies LEFT OUTER JOIN Fruits 
    ON Pies.FruitID = Fruits.FruitID 

이 3 개 항목 반환 ID, 파이, 그리고 과일의 순서를.

쿼리/표시 작업 이후의 이동 열은 거의 사용되지 않지만 예를 들어 ColPosition을 사용할 수 있습니다.

+0

FruitID 조회가 실패한 경우에도 파이의 * 모든 * 행을 검색하기 위해 여기 LEFT OUTER JOIN을 제안했습니다 (이 경우 Fruit에 대해 NULL을 반환 함). 사람들은 흔히이 대신 INNER JOIN을 사용하지만 레코드를 삭제할 위험이 있습니다 ... 그렇다고해도 그것이 내 의도 일 수 있습니다. – Bob77

+0

내 실수 - 레코드 세트의 데이터 소스를 지정하지 않았습니다. 빈 레코드 세트를 만든 다음 사용자가 여러 컨트롤 (텍스트 상자, 콤보 상자 등)에 입력 한 데이터로 채운 다음 테이블에 레코드 세트를 작성한 다음 레코드 세트를 표에 표시합니다. 레코드 세트를 만들려면 : rs.Open "Select * from Projects 1 = 2. 그래서 할 수있는 동안 *를 사용하는 대신이 문장의 필드를 지정하고 순서를 설정합니다. 그리드 필드의 일부에 ID 번호를 표시해야하는 경우 어떻게 수정해야합니까? – Kevin

1

와우! VB6 .... 미래로 돌아 가자! :-)

using the ColPosition Property을 이동할 수 있습니다.

이 문서에서는 보여줍니다 어떻게 수 설정 display hierarchical data.

에 그리드 당신은 주요 데이터와 동일한 행에 고객 이름을 표시하려면 해당 단지에 대한 적절한 SQL을 작성하여뿐만 아니라 행할 경우 데이터 소스. 그 문제에 대해서도 같은 방법으로 열 순서를 제어 할 수 있습니다.

이제 .Net으로 업그레이드하는 방법을 고려해보십시오. 농담하는 것 ..... 아니, 나는 아니야. 승인. 나 아마. :-)

+0

내 실수 - 레코드 세트의 데이터 소스를 지정하지 않았습니다. 빈 레코드 세트를 만든 다음 사용자가 여러 컨트롤 (텍스트 상자, 콤보 상자 등)에 입력 한 데이터로 채운 다음 테이블에 레코드 세트를 작성한 다음 레코드 세트를 표에 표시합니다. 레코드 세트를 만들려면 다음과 같이 사용하십시오. rs.Open "Select * from Projects where 1 = 2". 따라서 *를 사용하는 대신이 문에서 필드를 지정하고 순서를 설정하면 그리드 필드 중 일부에 ID 번호를 표시하는 데 여전히 어려움을 겪을 것입니다. 어떻게 그 문제를 해결해야합니까? – Kevin

+0

필드를 숨기시겠습니까? 당신도 그렇게 할 수 있습니다. ColIsVisible 속성을보십시오. 다음은 MSDN의 MSHFlexGrid에 대한 링크입니다. 그들은 모든 속성, 메서드 등에 대한 링크를 가지고 있습니다 .... http://msdn.microsoft.com/en-us/library/aa228851(VS.60).aspx – klabranche