Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: ---> Neu: Office 2010 Forum <-
Update für mde: Neues Feld in Tabelle einfügen
zurück: Problem mit Mehrfachselektion von Listfeldern weiter: Access Export in Excel erfolgt nur sporadisch... Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Louis_Paris
Anfänger


Verfasst am:
22. Sep 2009, 14:59
Rufname:

Update für mde: Neues Feld in Tabelle einfügen - Update für mde: Neues Feld in Tabelle einfügen

Nach oben
       Version: Office 2k (2000)

Hi,

ich habe eine Applikation.mde die mit der Daten.mde verbunden ist, in der nur Tabellen sind.

Die Änderungen in der Applikation.mde kann ich durch einfaches Ersetzen dieser Datei bewerkstelligen. In der Daten.mde sind die vom User angelegten Daten. Diese Datei darf ich nicht ersetzen, sondern muss sie updaten.

Wie kann ich jetzt ein Update schreiben um ein neues Feld in eine bestehende Tabelle einzufügen?

_________________
Danke und Salü
Louis
KlausMz
Moderator Access


Verfasst am:
22. Sep 2009, 15:04
Rufname:
Wohnort: Irgendwo in der Pfalz


AW: Update für mde: Neues Feld in Tabelle einfügen - AW: Update für mde: Neues Feld in Tabelle einfügen

Nach oben
       Version: Office 2k (2000)

Hallo,
gar nicht. Eine MDE ist geschlossen.
Du musst das Feld in der MDB einfügen. Die Daten aus der MDE importieren.
Die MDB wieder in eine MDE wandeln.

Nachtrag:
Habe gerade gesehen, ist ja schon getrennt.
Du musst das Feld in der Daten.mdb hinzufügen. Ansonsten gleiches Vorgehen.

_________________
Gruß
Klaus . . . . . Der sich über Feedback freut.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.


Zuletzt bearbeitet von KlausMz am 22. Sep 2009, 15:30, insgesamt einmal bearbeitet
ebs17
Learning by Doing - Bastler


Verfasst am:
22. Sep 2009, 15:11
Rufname:
Wohnort: Reinsberg

AW: Update für mde: Neues Feld in Tabelle einfügen - AW: Update für mde: Neues Feld in Tabelle einfügen

Nach oben
       Version: Office 2k (2000)

@Klaus: Das ist falsch. Der Tabellen- und der Abfrageentwurf sind in einer MDE nicht gesperrt.

Es gibt wohl aber auch keinen Grund, ein Backend als MDE zu verwenden.

@Louis_Paris: In der folgenden Funktionssammlung solltest Du alles finden, was Du zur BE-Pflege benötigst. Und immer: Erst prüfen, dann handeln. Eine Updateprozedur könnte auch (versehentlich) mehrfach ausgeführt werden.
Strukturänderungen an der Datenbank (DAO, ADOX, DDL)

_________________
Mit freundlichem Glück Auf!

Eberhard
KlausMz
Moderator Access


Verfasst am:
22. Sep 2009, 15:35
Rufname:
Wohnort: Irgendwo in der Pfalz

AW: Update für mde: Neues Feld in Tabelle einfügen - AW: Update für mde: Neues Feld in Tabelle einfügen

Nach oben
       Version: Office 2k (2000)

@ebs17
Zitat:
Der Tabellen- und der Abfrageentwurf sind in einer MDE nicht gesperrt.
tatsächlich, da ich das noch nie gebraucht habe, war mir das nicht bewusst. Danke für den Hinweis.
_________________
Gruß
Klaus . . . . . Der sich über Feedback freut.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Louis_Paris
Anfänger


Verfasst am:
22. Sep 2009, 16:19
Rufname:


AW: Update für mde: Neues Feld in Tabelle einfügen - AW: Update für mde: Neues Feld in Tabelle einfügen

Nach oben
       Version: Office 2k (2000)

Hi Eberhard,
danke für den Tipp.

Unter www.kulpa-online.com/tutorial-ddl.html fand ich für das Einfügen eines neuen Feldes in eine bestehende Tabelle:

