auswahlfeld in der Datenbank abfragen
dukester
- asp.net
Hallo,
hab folgendes Problem:
Ich habe in einer Datenbank für die Mitarbeiternamen auswahlfelder genommen!
Nun ich möchte aber diese felder über eien Aspseite abfragen, aber die aspseite zeigt mir immer nur "nichts" an!!
Wie frage ich den auswahlfelder in der datenbank ab??
Halihallo dukester
Ich habe in einer Datenbank für die Mitarbeiternamen auswahlfelder genommen!
Was ist ein Auswahlfeld? - Erinnert mich das an Access?
Nun ich möchte aber diese felder über eien Aspseite abfragen, aber die aspseite zeigt mir immer nur "nichts" an!!
Eine ASP Seite soll auch nichts anzeigen, der generierte HTML-Code (oder was auch immer)
wird nur vom Browser interpretiert.
Wenn du uns also bitte etwas Code zeigen würdest, wären wir eventuell in der Lage einige
Lösungstipps zu geben.
Viele Grüsse
Philipp
Datenbank:
1 Tabelle mit Mitarbeiternamen
1 Tabelle mit den einnahmen der Mitarbeiter
Das Feld Mitarbeiter in der Tabelle mit den Einnahmen ist verknüpft mit der Namentabelle und man kann mittels drop down Feld die namen auswählen!!
Code (asp) :
<!-- #include file="adovbs.inc" -->
<%
searchfor= TRIM( Request( "searchfor" ) )
name = TRIM( Request( "name" ) )
%>
<%
set con2 = server.createobject( "adodb.connection" )
con2.open "Umsatz"
sqlstring2 = "SELECT * " &_
"FROM T_Umsatz_STA_Duisburg " &_
"where ( Datum LIKE '%" & searchfor & "%' ) " &_
"AND ( Mitarbeiter LIKE '%" & name & "%' ) " &_
"ORDER BY ID "
set rs2 = Con2.Execute( sqlString2 )
IF RS2.EOF THEN
%>
<%
ELSE
gesamt = 0
%>
<%
WHILE NOT RS2.EOF
gesamt = gesamt + (rs2( "gesamt" ) * 1 )
%>
<%
RS2.MoveNext
WEND
%>
<font type="Arial" size="2"><b><%=( gesamt )%> </b></font>
<% END IF %>
------------------------
die seite soll nur die gesammtsumme von einem gewählten Mitarbeiter zu einem Bestimmten Datum anzeigen!!!
Aber da das Mitarbeiter Feld in der Einnahmentabelle so ein drop down menu ist kann das meine aspseite wohl nicht korrekt abfragen!!
Halihallo dukester
Das Feld Mitarbeiter in der Tabelle mit den Einnahmen ist verknüpft mit der Namentabelle und man kann mittels drop down Feld die namen auswählen!!
Du musst vom Denken von Access wegkommen. Hier geht es um SQL und nicht um Access.
Nomenklaturen wie "drop down Feld" gibt es in SQL nicht. Was du suchst ist ein
Query, der einen Join zwischen der Tabelle "Mitarbeiternamen" und "Mitarbeitereinnahmen"
und dann die Summe aller Einnahmen des korrespondierenden Mitarbeiters berechnet.
Beispiel:
Tabelle "Mitarbeiternamen":
---------------------------
id (Autowert)
name
vorname
strasse
...
Tabelle "Mitarbeitereinnahmen":
-------------------------------
mitarbeiter_id : Primärschlüssel
datum : Primärschlüssel
einnahme : Nummer
der Query würde dann etwa so aussehen:
SELECT
Mitarbeiternamen.name,
SUM(Mitarbeitereinnahmen.einnahme)
FROM
Mitarbeiternamen,
Mitarbeitereinnahmen
WHERE
Mitarbeitereinnahmen.datum <= #<datum# AND
Mitarbeiternamen.id = Mitarbeitereinnahmen.mitarbeiter_id
GROUP BY
Mitarbeitereinnahmen.mitarbeiter_id
würde dann etwa folgendes ausgeben:
name SUM(einnahmen)
--------------------------------
Mitarbeiter1 234
Mitarbeiter2 9872
Mitarbeiter3 387
Aber da das Mitarbeiter Feld in der Einnahmentabelle so ein drop down menu ist kann das meine aspseite wohl nicht korrekt abfragen!!
Du musst davon ausgehen, was in der Datenbank für Wertetypen angegeben sind, nicht
wie Access das darstellt. Für ASP ist die Darstellung von z. B. Access völlig irrelevant!
Also: Was steht in der Entwurfsansicht der entsprechenden Tabellen?
Verwendest du überhaupt Access oder eine andere Klicki-Bunti-0815-Datenbank?
Viele Grüsse
Philipp
Access!!!
Aber davon mal ab ich bin nicht dafür verantwortlich darf mich nur damit rumkloppen!!!
Halihallo dukester
Da ich mir keine möglichen Fehlerursachen ausdenken kann, solltest du mal folgendes
versuchen:
Geb dir testweise mal alle Tabelleninhalte von beiden Tabellen aus und schau mal nach,
was unter dem gewünschten Feld (das drop-down) alles steht. Ist es eine Zahl, oder Text?
Ich kann mir nicht vorstellen, dass Access hier Probleme macht.
Zudem würde mich mal wunder nehmen, was dein zuvorgepostetes Script denn ausgibt. Was
heisst hier "Probleme machen"? - Kommt eine Fehlermeldung? - Was wird falsch ausgegeben?
Viele Grüsse
Philipp
Ich hab ja versucht mir den Tabelenihnhalt ausgeben zu lassen aber das lässt er mir aus!!1
Keine Zahl keine Buchstaben keine fehlermeldung!!!
Lösch ich das feld aber raus aus der Tabelle und setz dafür ein textfeld ein und tipp den namen von hand dann geht es
Halihallo dukester
Ich hab ja versucht mir den Tabelenihnhalt ausgeben zu lassen aber das lässt er mir aus!!
Welchen Query hast du verwendet?
SELECT * FROM <dein-Tabellenname>
Keine Zahl keine Buchstaben keine fehlermeldung!!!
Ich folgere: Keine Datensätze gefunden. Vielleicht hilft auch die Ausgabe der Anzahl aus
Test/Debug-Zwecken.
Lösch ich das feld aber raus aus der Tabelle und setz dafür ein textfeld ein und tipp den namen von hand dann geht es
OK, das ist doch schon was. Was hindert dich daran, das Feld auf textfeld zu ändern?
Muss die Datenbank über ASP sowie über Access einsehbar sein?
Viele Grüsse
Philipp
Hoi Phillip!!!
Naja leider schon und ich vertrau dem Volk hier nicht, daß die Namen alle richtig tippen!!!
Ach ja in der entwurfsansicht hat das die spalte Mitarbeiter die bezeichnung ID2 wenn ich mir nun per <%=rs("ID2")%> das mal ausgeben lassen dann kommt das raus :
571033438377447118251221174101188110331118811121823173555711110211
naja was ist das????
Halihallo dukester
Naja leider schon und ich vertrau dem Volk hier nicht, daß die Namen alle richtig tippen!!!
Bitte was? - Von was redest du bitte? - Wo wir schon dabei sind: du hast meinen falsch
geschrieben ;) - Absicht oder Zufall, das ist hier die Frage...
Ach ja in der entwurfsansicht hat das die spalte Mitarbeiter die bezeichnung ID2 wenn ich mir nun per <%=rs("ID2")%> das mal ausgeben lassen dann kommt das raus :
571033438377447118251221174101188110331118811121823173555711110211
naja was ist das????
Aha... Das ist der verzweifelte versuch seitens Access die Programmierer zu verärgern...
Also, dein "drop-down-Ding", was immer das auch sein mag, speichert nicht die
eigentlichen Namen als Text, sondern repräsentiert sie als nummerischen Wert, der bezogen
auf das "System/Tabelle" eindeutig ist. Ich kenne leider keine Möglichkeit diese Werte
wieder in Namen aufzulösen, würde jedoch glauben und für dich hoffen, dass dies über
Access möglich sein müsste. Ich sehe keine andere Lösung, als dass du die Spalte auf
Text änderst (wie schon vorgeschlagen; aber du schweigst dich ja gerne aus...); oder
etwas Redundanz in dein Tabellenschema bringst, indem du zwei Spalten mit selben Inhalt
(eben einmal Text und einmal drop-down) speicherst... Aber Vorsicht: Bei jedem Ändern
müsstest du die entsprechenden Felder aktualisieren. Wahlweise eine neue Relation/Tabelle
erstellen, wo du beide Felder speicherst, aber verknüpf die Tabellen, wie üblich, über
einen Autowert-Primary.
Viele Grüsse
Philipp
hy Philipp,
neee war nur so nen beispiel wie leicht das passiert!!!
Das Volk naja damit meine ich meine Kollegen ich fange garntiert nicht die leute hier zu beleidigen!!!
Ich hau doch keinem in die fresse der mir helfen will!!
Ich plätte die datenbank und mach ne asp Eingabemaske die beschränk ich dann auf die Ip eines rechners sodass nur noch dieser rechner auf die maske zugreifen kann!!!
Und dann mach ich ne neue Datenbank!!
Halihallo dukester
neee war nur so nen beispiel wie leicht das passiert!!!
Das Volk naja damit meine ich meine Kollegen ich fange garntiert nicht die leute hier zu beleidigen!!!Ich hau doch keinem in die fresse der mir helfen will!!
Das ist schon ratsam, ja ;)
Ich plätte die datenbank und mach ne asp Eingabemaske die beschränk ich dann auf die Ip eines rechners sodass nur noch dieser rechner auf die maske zugreifen kann!!!
Im Inter- oder Intranet? - In beiden Fällen must du dir bewusst sein, dass die IP
keinesfalls eindeutig einem Computer zugewiesen werden kann! - Du solltest andere
Authentication-Möglichkeiten in Betracht ziehen.
Und dann mach ich ne neue Datenbank!!
Ratsam. Das habe ich in den letzten Postings vergessen zu sagen:
Du solltest darum bemüht sein, eine gute Basis zu erstellen. Die Datenbank ist die
grundlegende Datenstruktur, falls diese schon nicht "korrekt/gut" ist, kann es auch kein
Programm mehr sein, welches darauf zugreift.
Mit anderen Worten: Für eine Verwendung der DB mit ASP, solltest du ein Datenbankschema
im herkommlichen Sinne (also ohne solches Design-WYSIWYG-Zeug von Access) erstellen.
Da, wie du bereits bemerkt hast, dies zu Problemen führen kann, wenn die Access über
SQL angesprochen werden soll.
Viele Grüsse
Philipp
Hi, hallo
Hallo,
hab folgendes Problem:
Ich habe in einer Datenbank für die Mitarbeiternamen auswahlfelder genommen!
Nun ich möchte aber diese felder über eien Aspseite abfragen, aber die aspseite zeigt mir immer nur "nichts" an!!Wie frage ich den auswahlfelder in der datenbank ab??
du meinst, du hast Felder in deiner Tabelle als "Nachschlagefelder" (osä) per Wizard definiert?
so ähnlich hört sich das an. (von solchen Späßchen sollte man eigentlich die Finger lassen)
dann müssen die Mitarbeiterdaten (Name etc) ja irgendwo in irgendeiner Tabelle stehen... und diese haben dann auch so eine schöne lange ID-Nummer
schau mal in der Entwurfsansicht der Tabelle Umsätze_STA (oder wie die hieß) nach, was da bei der entsprechenden Spalte unter dem Kartenreiter "Nachschlagen" oder "lookup" steht... da bekommst du dann auch einen Hinweis auf die referenzierte Tabelle, wo die Mitarbeiterdaten stehen.
Um die Umsätze und Werte zusammen anzuzeigen mußt du ein Query über diese beiden Tabellen erstellen.
So wie Philipp das schön in einem seiner Postings vorgeschlagen hat.
Tschau, tschüß,
Frank