2017-09-11 3 views
1

그래서이 코드 기본적으로 StreamWriter를 개체에 SQL 쿼리에서 내 결과를 설정하고로 수출(1,2,3 ...) 내 DataReader가 결과

   Using FileObject As New FileStream(FileName, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None) 
        Using StreamWriterObj As New StreamWriter(FileObject) 
         connect.Open() 
         Using reader As SqlDataReader = command.ExecuteReader() 
          Dim FieldCount As Integer = reader.FieldCount - 1 
          Do While reader.Read() 
           StreamWriterObj.Write(reader.Item(0)) 
           For i = 1 To FieldCount 
            StreamWriterObj.Write(" @ ") 
            StreamWriterObj.Write(reader.Item(i)) 
           Next 
           StreamWriterObj.WriteLine() 
          Loop 
         End Using 
         connect.Close() 
        End Using 
       End Using 

에게 있습니다. txt 파일. 다음은 선택 쿼리 후 결과의 예 :

+---------------------------------------+ 
|    Results    | 
+---------------------------------------+ 
+          + 
| Document No.| # | col 3 | col 4 | 
+-------------+-------+--------+--------+ 
| 333456  | 0 | "value"| "value"| 
+-------------+-------+--------+--------+ 
| 333456  | 0 | "value"| "value"| 
+-------------+-------+--------+--------+ 
| 462345  | 0 | "value"| "value"| 
+-------------+-------+--------+--------+ 
| 585357  | 0 | "value"| "value"| 
+-------------+-------+--------+--------+ 

그래서 내 작업 방식으로 그것을 만들 것입니다 그것과 같이 표시됩니다 안에 내가, .txt 파일로 내보낼 때 :

+---------------------------------------+ 
|    Results    | 
+---------------------------------------+ 
+          + 
| Document No.| # | col 3 | col 4 | 
+-------------+-------+--------+--------+ 
| 333456  | 1 | "value"| "value"| 
+-------------+-------+--------+--------+ 
| 333456  | 2 | "value"| "value"| 
+-------------+-------+--------+--------+ 
| 333456  | 3 | "value"| "value"| 
+-------------+-------+--------+--------+ 
| 462345  | 1 | "value"| "value"| 
+-------------+-------+--------+--------+ 
| 585357  | 1 | "value"| "value"| 
+-------------+-------+--------+--------+ 
| 585357  | 2 | "value"| "value"| 
+-------------+-------+--------+--------+ 

또는 다른 말로하면 문서 번호에 따라 행을 (다음 번호로) 계산할 수 있습니다. (선택 쿼리는 문서 번호순으로 정렬됩니다.)

현명한 해결책은 StringBuilder를 사용하는 것이지만이 도움이 필요하다고 생각합니다.

+0

은'FieldCount'으로 I = 1은 변수에 문서 민을 얻을 때마다 그것을 변경의 경우, 시퀀스 변수를 증가시킵니다. 아마도 datatable을 채워서 다른 옵션을 제공하는 소스로 사용할 것입니다. [ask]를 읽고 [tour]를 가져 가십시오. – Plutonix

+0

1 단계 - 아직 수행하지 않은 경우 쿼리가 문서 번호로 결과를 주문하는지 확인하십시오. 2 단계 - vb에서 numberForThisDocument와 같은 이름의 변수를 만듭니다. 그런 다음 조회 결과를 루프 할 때이 변수에 적절한 값을 지정하고이를 출력에 포함 시키십시오. –

+0

나는 당신이 직접 질의를 해보기를 제안한다. 이것은 대부분의 데이터베이스에서 수행 할 수 있습니다. –

답변

0

ID가와 실제 SQL에서 그것을 할 감사 - 내부

WITH 
    q AS 
(select query) 
, 
sequenced as (
    SELECT 
    ROW_NUMBER() OVER (PARTITION BY [Document no. Column] ORDER BY [column name] 
) AS sequence_id, 
    * 
FROM 
    q 
) 
SELECT 
* 
FROM 
    sequenced 
+0

고마워요! 약간의 편집으로, 이것은 트릭을해야합니다. :) –

+0

도움이 된 것을 기쁘게 생각합니다 :) –