PDA

Vollständige Version anzeigen : Daten aus Tabellen mit 2 Variablen abfragen


Currywurst
12.07.2001, 23:30
Moin!

Hoffentlich kann mir jemand helfen.
Wer kann mir erklären, wie ich mit VBA für Access Daten aus einer Tabelle abfragen kann, wenn ich 2 Variablen habe?
Konkret: Ich habe einen Ladehafen und einen Löschhafen, gesucht wird die Entfernung dazwischen. Also etwa: Ladehafen "Riga", Löschhafen "Gävle", Distance: xxx miles.
Ich versuche gerade eine automatische Reisekalkulation zu erstellen, mit "Dlookup" scheitere ich allerdings.

Wer weiß Rat...

Danke im voraus.

Jan

A.S.
13.07.2001, 01:17
Hallo Jan,

das kommt darauf an, wie Deine Datengrundlage organisiert ist.

Du mußt ja in irgendeiner Form hinterlegt haben, auf welchem Weg man wohin gelangen kann. Sprich zunächst mal die relative Lage der Orte zu dem bzw. den jeweils anderen Orten. Die Entfernung zueinander in Luftlinie, in zurück zu legenden Streckenkilometern bzw. Seemeilen. Die befahrbaren Routen zu den Orten, welche Routen in welche Richtung vom jeweiligen Ort zu welchem Ort führen, wie hoch die maximale, wie hoch die durchschnittliche und wie hoch die minimale Reisedauer ist.

Um die richtige - oder annähernd richtige - Reiseroute berechnen zu können, braucht man schon ein ganz schönes Häppchen an Daten. Zumal es ja auch darauf ankommt ob es sich um ein KüMo oder um ein Hochseeschiff handelt.

Das Du da mit Dlookup scheiterst, wundert mich nicht. IMHO gehört da ein entsprechendes Auswertungcoding dahinter, in welches man aber einige Tage Hirnschmalz investieren sollte, zumal es ja auch noch (!) Zwischenstationen auf den Schiffsrouten geben kann.

Prinzipiell kommt es dabei auf die Organisation der Daten an und wie diese für die jeweiligen Bedingungen (z. B. Schiffstyp) erfasst bzw. hinterlegt sind.

Wenn Du eine Tabelle hast "A nach B mit KüMo 150 Seemeilen", "A nach B mit Hochseeschiff 80 Seemeilen" etc. ist das ganze leichte abzufragen. Mit einem Dlookup kommt man in dem Falle schon weiter.....

Also Jan, Butter bei de Fische ;) Wie sehen Deine Tabellen aus, damit Dir geholfen werden kann?

Gruß

Arno

Currywurst
13.07.2001, 13:39
Hallo Arno!

So kompliziert braucht es nicht zu sein.
Wir haben nur 2 unterschiedliche Schiffstypen, die sich bei der Performance nicht wesentlich unterscheiden (Omskiy's und Volgobalt's). Alle Passage werden ohne Zwischenstopps gefahren, also Riga - Gävle immer direkt. Da ich aber nicht weiß, wo das Schiff nach Gävle hinfährt (vielleicht Klaipeda?), soll dann die Entfernung automatisch aus einer Tabelle gesucht werden.

Die Tabelle sieht etwa wie folgt aus.
In den Spalten stehen die Ladehäfen, in den Zeilen die Löschhäfen (etwa wie ein Excel-Datenblatt). In den Zellen die entsprechenden Entfernungen.
Die Funktion soll also innerhalb dieser Tabelle erst nach dem Ladehafen schauen, dann solange in der Spalte suchen, bis der gegebene Löschhafen gefunden wird, und anschießend die dazugehörige Entfernung zurück geben. Ich habe auch schon an die Verwendung eines Exceldatenblattes gedacht, aber da weiß ich überhaupt nicht weiter.

Gruß
Jan

gloria
13.07.2001, 14:07
hi,
so wie ich das sehe reicht dir eine Tabelle mit Lade- Löschhafen und Entfernung. Die Suche nachder Entfernung sollte auch kein Problem darstellen.

ciao glori

A.S.
13.07.2001, 14:31
Hallo Jan,

gut, dann kommst Du mit einem DLookUp natürlich nicht weiter. Hier mußt Du mit dem Recordset und den Fields arbeiten:

Dim RS As Recordset
Dim bolTargetFound As Boolean
Dim RSField As Field
Dim RsFeld As Field
Set RS = CurrentDB.OpenRecordset("DeineTabelle", dbOpenDynaSet)
RS.movefirst
RS.FindFirst "[Starthafen]=" & Me.txtStarthafen
If RS.NoMatch Then
MsgBox "Starthafen falsch eingegeben!", "Fehler"
Else
For Each RSField in RS.Fields
If RSField.Name = Me.txtZielhafen Then
Set RsFeld = RsField
bolTargetFound = True
Exit For
End If
Next RSField
If bolTargetFound Then
Me.txtEntfernung = RsFeld
Set RsFeld = Nothing
Else
MsgBox "Zielhafen nicht in Spaltenkopf gefunden!", "Fehler!"
End If
EndIf
RS.Close
Set RS = Nothing

Mit dem Code (aus dem Kopf geschrieben und ungetestet) solltest Du Deinem Ziel eigentlich ziemlich Nahe kommen.

------------------
HTH

Arno

A.S.
13.07.2001, 14:33
PS Du muß natürlich den Tabellennamen und die Namen der Steuerelemente auf Deine Bedürfnisse anpassen. Eventuell willst Du es auch in eine andere Tabelle übertragen, was jetzt nicht dabei ist.

A.S.
13.07.2001, 14:49
Hallo Jan,

habe im Coding noch den Else-Zweig ergänzt, für die MessageBox wenn der Zielhafen nicht im Spaltenkopf steht.

Gruß

Arno