Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Schleifenbedingung aus Datei auslesen?!
rookie
myCSharp.de - Member



Dabei seit:
Beiträge: 105

Themenstarter:

Schleifenbedingung aus Datei auslesen?!

beantworten | zitieren | melden

Hallo zusammen!

Folgendes Problem: Ich habe eine Access-Tabelle mit zwei Spalten "FNR" (Flächennr.) und "ART". In jeder Fläche können mehrere Arten vorkommen (jeweils aber ein neuer Datensatz!).

FLNR ARTNAME

Fnr1 Art1
Fnr1 Art2
Fnr1 Art3
Fnr1 Art2
Fnr2 Art1
Fnr2 Art2
Fnr3 Art1
Fnr3 Art2
Fnr3 Art3
Fnr3 Art4
...


Aus dieser einen Tab (s.o.) möchte ich eine Auswertung erzeugen. Ziel ist es zu erfahren, welcher Artenname wie oft in der Tabelle vorkommt und in welchen Flächen:

Artenname1 (Anzahl Stck.): Fläche1, Fläche2, Fläche3, ...
Artenname2 (Anzahl Stck.): Fläche1, Fläche3, Fläche4, ...

Wunschziel ist die Ausgabe einer Textdatei mit einer entsprechenden Auflistung. Daher der Gedanke einer Programmierung. Ich hab' jetzt alle vorkommenden Art-Namen in einer TXT-Liste. Nun dachte ich an eine Schleife, die zeilenweise alle Arten aus der TXT verwendet, um nach Flächen zu suchen, die diese Art enthalten.

Allerdings reicht da mein C# nicht ganz, um das hinzubekommen!

Kann mir da jemand den nötigen Schubser geben?

Danke schon mal!
rookie
private Nachricht | Beiträge des Benutzers
Pulpapex
myCSharp.de - Member



Dabei seit:
Beiträge: 939
Herkunft: Rostock

beantworten | zitieren | melden

Guck dir lieber die Möglichkeiten von SQL näher an. Die Arbeit mit der Txt-Datei hättest du dir eigentlich sparen können.

Folgende SQL-Anweisung liefert beispielsweise alle Artnamen und wie oft sie in der Tabelle vorkommen:
SELECT artName, COUNT(*) AS artCount
FROM fl_art
GROUP BY artName;
In welchen Flächen welche Art vorkommt, bekommt man noch einfacher raus.


Gruss
Pulpapex
private Nachricht | Beiträge des Benutzers
rookie
myCSharp.de - Member



Dabei seit:
Beiträge: 105

Themenstarter:

beantworten | zitieren | melden

@Pulpaplex

Besten Dank erst mal.

Du sagst, in welchen Flächen, welche Art vorkommt, ist noch leichter rauszukriegen. Kannst du mir da auch noch weiterhelfen? Ist denn noch eine Kombination mit deinem erstenString möglich?

Zusatz:
Dein SQL finktioniert prima:

SELECT BIO_Arten.Artname1, BIO_Arten.Artname2, Count(*) AS Anzahl
FROM BIO_Arten
GROUP BY BIO_Arten.Artname1, BIO_Arten.Artname2
ORDER BY Count(*);
Jetzt möchte ich nur noch die Nummern der Flächen auflisten, in denen die Arten vorkommen:

Art1 (256): Flächennr.1, Flächennr.2, Flächennr. 5 ...

Kannst du mir da noch helfen, wie ich den obigen Code erweitern muss, um das hinzukriegen?!


Danke schon mal!
rookie
private Nachricht | Beiträge des Benutzers
Pulpapex
myCSharp.de - Member



Dabei seit:
Beiträge: 939
Herkunft: Rostock

beantworten | zitieren | melden

Alles mit einer Anfrage erschlagen wird nicht klappen.

Entweder du verwendest für den zweiten Teil eine zusätzliche Anfrage:
SELECT artname1, fnr
FROM BIO_Arten
ORDER BY artname1;
Die Zuordnung der Flächen ergibt sich dann anhand der Sortierung, alle Flächen einer Art stehen im Ergebnis hintereinander.

Oder du fragst die Flächen für jeden Artnamen einzeln ab:
SELECT fnr
FROM BIO_Arten
WHERE artname1 = ?;
private Nachricht | Beiträge des Benutzers
rookie
myCSharp.de - Member



Dabei seit:
Beiträge: 105

Themenstarter:

beantworten | zitieren | melden

@ Pulpaplex

Hallo und Danke für die Antwort!
Ich habe die Geschichte gelöst. Habe mir in Access ein VBA-Modul geschrieben, das das ganze über ein paar Schleifen ausliest und in der gewünschten Form ausgibt!

Trotzdem nochmal Danke!
rookie
private Nachricht | Beiträge des Benutzers