Hallo,
ich steck gerade ziemlich fest. Ich kenn mich mit Access nicht wirklich aus, soll aber ein kleine Program schreiben. Ich hab es davor in PHP geschrieben und es funktioniert, bringt uns aber nichts da es in Access sein muss.
Das ganze sieht so aus, ich habe eine Tabelle in denen die Berufe und die Anzahl der freien Stellen gespeichert sind.
In einer weiter Tabelle sind die Personen und der gewählte Beruf gespeichert.
Es soll dann berechnet werden wieviele Stellen noch verfügbar sind.
In PHP sieht das ganze so aus.
<?php
mysql_connect("","root");
mysql_select_db("agentur");
// Anzahl aller Berufe ermitteln und ausgeben
$res1 = mysql_query("select * from beruf order by beruf asc");
$num1 = mysql_num_rows($res1);
echo "<h2>Es gibt $num1 verschiedene Berufe.</h2>";
echo "<table>";
echo "<tr><td><b>Beruf</b></td><td><b>Plätze</b></td></tr>";
while ($dsatz = mysql_fetch_assoc($res1))
{
// Anzahl der belegten Stellen zu einem Beruf
$sqlab2 = "select beruf from person where beruf like '" .$dsatz["beruf"] . "'";
$res2 = mysql_query($sqlab2);
$num2 = mysql_num_rows($res2);
$erg = $dsatz["anzahl"] - $num2;
// Ausgabe des Berufs und der freien Stellen
echo "<tr>";
echo "<td>".$dsatz["beruf"]. "</td><td align='right'>$erg</td>";
echo "</tr>";
}
echo "</table>";
?>
Doch in Access hab ich keine Ahnung wie ich das anstellen muss. Meine bisherigen Codschnippsel sehen so aus:
Dim erg As Integer
Dim anzPer As Integer
Dim anzBeruf As Integer
Dim be As String
all = "SELECT Count(*) AS AlleBerufe FROM Berufe"
Me.RecordSource = all
Me!txt_Anzahl.ControlSource = "AlleBerufe"
be = "SELECT Beruf From Berufe"
anzBeruf = "SELECT Anzahl From Berufe"
While (be)
anzPer = "SELECT Count(*) AS anzBeruf FROM Personen WHERE Beruf LIKE = be"
erg = anzBeruf - anzPer
Wend
End Sub
Mir ist klar das dass so noch nicht funktionieren kann, ich weis aber auch noch nicht wie ich das hinbekkomme.
Am Ende sollen dann die ganzen Daten auf dem Formular ausgegeben werden.
Untereinander, etwa so.
Beruf | freie Stellen
Feuerwehr | 7
Polizei | 8
TV-Studio | 5
Müllabfuhr | 16
...
Auch hier weis ich nicht wie ich das anstellen soll, am liebsten würde ich alles in Label ausgeben, aber ich bin mir nicht sicher ob das geht, ansonsten muss ich wohl nen Textfeld verwenden, was aber nicht sehr schick ausssieht.
Wenn mir jemand helfen kann, bin ich drüber sehr dankbar !!!
So ich hab jetzt diese SQL-Anweisung:
Select berufe.beruf, berufe.anzahl - count(personen.beruf) as Frei from berufe left join personen on berufe.beruf = personen.beruf group by berufe.beruf
Doch weis ich nicht wo ich diese Eintragen muss um den Beruf und die freien Stellen anzeigen zu lassen. Ich hab sie in Datenherkunft eingetragen doch kommt dann immer die Meldung:
"Sie wollten eine Abfrage ausführen, die den angegebenen Ausdruck "berufe.anzahl-count(personen.beruf)' nicht als Teil der Aggregatfunktion einschließt."
Was mach ich falsch? Muss ich noch eine Abfrage erstellen?
Aber was für eine und wie?
Bitte helft mir, bin über jede Hilfe dankbar.
Hallo,
frage doch im Forum, aus dem du den Code bekommen hast!
Crossposting sind überall unbeliebt!!
Gruß Oma
SELECT Berufe.Beruf, Berufe.Stellen-P.BesetzteStellen AS FreieStellen FROM Berufe, (SELECT Personen.Beruf, Count(Personen.name) as BesetzteStellen FROM Personen GROUP BY Personen.Beruf) AS P WHERE Berufe.Beruf=P.Beruf;
So damit gehts schon fast, doch jetzt will ich das auch die Berufe angezeigt werden, die noch keine Person gewählt hat.
Was muss ich den da ändern?