Announcement

Collapse
No announcement yet.

ACCESS Abfrage in Schleife?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ACCESS Abfrage in Schleife?

    Hallo!
    Ich habe hier ein altes Datenbank in ACCESS, welche immer noch gepflegt wird, und muss eine Abfrage erstellen.

    Daten sind in form:

    1; Typ1; Wert1; Preis1; Wert2; Preis2; Wert3; Preis3; Wert4; Preis4; Wert5; Preis5
    2; Typ2; Wert1; Preis1; Wert2; Preis2; Wert3; Preis3; Wert4; Preis4; Wert5; Preis5
    3; Typ3; Wert1; Preis1; Wert2; Preis2; Wert3; Preis3; Wert4; Preis4; Wert5; Preis5
    ...
    (in jeder Zeile gibt es ein Artikel mit verschiedenen Ausführungen (Wert) und Preis)
    Ich muss aber für jedes Artikel mehrere Zeilen rauskriegen - für jede Wert.

    Wenn Wert gleich '0' ist - es soll nichts ausgegeben werden
    Dass heisst: Wie soll ich Abfrage gestalten, damit ich folgendes kriege:

    Typ1; Wert1; Preis1
    Typ1; Wert2; Preis2
    Typ1; Wert3; Preis3
    Typ2; Wert1; Preis1
    Typ2; Wert2; Preis2
    Typ2; Wert3; Preis3
    Typ2; Wert4; Preis4
    Typ3; Wert1; Preis1
    Typ3; Wert2; Preis2
    usw.


    Ich programmiere auch in VB.NET. - Vielleich eine einfache Lösung mit Hilfe von .NET möglich?

    Vielen Dank
    viktor

  • #2
    Hallo Viktor,

    Schleifen und Abfragen; eine Kombination die man besser nie verwenden sollte, insbesondere wenn man sie nicht braucht.

    Du kannst mehrere gleiche Abfragen über UNION (ALL) zu einer verbinden, das bekommt auch Access hin:
    [highlight=SQL]SELECT Typ1 AS Typ, Wert1 AS Wert, Preis1 AS Preis
    FROM Tabelle
    WHERE Wert1 <> 0

    UNION ALL

    SELECT Typ1, Wert2, Preis2
    FROM Tabelle
    WHERE Wert2 <> 0

    UNION ALL

    ... usw
    [/highlight]
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment


    • #3
      Danke, habe ich schon selber rausgefunden dank Wikibook "Einführung in SQL"
      Trotzdem vielen Dank

      Nur eine Frage - was bewirkt parameter 'ALL'?
      Ich habe es ohne ALL gemacht - funktioniert trotzdem

      viktor
      Zuletzt editiert von deavik; 06.04.2010, 07:52.

      Comment


      • #4
        Ein Union ohne ALL filtert Dubletten aus den Ergebnissen der einzelnen Abfragen heraus; z.B. sinnvoll wenn Du auf überlappende Bereiche filterst, Du die Datensätze aber nicht doppelt im Ergebnis haben willst.
        Das Dublettenfiltern verursacht aber automatisch auch immer eine Sortierung, die sehr teuer (langsam) ist.
        Olaf Helper

        <Blog> <Xing>
        * cogito ergo sum * errare humanum est * quote erat demonstrandum *
        Wenn ich denke, ist das ein Fehler und das beweise ich täglich

        Comment


        • #5
          Alles klar.

          Eine andere Frage.
          Eventuell möchte ich Datenbank von ACCESS nach MSSQL migrieren (exportieren).
          Problem ist - Datenbank ist erstellt mit einer alten Version von ACCESS (wahrscheinlich 97). Ich brauche natürlich alle Beziehungen zwischen Tabellen zu sehen um zu analysieren, aber die sehe ich nicht. Mit Version 2002 werden Beziehungen nicht angezeigt. mit einer noch neuere Version von ACCESS auch nicht.
          Wie komme ich überhaupt zu Beziehungen?

          Comment


          • #6
            Wenn Du keine "Beziehungen" zu sehen bekommst, liegt es wohl daran, das sie nie angelegt wurden.
            Die Beziehungen muss mal sich in MS Access selbst pinseln, das geht über Menü "Extras" => "Beziehungen"
            Olaf Helper

            <Blog> <Xing>
            * cogito ergo sum * errare humanum est * quote erat demonstrandum *
            Wenn ich denke, ist das ein Fehler und das beweise ich täglich

            Comment


            • #7
              Alles klar, muss ich AnwenderProgramm untersuchen.

              und noch eine Frage:
              ich versuche mit

              SELECT Name || ', ' || Vorname from Mitarbeiter;
              oder: SELECT Name + ', ' + Vorname from Mitarbeiter; (Beispiel bei WIKIBOOK )

              zwei daten zu verknüpfen. In meinem Fall Name und Vorname sind Zahlen, keine Strings!

              SQL sagt mit allerdings: verschiedene Datentypen in Kriterienausdruck unverträglich.
              Wie kann ich beide Werte zuerst ins String konvertieren um dann die zusammen auszugeben?
              Beispiel: in der Tabelle sind Zollgrössen vom Rad Breite und Durchmesser einzeln.
              ich soll die so ausgeben: 22 X 10, 19 X 8.5 usw.
              MfG
              viktor
              Zuletzt editiert von deavik; 06.04.2010, 16:08.

              Comment


              • #8
                In Access geht es mit &, um Werte zu Konkatenieren, wobei Zahlen damit schon automatisch in String gewandelt werden. Ansonsten könntest Du mit CStr konvertieren.

                SELECT Feld1 & ' x ' & Feld2
                FROM ...
                Olaf Helper

                <Blog> <Xing>
                * cogito ergo sum * errare humanum est * quote erat demonstrandum *
                Wenn ich denke, ist das ein Fehler und das beweise ich täglich

                Comment


                • #9
                  Hallo!

                  Einwandfrei.

                  Ich nutze zum Abfragen erstellen MS Visual Studio Express. Hier war Probleme - mit dem Abfrage SELECT Feld1 & ' x ' & Feld2 stürzt VS ständig ohne irgendwelche Grund ab.
                  Ich habe sowohl 2005 als auch 2008 Version probiert. Hab zuerst gedacht - es stimmt was mit Abfragen nicht. komisch.
                  Aber in ACCESS direkt funktioniert ohne Probleme.
                  Gibt es noch irgendwelche kostenloses Tool um Abfragen zu entwickeln mit Access Datenbanken?

                  Es ist so: Datenbank ist mit einer alten Version Access erstellt.
                  Anwender Programm kann ich in Moment nicht ändern, die arbeitet mit dem Datenbank.
                  Um mit Access Abfragen zu erstellen, muss ich aber Datenbank konvertieren (ich habe 2002 Version), testweise um Abfrage zu schreiben und testen geht es, aber auf dauer - immer wieder Datenbank - eine kopie machen und dann konvertieren - ist nicht optimal.

                  MfG
                  deavik

                  Comment

                  Working...
                  X