0
MSFlexGrid는 ~ 3000,000 개의 셀에 도달 할 때마다이 30006 오류를 발생시킵니다.VB6에서 MSFlexGrid 오류 30006을 해결하는 방법
오류 정의 :
런타임 오류 '30006':
적 FlexGrid를 들어 메모리를 할당 할 수 없습니다
내 코드 샘플 : 내가 필요
Do While Not rs.EOF
With MSFlexGrid1
.Rows = .Rows + 1
.TextMatrix(i, 1) = rs.Fields("1") 's1
.TextMatrix(i, 2) = rs.Fields("2") 's2
.TextMatrix(i, 3) = rs.Fields("3") 'f1
.TextMatrix(i, 4) = rs.Fields("4") 'gr1
.TextMatrix(i, 5) = rs.Fields("5") 'gr2
.TextMatrix(i, 6) = rs.Fields("6") 'gr3
.TextMatrix(i, 7) = rs.Fields("7") 'gr4
.TextMatrix(i, 8) = rs.Fields("8") 'gr5
.TextMatrix(i, 9) = rs.Fields("9") 'gr6
.TextMatrix(i, 10) = rs.Fields("10") 'gr7
.TextMatrix(i, 11) = rs.Fields("11") 'gr8
.TextMatrix(i, 12) = rs.Fields("12") 'c1
.TextMatrix(i, 13) = rs.Fields("13") 'g1
.TextMatrix(i, 14) = rs.Fields("14") 's3
.TextMatrix(i, 15) = rs.Fields("15") 'f2
.CellAlignment = 4
.TopRow = .Rows - 1
.Refresh
End With
i = i + 1
rs.MoveNext
Loop
MSFlexGrid에서 최소 600,000 개의 셀을 사용하려면 어떻게해야합니까?
다른 컨트롤을 사용하면? 당신은 피할 수있는 유일한 방법은 적은 메모리를 사용하는 것입니다 메모리 한도에 도달했습니다. listview와 더 현대적인 그리드 컨트롤은 집안을 당신의 코드에 맡기는 가상 목록을 허용합니다. 즉, 데이터를 적게 표시하는 것이 일반적인 제안입니다. 사용자는 어떤 형태의 필터링이나 페이징없이 목록에서 600,000 개의 항목을 쉽게 사용할 수 없습니다. – Deanna
@Deanna 나는 실제로 트릭을 기다리고 있었다. 그것을 사용하는 사람이 아프다. 나는 이것을위한 나의 자신의 수색 막대기를 만들조차! 그것의 총 실험 그래서 나는 사용자에 대해 걱정하지 않는다. 그것의 더 많은 것, 당신은 당신의 스크린에 많은 양의 데이터를보고 싶습니까? 그게 내가 원하는 MSFlexGrid에 실패하면 반드시 일부 API를 사용하고 싶습니다. 하지만 API를 이해하는 데 많은 시간을 할애하고 싶지는 않습니다. 내 프로젝트를 계속 유지하기위한 쉬운 해결책이 필요해. 지루해져 쓰레기통에 맡겨야 해. –
더 쉬운 해결책은 없습니다. 당신은 그 통제의 한도에 도달했습니다. 적은 양의 데이터를 표시하거나 다른 컨트롤을 사용하십시오. – Deanna