Hoscha: "split" scheint bei großen Strings nicht zu funktionieren ??

Guten Morgen,

Aus einer DB-Abfrage (ja aus DER Abfrage, wegen der ich nun fast jeden Tag eure Hilfe in Anspruch nehme. Danke nocheinmal dafür)
bekomme ich über ein Formular etwas an ein ASP-Skript geschickt.

Das trenne ich dann nach carriage return und Linefeed mit folgendem Befehl auf:
results = split(request.form("result"), chr(13) & chr(10))

Kann es sein, dass dieser Split-Befehl bei zu großen Arrays halt macht?
Meine SQL-Abfrage, die ich an ein nicht zu änderndes Perl-Skript schicke, holt mindestens 600 Einträge mit gut 19 Columns aus einer DB und sendet diese dann an mein ASP-Skript.

Vielen Dank,
Holger

  1. Hallo,

    Kann es sein, dass dieser Split-Befehl bei zu großen Arrays halt macht?

    Wär mir nicht bekannt, aber das sieht mir seltsam aus:

    results = split(request.form("result"), chr(13) & chr(10))

    ^^^^^^^^^^^^^^^^^

    Versuch mal statt dessen results = split(request.form("result"), VbCrLF)

    Ist ein Schuss ins Blaue, ich kann Dir keinen wirklichen Grund dafür nennen warum mir das andere seltsam erschien.

    Grüße,

    Utz

    1. Hallo Utz,

      Wär mir nicht bekannt, aber das sieht mir seltsam aus:

      results = split(request.form("result"), chr(13) & chr(10))
                                                 ^^^^^^^^^^^^^^^^^

      Das sind die ASCII-Bezeichnungen für carriage return und Linefeed.

      Der Punkt ist, dass alles auch bei einer nicht ganz so umfrangreichen DB-Abfrage funktioniert hat.
      Nocheinmal zur Erläuterung: im array results stehen bei der umfangreichen Abfrage, die 600 Datensätze zurückgibt, auch 600 Elemente (das array ist hierbei eindimensional).
      Hole ich mir nur 15 Reihen aus der DB, werden die Datensätze korrekt in results abgelegt.

      Vielleicht hat jemand schon ähnliche Erfahrungen gemacht.

      Gruß,
      Holger

      1. Hallo Holger

        Nocheinmal zur Erläuterung: im array results stehen bei der umfangreichen Abfrage, die 600 Datensätze zurückgibt, auch 600 Elemente (das array ist hierbei eindimensional).
        Hole ich mir nur 15 Reihen aus der DB, werden die Datensätze korrekt in results abgelegt.

        Vielleicht läufst du in ein Timeout? Setze dieses doch mal hoch.

        MfG & HtH

        Tom2

        --
        "Experience is something you don't get until just after you need it."
         by Steven Wright
        1. Hi Tom2,
          bei einem Timeout erscheint auch die entsprechende Meldung. Das Timeout wurde ausreichend hoch angesetzt.

          Die Fehlermeldung, die ich erhalte, lautet:
          error '80020009'
          Exception occurred.

          1. Hallo,

            Die Fehlermeldung, die ich erhalte, lautet:
            error '80020009'
            Exception occurred.

            Was darauf hinweist, dass ein unbehandelter Fehler in einem eingebundenen Objekt aufgetreten ist, was wiederum gar nichts mit split oder anderem, was direkt in ASP liefe, zu tun hat. Google mal nach der Fehlermeldung, da gibt's ein paar Seiten zu.

            Grüße,

            Utz

            PS: Wäre hilfreich gewesen wenn Du die Fehlermeldung im Ursprungsposting gleich mitgeliefert hättest.

            1. okay. werd ich machen.
              Die Fehlermeldung habe ich erst aus dem Skript "herauskitzeln" müssen, indem die "on error..."Anweisungen auskommentiert habe.

      2. Hallo,

        results = split(request.form("result"), chr(13) & chr(10))
                                                   ^^^^^^^^^^^^^^^^^
        Das sind die ASCII-Bezeichnungen für carriage return und Linefeed.

        Danke, das wusste ich aber schon :-) VbCrLF ist die Konstante für chr(13) & chr(10) und hat den Vorteil, dass es nicht erst zusammengesetzt werden muss. Ich wüsste zwar ehrlich gesagt nicht, warum die Notation chr(13) & chr(10) syntaktisch falsch sein sollte, kenne aber andere Stellen, wo syntaktisch ähnliches und ähnlich korrektes einfach nicht geht - man muss die Zusammensetzung auslagern, dann geht's. Insofern würde ich an Deiner Stelle zuerst einfach mal schnell probieren, ob's mit VbCrLF statt chr(13) & chr(10) nicht einfach schon geht. Wie gesagt: keinerlei Garantie dafür, dass es was bringt. Andererseits: höchstens 10 Sekunden Testaufwand.

        Grüße,

        Utz