Code:
Public Function DAO_CreateField(pdbs As DAO.Database, _
                                psTable As String, _
                                psFieldName As String, _
                                plFieldType As DAO.DataTypeEnum, _
                                Optional plFieldSize As Long = 0) _
                                As Boolean
 
    ' Benötigte Objektvariablen
    On Error GoTo HandleErr
    Dim tdef As DAO.TableDef
    Dim tfld As DAO.Field
 
    '// Tabelle zuweisen
    Set tdef = pdbs.TableDefs(psTable)
    '// Neues Feld anlegen
    If plFieldType = dbText Then
        ' Wenn Textfeld, dann
        Set tfld = tdef.CreateField(psFieldName, plFieldType, plFieldSize)
    Else
        Set tfld = tdef.CreateField(psFieldName, plFieldType)
    End If
 
    '// Neues Feld in die Tabelle einfügen
    tdef.Fields.Append tfld
    '// Erfolgreich
    DAO_CreateField = True
 
HandleExit:
    '// Speicher freigeben
    If Not tdef Is Nothing Then Set tdef = Nothing
    If Not tfld Is Nothing Then Set tfld = Nothing
    Exit Function
 
HandleErr:
    Select Case Err.Number
        Case Else
            MsgBox "Fehler " & Err.Number & ": " & _
                   Err.Description, vbCritical, _
                   "modKap02.DAO_CreateField"
    End Select
    DAO_CreateField = False
    Resume HandleExit
End Function


Leider erkenne ich keinen Hinweis wo ich die Namen für die MDE, Tabelle und Feldnamen angebe. Außerdem möchte ich kein Textfeld, sondern ein Währungsfeld ohne Standardwert einfügen.

Könnte ich den Code dann aus der Application.mde starten um in der Daten.mde das Feld einzufügen?

_________________
Danke und Salü
Louis
Sinister
Access-Programmierer


Verfasst am:
22. Sep 2009, 17:18
Rufname:

AW: Update für mde: Neues Feld in Tabelle einfügen - AW: Update für mde: Neues Feld in Tabelle einfügen

Nach oben
       Version: Office 2k (2000)

Hallo,

Louis, ein Feld kannst du ganz schnell ohne Code hinzufügen.
Falls doch der Code: die Namen musst du als Parameter übergeben (erste Zeile: "...DAO_CreateField(pdbs As DAO.Database, psTable As String..."). Aber du kannst keinen Code zu MDE hinzufügen.

_________________
Warum einfach, wenn es kompliziert geht!?
Louis_Paris
Anfänger


Verfasst am:
22. Sep 2009, 18:06
Rufname:

AW: Update für mde: Neues Feld in Tabelle einfügen - AW: Update für mde: Neues Feld in Tabelle einfügen

Nach oben
       Version: Office 2k (2000)

Hi Sinister,

solange ich die Datenbanken bei mir habe ist das freilich einfacher ohne Code. Auf meinem PC konnte ich die Daten.mde leicht ergänzen. Jetzt habe ich sie aber ausgeliefert und es sind Änderungen per Update nötig 8)

Mit deinem Hinweis komme ich nicht wirklich weiter Sad An welche Stelle muss ich nun "Daten.mde", Tabelle "Musik", neues WährungsFeld "Gebühr" ohne Standardwert schreiben?

Für Hilfe wäre ich sehr dankbar. Embarassed

_________________
Danke und Salü
Louis
ebs17
Learning by Doing - Bastler


Verfasst am:
22. Sep 2009, 18:07
Rufname:
Wohnort: Reinsberg

AW: Update für mde: Neues Feld in Tabelle einfügen - AW: Update für mde: Neues Feld in Tabelle einfügen

Nach oben
       Version: Office 2k (2000)

Zitat:
Könnte ich den Code dann aus der Application.mde starten um in der Daten.mde das Feld einzufügen?

Ja, wenn Du den Code (und weiteren) der Application.mdb hinzufügst und dann daraus eine MDE erstellst.
Es geht aber auch eine zusätzliche Update-MDB, die einfach mit Ausführung des Codes gestartet wird und die sich im Abschluss selber schließt.
Code:

Dim dbX As DAO.Database
Set dbX = OpenDatabase("C:\irgendwo\Daten.mde")

' erst prüfen
If DAO_FieldExists(dbX, "DeineTabelle", "DeinFeld") = False Then

    ' Feld einfügen
    DAO_CreateField dbX, "DeineTabelle", "DeinFeld", dbCurrency
   
    ' Standardwert setzen
    dbX.TableDefs("DeineTabelle").Fields("DeinFeld").DefaultValue = 0

    ' Wert für bereits vorhandene Datensätze nachtragen
    dbX.Execute "UPDATE DeineTabelle SET DeineTabelle.DeinFeld = 0"
End If

dbX.Close
Set dbX = Nothing

Inklusive der Prüfen-Funktion kann die Anweisung beliebig oft ausgeführt werden
- zur Fehlervermeidung bei versehentlicher Wiederholung
- zur Erstellung eines kumulativen Updates

