title image


Smiley Re: Kann ich diesen Code noch verbessern?


Private Sub ListeGeräte_DblClick(Cancel As Integer)

On Error Resume Next

On Error Goto Er

Dim db rs As ADODB.Recordset, strSQL As String, Preis As Integer As Currency, Conn As ADODB.Connection



set Conn = currentproject.Connection



' Doppelte Eingabe vermeiden

If DCount("*", "[tb_Raum/Gerät]", "id_Raum=" & Me!RaumListe & " AND id_Gerät=" & Me!ListeGeräte & "") = 0 then



'Schätzpreis ermitteln

strSQL = "SELECT * FROM tb_Geräte WHERE id=" & Me!ListeGeräte

Set rs = Conn.Execute(strSQL)

Preis = RS!Schätzpreis



' alternativ:

' Preis = DLookup("Schätzpreis","tb_Geräte","id=" & Me!ListeGeräte)



strSQL = "INSERT INTO [tb_Raum/Gerät](id_Raum, Anzahl, id_Gerät, Preis)" & _

" VALUES(" & Me!RaumListe & "," & Me!Anzahl & "," & Me!ListeGeräte & "," & Str(Preis) & ") "

Conn.Execute strSQL



Else



MsgBox "Dieses Gerät ist bereits im Raum vorhanden" & vbCrLf & _

"Datensatz wurde nicht gespeichert!", vbOKOnly + vbExclamation + vbDefaultButton1, "Geräte zu Raum"



End If



Ex:

On error resume Next

rs.Close

Set rs = Nothing

conn.close

set conn = nothing

Me!ListeGeräteNeuimRaum.Requery



Er:

MsgBox Err.Description

Resume Ex

End Sub





Lies unter anderem mal:

DBWiki: Niemals Datentyp "Integer" verwenden!

FAQ 6.3: Punkt und Rufzeichen

FAQ 6.21: Dezimalzahl an SQL-String übergeben/a> (zur Verwendung von Str() in Kriterienausdrücken)

FAQ 1.5: Benamsungen (zu Namen wie "tb_Raum/Gerät")



On Error Resume Next sollte nur mit Bedacht eingesetzt werden - auf jeden Fall nicht generell für die gesamte Routine - damit vergibt man sich ja jede Möglichkeit der Fehleranalyse!



Ich würde auch nicht unbedingt Domänen-Aggregatfunktionen und Recordset-Operationen mischen bzw. würde - wenn ich denn DCount verwende - dann auch das Nachschlagen des Preises auch mit DLookup realisieren (s.o.).



Auch fängst du nur wenige der möglichen Sonder- bzw. Fehlerfälle (z.B.: Schätzpreis ist NULL) ab - da müsstest du auch noch tiefer einsteigen.





Gruß aus dem Norden
Reinhard


Bitte immer die Access-Version angeben!
DB-Wiki


Wie man Fragen richtig stellt

YaccessAccess-FAQUnd ansonsten: Wikipedia




geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: