Zum Inhalt springen

VB 6 - 2 dimensionaler dynamischer array


Empfohlene Beiträge

Geschrieben

ich habe einen dynamischen array als globale variable wie folgt deklariert:

Public BetriebAufgaben() As Variant

im programm "versuche" ich zu redimensionieren

Dim SQL As String

Dim i, k As Integer

On Error GoTo ReDimAuf1

SQL = "SELECT * FROM tbl_Texte WHERE ObjektNr = 'lst_Aufgaben';"

Dat_Aufgaben.DatabaseName = Datenbankname

Dat_Aufgaben.RecordSource = SQL

Dat_Aufgaben.Refresh

Dat_Aufgaben.Recordset.MoveLast

On Error GoTo ReDimAuf1

k = Dat_Aufgaben.Recordset.RecordCount

i = UBound(BetriebAufgaben, 1) + 1

ReDim Preserve BetriebAufgaben(i, k)

GoTo ExitSub

ReDimAuf1:

ReDim Preserve BetriebAufgaben(0, k)

ExitSub:

BetriebAufgaben(i, 0) = FG_AlleBetriebe.TextMatrix(FG_AlleBetriebe.Row, 0)

cmd_AufgabenZuweisen.Visible = True

aber immer in der rot markierten zeile springt er auf "ReDimAuf1"

bei einem eindimensionalen array ist das absolut kein problem... aber ich krieg das mit dem mehrdimensionalen array nicht gebacken den zu redimensionieren... kann mir wer helfen?? WO LIEGT MEIN FHELER???

danke

c ya

Thias78

Geschrieben
ich habe einen dynamischen array als globale variable wie folgt deklariert:

Public BetriebAufgaben() As Variant
im programm "versuche" ich zu redimensionieren

Dim SQL As String

Dim i, k As Integer


On Error GoTo ReDimAuf1


SQL = "SELECT * FROM tbl_Texte WHERE ObjektNr = 'lst_Aufgaben';"


Dat_Aufgaben.DatabaseName = Datenbankname

Dat_Aufgaben.RecordSource = SQL

Dat_Aufgaben.Refresh

Dat_Aufgaben.Recordset.MoveLast


On Error GoTo ReDimAuf1

    k = Dat_Aufgaben.Recordset.RecordCount

    i = UBound(BetriebAufgaben, 1) + 1

    [COLOR=Red]ReDim Preserve BetriebAufgaben(i, k)[/COLOR]

    GoTo ExitSub


ReDimAuf1:

    ReDim Preserve BetriebAufgaben(0, k)


ExitSub:

    BetriebAufgaben(i, 0) = FG_AlleBetriebe.TextMatrix(FG_AlleBetriebe.Row, 0)

    cmd_AufgabenZuweisen.Visible = True

aber immer in der rot markierten zeile springt er auf "ReDimAuf1"

bei einem eindimensionalen array ist das absolut kein problem... aber ich krieg das mit dem mehrdimensionalen array nicht gebacken den zu redimensionieren... kann mir wer helfen?? WO LIEGT MEIN FHELER???

danke

c ya

Thias78

nach so vielen jahren hier kennst du den Code Tag nicht? tse

das on error goto brauchst du nur 1 mal...

was steht denn in i un k zu diesem Zeitpunkt drin?

des weitern:

Dim i As Integer, k As Integer

;)

Geschrieben

das kommt ganz drauf an, wie oft ich die funktion aufrufe

und beim erstenmal ist

i = leer (da ubound() das bei der nicht initialisierten array varable zurückgibt)

k und in k steht die anzahl der in der datenbank enthaltenen datensätze einer bestimmten tabelle...

also kann ich nur sagen, dass k größer als null ist... aber nicht wie groß

das "on error goto " hab ich nur ienmal drin... war ein kopierfehler!!

Geschrieben
das kommt ganz drauf an, wie oft ich die funktion aufrufe

und beim erstenmal ist

i = leer (da ubound() das bei der nicht initialisierten array varable zurückgibt)

k und in k steht die anzahl der in der datenbank enthaltenen datensätze einer bestimmten tabelle...

also kann ich nur sagen, dass k größer als null ist... aber nicht wie groß

das "on error goto " hab ich nur ienmal drin... war ein kopierfehler!!

hast du die Variablendeklaration angepasst? sonst ist i kein Integer feld...

durchlauf doch einfach mal das Prog bis z8u dem Punkt, an dem er das Goto ausführt, obwohl er das nicht soll und schau in die Variablen was gerade drin steht

Geschrieben

ja hab ich... aber ich hab das ja nur so geschrieben, weil es mit dem UBound direkt auch nicht ging

beim 2 aufruf ist i = 1 und k = 6 (k ist immer 6, solange kein element hinzugefügt wird in der tabelle)

und beim 2. aufruf kippt er aus den latschen, da er ja in ein element des arrays schreiben will, das nicht existiert, da ich ja vorher nicht redimensionieren kann

Geschrieben

ich bin mir nicht ganz sicher, aber ich glaube, dass man mit Redim Preserve die Dimensionen nicht ändern darf, d.h. wenn zum bleistift ein 2-dimensionales array hast, kannst du mit Redim Preserve nicht einfach ein 3-dimensionales array draus machen. das geht glaub ich nur mit Redim, aber dabei geht halt der ganze inhalt verloren und das willst du wahrscheinlich nicht... naja ist aber nur eine Vermutung von mir... :)

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...