_________________
Mit freundlichem Glück Auf!

Eberhard
Louis_Paris
Anfänger


Verfasst am:
22. Sep 2009, 18:52
Rufname:

AW: Update für mde: Neues Feld in Tabelle einfügen - AW: Update für mde: Neues Feld in Tabelle einfügen

Nach oben
       Version: Office 2k (2000)

Hi ebs17,

danke super Ansatz Razz

Ich erstellte eine Update.mdb mit folgendem Code:

Code:
Private Sub OK_Click()
If CInt(Mid(LizenzNr, 2, 1)) + CInt(Mid(LizenzNr, 3, 1)) + ..... = 4711 Then
    DoCmd.GoToControl "OK"
   
'--- Update Anfang ---

    Dim dbX As DAO.Database
    Set dbX = OpenDatabase("C:\irgendwo\Daten.mde")

    ' erst prüfen
    If DAO_FieldExists(dbX, "Gehaltsbuchungen", "Rückvergütung") = False Then

        ' Feld einfügen
        DAO_CreateField dbX, "Gehaltsbuchungen", "Rückvergütung", dbCurrency
   
        ' Standardwert setzen
        dbX.TableDefs("Gehaltsbuchungen").Fields("Rückvergütung").DefaultValue = 0

        ' Wert für bereits vorhandene Datensätze nachtragen
        dbX.Execute "UPDATE Gehaltsbuchungen SET Gehaltsbuchungen.Rückvergütung = 0"
    End If

    dbX.Close
    Set dbX = Nothing

'--- Update Ende ---
   
    Else:
    Me!LizenzText = "Falsche LizenzNr. Bitte korrigieren."
    DoCmd.GoToControl "LizenzNr"
End If

End Sub


Leider erhalte ich die Fehlermeldung:
Zitat:
Fehler beim Kompilieren: Sub oder Function nicht definiert


Gelb markiert wird die erste Zeile: Private Sub OK_Click()
Sad

Wenn ich die Zeilen beginnend mit DIM und SET direkt unter die erste Zeile setze, erhalte ich das selbe Ergebnis.

_________________
Danke und Salü
Louis
ebs17
Learning by Doing - Bastler


Verfasst am:
22. Sep 2009, 22:32
Rufname:
Wohnort: Reinsberg

AW: Update für mde: Neues Feld in Tabelle einfügen - AW: Update für mde: Neues Feld in Tabelle einfügen

Nach oben
       Version: Office 2k (2000)

Private Sub OK_Click() - wo liegt das?

Ich würde auf eine Benutzerinteraktion und damit auf Formulare generell verzichten.
AutoExec schiebt Prozedur an, fertig. (Einstieg für Entwickler offen lassen)

_________________
Mit freundlichem Glück Auf!

Eberhard
Louis_Paris
Anfänger


Verfasst am:
23. Sep 2009, 08:43
Rufname:

AW: Update für mde: Neues Feld in Tabelle einfügen - AW: Update für mde: Neues Feld in Tabelle einfügen

Nach oben
       Version: Office 2k (2000)

Hi ebs17,

ich weiß eigentlich gar nicht wie ich das sonst einbinden soll.

Code:
Private Sub OK_Click()

ist eine Schaltfläche auf dem Startformular.

Jetzt habe ich das Modul "Update" angelegt:
Code:
Option Compare Database

Dim dbX As DAO.Database
Set dbX = OpenDatabase("C:\Eigene Dateien\irgendwo\Daten.mde")

' erst prüfen
If DAO_FieldExists(dbX, "Gehaltsbuchungen", "Rückvergütung") = False Then

    ' Feld einfügen
    DAO_CreateField dbX, "Gehaltsbuchungen", "Rückvergütung", dbCurrency
   
    ' Standardwert setzen
    dbX.TableDefs("Gehaltsbuchungen").Fields("Rückvergütung").DefaultValue = 0

    ' Wert für bereits vorhandene Datensätze nachtragen
    dbX.Execute "UPDATE Gehaltsbuchungen SET Gehaltsbuchungen.Rückvergütung = 0"
End If

dbX.Close
Set dbX = Nothing


Die Schaltfläche erhielt den Code
Code:
Call cmb_Update


Jetzt erhalte ich die Fehlermeldung:
Zitat:
Fehler beim Kompilieren: Außerhalb einer Prozedur ungültig


Wie kann ich mein Update verwenden? Eigentlich darf es nur laufen, wenn der User die korrekte Lizenznummer eingegeben hat. Sad

