Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

VBA zugreifen auf eine Tabelle, den höchsten Wert aus einer Spalte vergleichen mit einem Textfeld im Formular

Frage Entwicklung VB for Applications

Mitglied: bumbum

bumbum (Level 1) - Jetzt verbinden

27.08.2009, aktualisiert 22.09.2009, 10078 Aufrufe, 8 Kommentare

Hallo Leute,

Ich habe in Access eine Datenbank erstellt, in der Neukunden erfasst werden sollen.
Wie vergleiche ich ein Textfeld (Text1) aus einem Formular mit einer Spalte (KdNr) aus der Tabelle (tbl_Kunden)?
Wie kann ich die letzte Kundennummer die in der Tabelle vergeben wurde anwählen und + 1 rechen lassen?


Hier der momentane Code:
01.
Private Sub Befehl24_Click() 
02.
DoCmd.SetWarnings False 
03.
If Text1.Value = **SPALTE AUS TABELLE** Then 
04.
    Frage = MsgBox("Die Kundennummer " & Text1.Value & " ist schon vergeben, bitte verwenden sie die Kundennummer " & **LETZTE KUNDENNUMMER + 1** , vbOKOnly, "Fehler") 
05.
Else 
06.
    DoCmd.RunSQL ("insert into tbl_Kunden (KdNr, Anrede, Name, Vorname, Straße, PLZ, Ort, Telefon, Fax, Handy, EMail) values (Text1.value, Text2.value, Text3.value, Text4.value, Text5.value, Text6.value, Text7.value, Text8.value, Text9.value, Text10.value, Text11.value)") 
07.
End If 
08.
End Sub
LG BumBum



[Edit Biber] Code-Tags nachgetragen. [/Edit]
Mitglied: AndreasHoster
27.08.2009 um 11:03 Uhr
Indem man eine SQL Abfrage macht?
01.
Dim rs As Recordset 
02.
Dim i As Integer 
03.
 
04.
Set rs = Application.CurrentDb.OpenRecordset("Select max(KdNr) as Max from tbl_kunden") 
05.
rs.MoveFirst 
06.
i = rs!Max + 1
BTW:
Warnings auschalten, dann ein Insert machen ohne zu Prüfen ob der geklappt hat, ist kein guter Programmierstil.
Bitte warten ..
Mitglied: bumbum
27.08.2009 um 11:50 Uhr
Hallo Andreas,
wenn du mir jetzt noch sagen könntest wie ich das in meinen Code einbauen kann, wäre ich dir sehr dankbar.
der "insert" hat funktioniert, das habe ich schon getestet, außer dem habe ich mir das bloß abgeschaut bei na anderen Datenbank.

LG bumbum
Bitte warten ..
Mitglied: AndreasHoster
27.08.2009 um 12:17 Uhr
Die 6 Zeilen sollten sich doch auch so noch in den Code integrieren lassen.
Aber ich bin heute guter Laune:
01.
Private Sub Befehl24_Click() 
02.
Dim rs As Recordset 
03.
Dim i As Integer 
04.
DoCmd.SetWarnings False 
05.
Set rs = Application.CurrentDb.OpenRecordset("Select max(KdNr) as Max from tbl_kunden") 
06.
rs.MoveFirst 
07.
i = rs!Max 
08.
rs.close 
09.
If Text1.Value = i Then 
10.
    Frage = MsgBox("Die Kundennummer " & Text1.Value & " ist schon vergeben, bitte verwenden sie die Kundennummer " & cstr(i) , vbOKOnly, "Fehler") 
11.
Else 
12.
    DoCmd.RunSQL ("insert into tbl_Kunden (KdNr, Anrede, Name, Vorname, Straße, PLZ, Ort, Telefon, Fax, Handy, EMail) values (Text1.value, Text2.value, Text3.value, Text4.value, Text5.value, Text6.value, Text7.value, Text8.value, Text9.value, Text10.value, Text11.value)") 
13.
End If 
14.
End Sub
Bitte warten ..
Mitglied: bumbum
27.08.2009 um 12:53 Uhr
Vielen dank, aber in der MsgBox ist immer noch ein Fehler.
Wo du jetzt "cstr(i)" eingesetzt hast soll die nächst höhere freie KdNr ausgegeben werde, das ist hier nicht der fall.
Bitte warten ..
Mitglied: AndreasHoster
27.08.2009 um 15:35 Uhr
Ist richtig, das + 1 beim i ist rausgefallen.
In Theorie programmieren ist halt fehleranfällig.
Bitte warten ..
Mitglied: bumbum
08.09.2009 um 12:30 Uhr
Danke, aber es ist immer noch ein Fehler da!

Bsp.: die KdNr´s 1-10 sind vergeben, wenn ich nun die KdNr 5 rein schreibe, erhalte ich keine Meldung von der MsgBox, nur wenn ich die 10 rein schreibe kommt eine Meldung in der dann gesagt wird, das die KdNr 10 schon vergeben ist und ich die 11 nehmen soll.
Weiß jemand was der Fehler ist?
LG Bumbum
Bitte warten ..
Mitglied: AndreasHoster
08.09.2009 um 13:53 Uhr
Natürlich prüft
01.
If Text1.Value = i Then 
nur auf Gleichheit, nicht ob die Zahl eventuell kleiner ist. Was in der Beschreibung auch nicht zu entnehmen war, daß auch das passieren soll.
In dem Fall auf kleiner gleich prüfen. Oder sich die Frage stellen, warum man nicht automatisch eine 1 höhere Kundennummer nimmt, was wiederum auf den Begriff Autowert führt, den man in der Access Hilfe mal nachschlagen könnte.
Bitte warten ..
Mitglied: bumbum
08.09.2009 um 14:15 Uhr
Das man das mit einem Autowert machen kann ist mir klar, doch ich weiß auch nicht wie man dem Text1 sag, das es automatisch eine 1 höhere Kundennummer nehmen soll.
sorry wegen der fragen aber als Anfänger weiß man es nicht besser und Probiert es sich aus bis man warnsinnig wir und jemanden fragt.

LG bumbum
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
VB for Applications
gelöst Excel VBA .csv Import in Tabelle x, ab Spalte y

Frage von drimrim zum Thema VB for Applications ...

VB for Applications
gelöst Excel VBA Werte von 2 verschiedenen Sheets vergleichen und aktualisieren (4)

Frage von drimrim zum Thema VB for Applications ...

Microsoft Office
gelöst Verschieben von Zellinformation in andere Spalte (per VBA) excel 2010 (5)

Frage von thomas1972 zum Thema Microsoft Office ...

VB for Applications
gelöst Xml-Datei laden bzw. auf Festplatte kopieren und per VBA in eine Access-Tabelle speichern (22)

Frage von machohunk zum Thema VB for Applications ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...