Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

VB 6 - 2 dimensionaler dynamischer array

Empfohlene Antworten

Veröffentlicht

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

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

;)

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!!

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

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

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... :)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.