Computer Hardware Forum - TweakPC

Computer Hardware Forum - TweakPC (https://www.tweakpc.de/forum/)
-   Windows & Programme (https://www.tweakpc.de/forum/windows-and-programme/)
-   -   frage zu Access und Formularen (https://www.tweakpc.de/forum/windows-and-programme/9169-frage-zu-access-und-formularen.html)

Sebastian2 19.06.2003 08:20

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?

BomberD 19.06.2003 08:27

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

Sebastian2 19.06.2003 08:37

bei
[code]o_rst.FindFirst[/code]
meckert er rum, dass er die Methode oder das Datenobject nicht gefunden hat.

BomberD 19.06.2003 08:40

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

Sebastian2 19.06.2003 08:49

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?

BomberD 19.06.2003 09:02

"<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>' ;)

Sebastian2 20.06.2003 08:04

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.

-Razor- 20.06.2003 08:33

ich würd die einfach in beziehung setzen und dann einen relativen bezug herstellen, so das du jeder PLZ dann den ort zuordnen kannst.

BomberD 20.06.2003 08:36

[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

Sebastian2 20.06.2003 08:54

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.

BomberD 20.06.2003 09:04

bei mir gehts sowohl unter access 97 2000 als auch unter xp habs grad getestet....

schick mal deinen code.... ich prüf das mal....

BomberD 20.06.2003 09:10

wenn du meine version übernommen hast mit dem with
dann ist der punkt vor .findfirst wichtig ind nach o_rst darf keiner sein...

Sebastian2 20.06.2003 09:45

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]

BomberD 20.06.2003 09:54

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.