Thias78 Geschrieben 25. Mai 2004 Teilen Geschrieben 25. Mai 2004 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
-roTekuGeL- Geschrieben 25. Mai 2004 Teilen Geschrieben 25. Mai 2004 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Thias78 Geschrieben 25. Mai 2004 Autor Teilen Geschrieben 25. Mai 2004 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!! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
-roTekuGeL- Geschrieben 25. Mai 2004 Teilen Geschrieben 25. Mai 2004 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Thias78 Geschrieben 25. Mai 2004 Autor Teilen Geschrieben 25. Mai 2004 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hatsni Geschrieben 25. Mai 2004 Teilen Geschrieben 25. Mai 2004 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... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Mister A Geschrieben 26. Mai 2004 Teilen Geschrieben 26. Mai 2004 Stimmt. Das fällt mir auch jetzt grade auf. Man muss schon wissen wieviel Dimensionen so einarray hat, wenn man es deklariert. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.