![]() |
frage zu Access und Formularen Im Acces Forum schlafen die wohl alle noch. Hat noch niemand meine Frage dort gelesen, also frag ich hier nochmal: In meinem Formular kann man eine Postleizahl eingeben/Auswählen. Und wenn man dies tut, soll aus der DB der dazu passende Ort in ein Textfeld ausgegeben werden, wenn er vorhanden ist. Wie kann ich dies machen? |
dim o_rst as recordset set o_rst = currentdb.openrecordset("select * from <deine tabelle>") with o_rst .findfirst "PLZ="+<PLZ> 'hier kannst du das plz textfeld angeben if .nomatch=false then tb_ortsname=!Ortsname 'musst natürlich dein textfeld und deinen spaltennamen fürr den ortsnamen angeben end if end with so ungefähr |
bei [code]o_rst.FindFirst[/code] meckert er rum, dass er die Methode oder das Datenobject nicht gefunden hat. |
das objekt o_rst haste erstellt? haste genau deine spaltennamen une textfeldnamen eingesetzt? wenn deine plz keine zahl sondern ein string ist muss bei findfirst "<spaltennameplz>='"+<textfeldplz>+ "'" hin die ' ' für den string |
Ja, die PLZ ist ein String. Ansonsten wird die 0 an erster stelle gelöscht. Die Namen für die Steuerelemente stimmen auch. Und wo müssen die ' ' genau hin? |
"<spaltennameplz>=[b][u][i]' [/i][/u][/b]"+<textfeldplz>+ " [i][u][b]'[/b][/u][/i] " da sind sie ;) *g* die ' ' umschließen also deine plz bzw dein plz textfeld das du in findfirst benutzt. '<textfeld>' ;) |
Ich verzweifel hier bald! Das geht einfach nicht. Ständig findet er die Methode nicht. Die Hilfe hilf mir auch nicht viel. und im Inet find ich auch nichts. Kannst du wenigstens mal die eine Codezeile erklären, weil ich nciht ganz die logic davon versteh. Villeicht finde ich dann den Fehler selbst. |
ich würd die einfach in beziehung setzen und dann einen relativen bezug herstellen, so das du jeder PLZ dann den ort zuordnen kannst. |
[b]dim o_rst as recordset [/b]'da wird sozusagen ein recordset objekt erzeugt 'nun wird dem objekt das recordset zugewiesen ' "select * from table" ist ne stink normal select anweisung '* heist alles und table ist die bezeichnung für deine tabelle [b]set o_rst = currentdb.openrecordset("select * from table")[/b] 'jetzt must du deine postleitzahl in den datensätzen suchen. 'ein recordset hat dazu die methode findfirst. die müßte sich bei dir auch 'zeigen wenn du o_rst. eingibst [b]with o_rst [/b] [b].findfirst "PLZ="+<hier kommt der name deines textfeldes rein> [/b] 'hier kannst du das plz textfeld angeben ohne die <> natürlich ;) [b]if .nomatch=false then [/b] nomatch ist die funktion die dir zeigt ob was gefunden wurde oder ncith [b]tb_ortsname=!Ortsname [/b] statt tb_ortsname muss dein ortsnamen textfeld hin und !ortsname ist die spalte in deiner tabelle die den ortsnamen enthält [b]end if end with [/b] gib mir bitte nochmal deine access version.. vielleicht gibnts bei dir schon probleme mit dem erstellen des recordsets... meckert der rum wengen 2 parametern?!? du hast das alles in einem sub?!?! also: public sub OrtsnameErkennen() end sub ? wenn dus modifiziert hast, dann wärs nett, wenn du mal deinen source code rübertextest |
Ich arbeite hier mit Access 2000. Und danke, dass du gleich alles so kommentiert hattest. Die eine Zeile mit dem FindFirst hätte gereicht. Den rest kannte ich. Bin aber trozdem wieder bei dem Fehler dass er die Methode FindFirst nicht findet. |
bei mir gehts sowohl unter access 97 2000 als auch unter xp habs grad getestet.... schick mal deinen code.... ich prüf das mal.... |
wenn du meine version übernommen hast mit dem with dann ist der punkt vor .findfirst wichtig ind nach o_rst darf keiner sein... |
so sieht es momentan aus: [code] Private Sub cmb_plz_BeforeUpdate(Cancel As Integer) OrtFinden End Sub [/code] und im Modul: [code] Sub interessenten() End Sub Sub OrtFinden() Dim o_rst As Recordset Set o_rst = CurrentDb.OpenRecordset("select * from ortsdaten") With o_rst .FindFirst "PLZ=" + Form_interessenten.cmb_plz.Text If .NoMatch = False Then Form_interessenten.tb_Ort = !Ort End If End With End Sub [/code] |
Sub interessenten() End Sub Sub OrtFinden() Dim o_rst As Recordset Set o_rst = CurrentDb.OpenRecordset("select * from ortsdaten") With o_rst [b].FindFirst "PLZ= [u]'[/u]" + Form_interessenten.cmb_plz.Text [u]+" ' " [/u][/b] If .NoMatch = False Then Form_interessenten.tb_Ort = !Ort End If End With End Sub hast da die ' ' vergessen wie oben schon beschrieben.. ohne die muss plz ne zahl sein.. und plz ist doch ein string wie wir schon festgestellt haben |
| Alle Zeitangaben in WEZ +1. Es ist jetzt 10:14 Uhr. |
Powered by vBulletin® Version 3.8.10 (Deutsch)
Copyright ©2000 - 2026, vBulletin Solutions, Inc.
SEO by vBSEO 3.5.2 ©2010, Crawlability, Inc.