[VB]Lege records in een array wissen

Pagina: 1
Acties:

  • Aphelion
  • Registratie: Januari 2002
  • Laatst online: 19-07 19:19
Het probleem:
Ik heb een array gevuld met gegevens. Maar er zitten veel lege velden in. Ik wil dus een nieuwe array maken met alleen records waarbij de kolommen 2, 3 en 4 NIET leeg zijn. Ik heb verschillende code's gebruikt maar het gene dat het dichts in de buurt kwam was:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
intCounter2 = 0
For intCounter = 0 To intRow
ReDim Preserve arrDataSmall(4, intCounter2)
    If IsNull(arrDataLarge(1, intCounter)) = True Then intToevoegen = intToevoegen + 1
    If IsNull(arrDataLarge(2, intCounter)) = True Then intToevoegen = intToevoegen + 10
    If IsNull(arrDataLarge(3, intCounter)) = True Then intToevoegen = intToevoegen + 100
    If Not intToevoegen = 111 Then
        intCounter2 = intCounter2 + 1
        arrDataSmall(0, intCounter) = arrDataLarge(0, intCounter)
        arrDataSmall(1, intCounter) = arrDataLarge(1, intCounter)
        arrDataSmall(2, intCounter) = arrDataLarge(2, intCounter)
        arrDataSmall(3, intCounter) = arrDataLarge(3, intCounter)
    End If
Next intCounter

Ik kom er echter niet uit, omdat sommige velden een 'empty' geven, andere een 'null'.. Wie weet hoe ik dit moet aanpakken?

/edit
Heb de code aangepast dat hij per veld kijkt en niet dat de eerste leeg is ...

[ Voor 45% gewijzigd door Aphelion op 23-10-2003 15:10 ]

Feeling lonely and content at the same time, I believe, is a rare kind of happiness


  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
je praat over een recordset, zou je het filter wat je hier wilt uitvoeren dan niet gewoon in je dbase query uitvoeren :?

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • Aphelion
  • Registratie: Januari 2002
  • Laatst online: 19-07 19:19
FvKnijff schreef op 23 October 2003 @ 14:19:
je praat over een recordset, zou je het filter wat je hier wilt uitvoeren dan niet gewoon in je dbase query uitvoeren :?
Het is helaas echt niet mogelijk een query uit te voeren. Ik mag slechts de grote array gebruiken om een kleinere te maken :(

Feeling lonely and content at the same time, I believe, is a rare kind of happiness


  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 01-04 13:18
Visual Basic:
1
If IsNull(arrDataLarge(1, intCounter)) = False Or IsEmpty(arrDatalarge(1,intCounter) Then


Kan het zo niet dan?

Of
Visual Basic:
1
If Len(arrDataLarge(1, intCounter)) = 0 Then

[ Voor 22% gewijzigd door Phenomenon op 23-10-2003 14:43 ]


  • Aphelion
  • Registratie: Januari 2002
  • Laatst online: 19-07 19:19
Voor de search de oplossing van mijn 'stomme' fout:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
   Dim blnOriginal As Boolean
    Dim blnGenerate As Boolean
    Dim blnCompare As Boolean
    
    blnOriginal = HasValue(arrDataLarge(1, intCounter))
    blnGenerate = HasValue(arrDataLarge(2, intCounter))
    blnCompare = HasValue(arrDataLarge(3, intCounter))

    If blnOriginal = False And blnGenerate = False And blnCompare = False Then
        'Geen waardes, sla de record over
    Else
        'Er zijn waardes, maak de record
        ReDim Preserve arrDataSmall(4, intCounter2)
        arrDataSmall(0, intCounter2) = arrDataLarge(0, intCounter)
        arrDataSmall(1, intCounter2) = arrDataLarge(1, intCounter)
        arrDataSmall(2, intCounter2) = arrDataLarge(2, intCounter)
        arrDataSmall(3, intCounter2) = arrDataLarge(3, intCounter)
        intCounter2 = intCounter2 + 1
    End If
Next intCounter


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Public Function HasValue(strValue) As Boolean
HasValue = True
If IsNull(strValue) = True Then
    HasValue = False
    Exit Function
End If
If IsEmpty(strValue) = True Then
    HasValue = False
    Exit Function
End If
If strValue = "" Then
    HasValue = False
    Exit Function
End If
End Function

Feeling lonely and content at the same time, I believe, is a rare kind of happiness


  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 01-04 13:18
Ik vind het een beetje ranzig moet ik zeggen. Waarom gebruik je niet gewoon len?

Verwijderd

Is dit niet beter?

HasValue = not (IsNull(strValue) or IsEmpty(strValue) or "")

  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 01-04 13:18
Visual Basic:
1
2
3
4
5
6
If Len(arrDataLarge(1, intCounter)) <> 0 AND Len(arrDataLarge(2, intCounter)) <> 0 AND Len(arrDataLarge(3, intCounter)) <>  0 Then
        arrDataSmall(0, intCounter) = arrDataLarge(0, intCounter)
        arrDataSmall(1, intCounter) = arrDataLarge(1, intCounter)
        arrDataSmall(2, intCounter) = arrDataLarge(2, intCounter)
        arrDataSmall(3, intCounter) = arrDataLarge(3, intCounter)
End If


Dit lijkt mij beter.
Pagina: 1