2017-12-13 8 views
1

이제 Crystal 보고서를 사용하여 판매 세부 정보를 표시하고 있습니다. adodb 연결과 데이터 세트를 사용하여 Crystal Reports의 데이터를 동적으로 채 웁니다.vb.net을 사용하여 Crystal Reports 데이터 정렬

내 출력 좋아는

Inv.No  Vendor Salevalue Tax Total 

    R1   xxx  10000 100 10100 
    R2   zzz  1000  10 1010 
    R3   vvv  2500  50 2550 
    R10   yyy  15000 500 15500 

는 사실 내가 Inv.No 현명 내 보고서에 정렬 옵션을 사용, 형식,

Inv.No  Vendor Salevalue Tax Total 

R1   xxx  10000 100 10100 
R10   yyy  15000 500 15500 
R2   zzz  1000  10 1010 
R3   vvv  2500  50 2550 

예상 출력이 표시됩니다.

+0

는 SQL에서 데이터를 정렬/당신에게 잘 필터링 있습니까? 그렇다면 나는 당신을 위해 대답합니다. – Manjuboyz

답변

0

만약 내가 당신의 위치에 있다면, Crystal 보고서에서 대신 SQL을 통해이를 수행 할 것이고 이것은 필자에게 필요한 정확한 정렬 순서를 줄 것이다. 나중에 필자는 동일한 데이터를 Crystal Reports 보고서로 이동하여 열 값을 표시합니다.

select 
CAST(SUBSTRING(yourColName, PATINDEX('%[0-9]%', yourColName), 
LEN(yourColName)) AS INT) RL_Num 
FROM TableName 
ORDER BY RL_Num 

이렇게하면 Crystal 보고서에서 SQL로 출력됩니다.

enter image description here

0

"Inv.No"열이 문자열 형식이며 문자열 정렬 방식이므로 정렬이 "올바른"것으로 보입니다. "Inv.No"라는 숫자 값만 가진 백그라운드 열을 가질 수 있으며 그 값을 기준으로 정렬 할 수 있습니다. 두 번째 미만 우아한 해결책은이 숫자처럼 정렬 있어요하지만 난 그것을 권하고 싶지 않다 있도록 값을

Right("    " & {Inv.No},15) 

이있는 필드를 기준으로 정렬하는 것입니다.

0

Inv. No 열에는 문자열 텍스트가 포함되어 있으므로 알파벳순으로 열을 정렬합니다.이 열은 R1과 R2 사이에 R10을 배치합니다. 이 문제를 해결하고 수치상으로 정렬하려면 숫자 데이터 만 포함하는 새로운 데이터 열을 만들어야합니다.

데이터가 항상 1 문자 다음에 숫자 이외의 형식으로 일관되면 다음 공식을 사용하는 수식 필드를 사용하여 숫자 데이터를 캡처 한 다음이 수식 필드를 사용하여 레코드를 정렬 할 수 있습니다.

ToNumber(Mid ({Table.Inv_No}, 2)); 

그러나 데이터가 숫자가 아닐 가능성이있는 경우 오류 만 발생합니다.

이 문제를 해결하는 가장 좋은 방법은 VB.NET 또는 SQL에서 데이터 소스를 편집하여 숫자 열을 포함하여 정렬을 제어하는 ​​것입니다. 수식 접근법은 대타로 작동 할 수 있지만 인보이스 번호의 구조가 변경되면 수식과 충돌하는 경우 보고서가 손상 될 수 있습니다.

0

다음 공식은 R. 맥밀런의 대답에서와 거의 동일하지만, 약간의 오류가 확인과 보고서는 송장 번호가 비어 있거나 다른 형식으로 경우에도 중단되지 않습니다.

If Not IsNull({yourTable.InvNo}) Then 
    If IsNumeric(Replace({yourTable.InvNo}, "R","")) Then 
     ToNumber(Replace({yourTable.InvNo}, "R","")) 
    Else 
     -1 
Else 
    -1 

(다른 형식으로 송장 상단에 표시됩니다.)