dey: Access & ASP, inlist

Servus

Ich habe 1 Problem mit 2 Möglichen Lösungen.
Ich möchte mir Datensätze mit der Bedingung importa > 99 ausgeben lassen.

a) Wenn ich versuche importa als Zahl zu definieren funktioniert die Abfrage wunderbar aber das command "update..." akzeptiert keine leere Folge a'la "update events set importa = , day1 ='Sa..." mehr.
Der Wert hinter importa = kommt aus einer Variablen die einen Wert oder auch keinen enthalten kann

b) Wenn ich importa als Text definiere funktioniert ">" nicht mehr. Ich bräuchte ein sql äquivalent zu "inlist" (=VB)

Eine Lösung füe a) wär mir lieber!

bydey

  1. Hallö,

    ist denn dein "import"-Feld auch ein Integer-Feld "Zahl"? Und lässt du leere Eingabe zu? Du köntest auch die Variable vorher abfragen. Wenn nix drinsteht, setzt du einfach 0 rein. Access hat sich da etwas eigen :-)

    MfG, Kay

    1. Servus Kay

      Hallö,

      ist denn dein "import"-Feld auch ein Integer-Feld "Zahl"?

      Nein: long

      Und lässt du leere Eingabe zu?

      Ja: Eingabe erforderlich = nein

      Du köntest auch die Variable vorher abfragen. Wenn nix drinsteht, setzt du einfach 0 rein. Access hat sich da etwas eigen :-)

      Nein: Zwecks Übersichtlichkeit ist "" besser als 0. Ich zeige an anderer Stelle alle Werte von importa.

      bydey

      1. Hallo Bydey,

        "" ist eine Zeichenkette und passt nicht in ein Long-Feld (nur Zahlen)!
        Wie schon gesagt: Ich würd' einfach 'ne 0 reinsetzen und bei der Aussage kannst du die 0-Felder ja wegfiltern :-)

        MfG, Kay

        1. Servus Kay

          Hallo Bydey,

          Das ist nicht der Name sondern die Verabschiedung: BYe bye DEY...

          "" ist eine Zeichenkette und passt nicht in ein Long-Feld (nur Zahlen)!

          Ok mein Fehler: ich habe das "" nur zur visualisierung benutzt. An der Stelle steht einfach nix oder NULL oder nada
          Das ist die ausgabe mit response.write:"update events set importa = , day1 ='Sa..."
          und siehe da "= " ein nix

          Wie schon gesagt: Ich würd' einfach 'ne 0 reinsetzen und bei der Aussage kannst du die 0-Felder ja wegfiltern :-)

          Möglich aber schwer hoplerig

          MfG, Kay

          bydey

  2. Servus

    Mir ist grad ne dritte Lösung eingefallen:

    c) ein select in dem ich via format importa von text nach zahl wandel und vergleichen lasse:
    select importa, format(importa,????????) as z_importa from table where z_importa > 99

    Könnte mir jemand den format(importa,????????) richtig ziehen. Ich glaube ich suche sowas wie int() oder so.

    Ich habe 1 Problem mit 2 Möglichen Lösungen.
    Ich möchte mir Datensätze mit der Bedingung importa > 99 ausgeben lassen.

    a) Wenn ich versuche importa als Zahl zu definieren funktioniert die Abfrage wunderbar aber das command "update..." akzeptiert keine leere Folge a'la "update events set importa = , day1 ='Sa..." mehr.
    Der Wert hinter importa = kommt aus einer Variablen die einen Wert oder auch keinen enthalten kann

    b) Wenn ich importa als Text definiere funktioniert ">" nicht mehr. Ich bräuchte ein sql äquivalent zu "inlist" (=VB)

    Eine Lösung füe a) wär mir lieber!

    bydey

  3. Hi, hallo

    "Eingabe erforderlich" ist nicht gleichbedeutend mit "NULL -Werte zugelassen"

    Du musst dich hier wirklich entscheiden, ob du ne "0" beim Updaten reinschreibst und diese dann bei einer späteren Ausgabe maskierst oder ob du mit Char-Werten arbeitest und in SQL mit den nativen Konvertierungsfunktionen deines DBMS werkelst, dann kannst du auch > anwenden. Vorausgesetzt dein DBMS unterstützt soetwas.

    Tschau, tschüß,
    Frank

    1. Servus Frank

      OK, Lösung a) ist also nicht.
      Wie sieht es mit b) und c) aus?

      bydey

      1. Hi, hallo

        ja, b und c zusammen, nur, daß du aus "" keine Zahl machen kannst.

        Die genaue Konvertierung sollte dir dein DBMS sagen können: CLng() o.ä.
        aber wie gesagt, CLng("") führt zu "type mismatch"

        Tschau, tschüß,
        Frank

        1. Servus

          Von Blindheit geschlagen: man sollte mir den Besuch des Forum für eine Woche verbieten, so als Strafe!

          Das Problem war: ich möchte Einträge von 1 bis x und von 100 bis x+101 von einander unterscheiden:
          1. Vergleich soll 1 und 101 erkennen = select case & case "1","101"
          2. Abfrage soll alle werte grösser 99 filtern.
          Das ergab Probleme mit Int, > und NULL
          Die Lösung ist:
          Meine Einträge lauten nun 1 - x und n0 - nx
          1. Vergleich soll 1 und n1 erkennen = select case & case "1","n1"
          2. Abfrage soll alle werte mit n filtern = where importa like 'n%'.

          bydey