_________________
Danke und Salü
Louis
ebs17
Learning by Doing - Bastler


Verfasst am:
23. Sep 2009, 10:03
Rufname:
Wohnort: Reinsberg


AW: Update für mde: Neues Feld in Tabelle einfügen - AW: Update für mde: Neues Feld in Tabelle einfügen

Nach oben
       Version: Office 2k (2000)

Das sind jetzt aber völlig andere Fragen als die des ursprünglichen Themas, das ich als gelöst betrachte.

(1) Ein Modul sollte neben Code auch eine Funktions-/Subdeklaration enthalten, ein Option Explicit sowieso. Das sehe ich bei Dir nicht. Mehr Sorgfalt statt Aktionismus scheint angeraten zu sein.

(2) Es gibt Varianten, wo ein Lizenzschlüssel nur einmalig eingegeben werden muss und dieser dann in irgendeiner Form im System des Anwenders abgelegt wird.
Somit könnte die Updateprozedur diesen Schlüssel auslesen und auswerten.
Näher habe ich mich damit nicht befasst, bei mir gibt es eine schlichte Laufzeitbeschränkung auf ein Datum bezogen, und berechtigte Anwender erhalten inklusive einem Update eine Laufzeitverlängerung.
Bezüglich Lizenzen kannst Du Dich bei Thomas Keßler umsehen: http://www.tksoft-online.de/

_________________
Mit freundlichem Glück Auf!

Eberhard
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen




Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Bestimmte Daten aus 2 Tabellen an eine 3. Tabelle anfügen 2 Voeman 110 17. Mai 2010, 10:26
Voeman Bestimmte Daten aus 2 Tabellen an eine 3. Tabelle anfügen
Keine neuen Beiträge Access Berichte: Access 2007: Bild in Bericht mit Pfad aus Tabelle 3 ehonk 208 13. Apr 2010, 05:12
Willi Wipp Access 2007: Bild in Bericht mit Pfad aus Tabelle
Keine neuen Beiträge Access Formulare: Listenfeld 1spalte->neues Form;alle Daten aus Tab übergeb 27 Sadie007 412 02. Feb 2010, 13:32
käsebrot1234 Listenfeld 1spalte->neues Form;alle Daten aus Tab übergeb
Keine neuen Beiträge Access Programmierung / VBA: Per VBA Feld errechnen mit wert aus Folgezeile 14 lbijl 311 14. Dez 2009, 18:54
MiLie Per VBA Feld errechnen mit wert aus Folgezeile
Keine neuen Beiträge Access Tabellen & Abfragen: Dropdownbox in Tabelle - Werte aus anderen Tabellen anzeigen 1 mrpinkrocks 209 13. Aug 2009, 14:27
derArb Dropdownbox in Tabelle - Werte aus anderen Tabellen anzeigen
Keine neuen Beiträge Access Hilfe: Tabelle mit HTML als CSV exportieren 1 Kai Mathieu 418 29. Mai 2009, 17:51
steffen0815 Tabelle mit HTML als CSV exportieren
Keine neuen Beiträge Access Programmierung / VBA: String Zeichen einfügen nach jedem dritten zeichen 2 Ledge 1320 27. Mai 2008, 19:36
Ledge String Zeichen einfügen nach jedem dritten zeichen
Keine neuen Beiträge Access Programmierung / VBA: Neuer Datensatz einfügen und Laufzeitfehler 3346 8 Honky 1120 30. Jan 2008, 23:02
Honky Neuer Datensatz einfügen und Laufzeitfehler 3346
Keine neuen Beiträge Access Hilfe: Daten in bestimmte Stelle einer txt-datei einfügen 5 Bladerunner 408 18. Jul 2007, 00:10
Willi Wipp Daten in bestimmte Stelle einer txt-datei einfügen
Keine neuen Beiträge Access Programmierung / VBA: Daten aus der DB in eine Excel Tabelle schreiben?! 1 Valor2002 409 19. Apr 2007, 19:34
steffen0815 Daten aus der DB in eine Excel Tabelle schreiben?!
Keine neuen Beiträge Access Programmierung / VBA: Access 2003 + Access XP + mde Problem 2 Nerion 1518 10. Feb 2007, 19:36
Nerion Access 2003 + Access XP + mde Problem
Keine neuen Beiträge Access Programmierung / VBA: Max Wert aus Tabelle 2 nathy84 2235 06. Okt 2006, 10:41
Nouba Max Wert aus Tabelle
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Excel Diagramme