Update Problem einer Datenbank

  • VB6

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Nemesix.

    Update Problem einer Datenbank

    Hallo leibe Leute,
    ich wende mich mit einem für euch vermutlich simplen Problem an euch.

    Prolog:
    Ich habe von einer ehemaligen Kollegin eine Access "Inventur Datenbank" übernommen. Formulare wurden von ihr in VB geschrieben. Leider hab ich damit noch nie gearbeitet und habe ein kleines Problem.

    Problem:
    Ich habe eine Maske in welcher ich Daten eintrage, welche wiederum dann mit folgendem Befehl eine Tabelle Updaten sollen:

    Quellcode

    1. DoCmd.RunSQL ("UPDATE [Devices] SET [Raum] = neuerraum AND [MAC] = macad AND [Seriennummer] = serialnr WHERE edvnr = [EDV Nummer] AND sapnr = [SAP Nummer]")


    Jedoch wird in die Spalte [Raum] immer eine 0 oder -1 eingetragen.
    Für mich sieht der Befehl richtig aus, ist auch alles verständlich und daher bin ich absolut überfragt.
    [Raum] ist Text, da auch FB102 vorkommen kann als Raum.

    Ich hoffe ihr könnt mir helfen, in der Zwischenzeit werde ich mich einlesen.

    PS: Falsl ihr weitere Infos braucht sagt mir Bescheid!
    Ich geh davon aus du meinst was eingetragen wird?
    Eigentlich nur ne dreistellige Nummer "242" oder FB111 sowas in der art.
    Infos zu "neuerraum":
    Texformat: Nur Text


    Ansosnten hier mal das komplette Formular:

    Quellcode

    1. Option Compare Database
    2. Private Sub alterraum_BeforeUpdate(Cancel As Integer)
    3. End Sub
    4. Private Sub fill_form_Click()
    5. Me.AllowEdits = True
    6. Me!sapnr = DLookup("[Devices].[SAP Nummer]", "[Devices]", "edvnr=[Devices].[EDV Nummer]")
    7. Me!macad = DLookup("[Devices].[MAC]", "[Devices]", "edvnr=[Devices].[EDV Nummer]")
    8. Me!serialnr = DLookup("[Devices].[Seriennummer]", "[Devices]", "edvnr=[Devices].[EDV Nummer]")
    9. Me!alterraum = DLookup("[Devices].[Raum]", "[Devices]", "edvnr=[Devices].[EDV Nummer]")
    10. End Sub
    11. Private Sub change_clear_form_Click()
    12. 'Updaten des geänderten Devices
    13. DoCmd.RunSQL ("UPDATE [Devices] SET [Raum] = neuerraum AND [MAC] = macad AND [Seriennummer] = serialnr WHERE edvnr = [EDV Nummer] AND sapnr = [SAP Nummer]")
    14. 'Email verschicken
    15. 'Wenn in edvnr etwas steht, dann schicke mail
    16. If edvnr > "!" Then
    17. Dim olApp As Outlook.Application
    18. Dim olNamespace As NameSpace
    19. Dim objMailItem As MailItem
    20. Dim objFolder As mapiFolder
    21. Dim email_edv As String
    22. Dim email_incVW As String
    23. Set olApp = CreateObject("Outlook.Application")
    24. Set olNamespace = olApp.GetNamespace("MAPI")
    25. Set objFolder = olNamespace.GetDefaultFolder(olFolderInbox)
    26. Set objMailItem = objFolder.Items.Add(olMailItem)
    27. If sapnr <> "" Then
    28. 'email = "e.xample@hotmail.de"
    29. email = "e.xample@hotmail.de"
    30. Else
    31. email = "e.xample@hotmail.de"
    32. End If
    33. With objMailItem
    34. .To = email
    35. .Subject = "Geändertes Device"
    36. .Body = vbCr & "Der Standort des Geräts " & [sapnr] & " wurde geändert." & vbCr & vbCr & _
    37. "SAP Nummer: " & [sapnr] & vbCr & _
    38. "Neuer Raum: " & [neuerraum] & vbCr & vbCr & _
    39. "EDV Nummer: " & [edvnr] & vbCr & _
    40. "Alter Raum: " & [alterraum] & vbCr & _
    41. "Seriennr: " & [serialnr]
    42. 'If datei <> "" Then .Attachments.Add datei
    43. .Display
    44. End With
    45. olApp.ActiveWindow
    46. SendKeys "%s"
    47. End If
    48. 'Felder leeren
    49. Me.Undo
    50. End Sub
    51. Private Sub clear_form_Click()
    52. Me.Undo
    53. Me.alterraum = ""
    54. End Sub
    55. Private Sub close_form_Click()
    56. Me.Undo
    57. DoCmd.Close
    58. End Sub
    59. Private Sub neuerraum_AfterUpdate()
    60. End Sub
    61. Private Sub neuerraum_BeforeUpdate(Cancel As Integer)
    62. End Sub

    Oh man ich bin doof. Jetzt ist es mir wie Schuppen von den Augen gefallen.
    Du verbindest die SET mit AND.
    DAs geht nicht, du musst das mit Komma trennen.
    Also

    Visual Basic-Quellcode

    1. DoCmd.RunSQL ("UPDATE [Devices] SET [Raum] = neuerraum,[MAC] = macad, [Seriennummer] = serialnr WHERE edvnr = [EDV Nummer] AND sapnr = [SAP Nummer]")
    Das ist meine Signatur und sie wird wunderbar sein!