collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 103
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 2
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 14160
  • stats Beiträge insgesamt: 68645
  • stats Themen insgesamt: 9248
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Datenbank mit DB_open table in Front und Backend trennen  (Gelesen 530 mal)

Offline martie01

  • Newbie
  • Beiträge: 14
Datenbank mit DB_open table in Front und Backend trennen
« am: Dezember 04, 2018, 21:31:03 »
Hallo,
ich hab eine Datenbank , welche ich nun aufteilen möchte.Dabei bekomme ich die Fehlermeldung im Bereich "DB open table".
Was muss ich tun, um diese Datenbank trotzdem aufteilen zu können.
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7535
Re: Datenbank mit DB_open table in Front und Backend trennen
« Antwort #1 am: Dezember 04, 2018, 22:42:05 »
Hallo,
glaubst Du ernsthaft mit den Angaben könnte jemand helfen ?
Gruß
Klaus
 

Offline martie01

  • Newbie
  • Beiträge: 14
Re: Datenbank mit DB_open table in Front und Backend trennen
« Antwort #2 am: Dezember 07, 2018, 20:31:41 »
Hallo, wenn eine(r) Ahnung von der Materie hat, und  vom Prinzip weiterhelfen möchte, glaube ich schon.
Ich weiss ja nicht, welche Infos fehlen.
Wie gesagt, ich habe eine Datenbank, welche  ich in Front und Backend aufteilen möchte. Bis auf den Part der...Dbopentable funktioniert das auch. Wenn ich dbopentable in db opendynaset tausche,  bekomme ich die Fehlermeldung... operation wird für diesen objekttyp nicht unterstützt
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1449
Re: Datenbank mit DB_open table in Front und Backend trennen
« Antwort #3 am: Dezember 07, 2018, 21:14:08 »
Hier kann man wirklich nur raten. Recordsets über verknüpfte Tabellen können nicht mit der Option dbOpenTable geöffnet werden. Ist dieser Öffnungsmodus gewünscht, so muss ein neues Datenbank-Objekt über die Datenbank (Backend) geöffnet werden, in dem die Taelle beheimatet ist.
Code: Visual Basic
   Dim db As DAO.Database

   Set db = OpenDatabase("C:\der\pfad\zum\be.accdb")
   With db.OpenRecordset("tabelle_im_be", dbOpenTable)
      'mach was mit dem Recordset
     .Close
   End With
   db.Close
[edit]Klammern hinzugefügt[/edit]
« Letzte Änderung: Dezember 08, 2018, 18:44:25 von Lachtaube »
Grüße von der (⌒▽⌒)
 

Offline martie01

  • Newbie
  • Beiträge: 14
Re: Datenbank mit DB_open table in Front und Backend trennen
« Antwort #4 am: Dezember 08, 2018, 12:56:01 »
Hallo,erst mal schon mal Danke für die Antwort. wenn ich das so umsetzte, wie Du beschrieben hast, erhalte ich den text in rot .
Set DB =  OpenDatabase "C:\Users\martin\Desktop\xyz_be.accdb" :-\

Ich würde das auch lieber als dbopendynaset gestalten, habe nur leider keinen Plan, wie das geht.
Ich habe diesen Bereich bei mir in die Datenbank implementiert .
http://forum.freeaccess.de/YaBB.pl?num=1053085431/16

Was müsste ich denn tun, um dieses als dbopendynaset umzusetzen??
 

Offline martie01

  • Newbie
  • Beiträge: 14
Re: Datenbank mit DB_open table in Front und Backend trennen
« Antwort #5 am: Dezember 08, 2018, 13:04:05 »
Anmerkung : die Klammern fehlten. Klappt trotzdem nicht.
Fehlermeldung ...unzulässige Operation
 

Online DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23531
Re: Datenbank mit DB_open table in Front und Backend trennen
« Antwort #6 am: Dezember 08, 2018, 13:18:07 »
Hallo,

es wäre vorteilhaft, Deine  gesamte Problematik vollständig zu erläutern anstatt an die Ahnung-von-der-Materie  anderer Leute  zu glauben....


Wenn die DB aufgeteilt ist, warum soll das BE als separate Database geöffnet werden?

Offline martie01

  • Newbie
  • Beiträge: 14
Re: Datenbank mit DB_open table in Front und Backend trennen
« Antwort #7 am: Dezember 08, 2018, 13:48:07 »
Ich dachte , ich hätte mein Problem ausreichend erläutert.
Ich möchte diesen  VBA Code  http://forum.freeaccess.de/YaBB.pl?num=1053085431/16
so umsetzten, das er in einer geteilten Access Datenbank funktioniert.
Danke
 

Online Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1983
Re: Datenbank mit DB_open table in Front und Backend trennen
« Antwort #8 am: Dezember 08, 2018, 14:51:37 »
@martie01
Was hat denn der Link mit der Aufteilung zu tun?
Wenn die Aufteilung mit dem Assistenten nicht funktioniert, versuche es manuell.
Alle Tabellen in eine neue DB kopieren; - = Backend.
Tabelle in alter DB (Frontend) löschen und über "Externe Daten" mit der neuen
BE-DB verknüpfen. Dann kannst du über CurrentDb genauso auf die Tabellen
zugreifen als ob sie lokal wären.
Falls du aus dem FE Strukturänderungen am BE vornehmen willst, musst du es so
machen, wie es Lachtaube gezeigt hat; - Referenz per "OpenDatabase" erstellen.
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1449
Re: Datenbank mit DB_open table in Front und Backend trennen
« Antwort #9 am: Dezember 08, 2018, 20:30:52 »
Mit einem Dynaset sollte das ungefähr so funktionieren (Feld- und Tabellennamen wären anzupassen).
Code: Visual Basic
Sub BuildLevelsForArticle(ByVal ArtikelId As Long)
   Dim db As DAO.Database
   Dim Target As DAO.Recordset
   Dim Source As DAO.Recordset
   
   Set db = CurrentDb
   db.Execute "DELETE FROM tmpAufloesung"

   Set Source = db.OpenRecordset("Stueckliste", dbOpenDynaset)
   Set Target = db.OpenRecordset("tmpAufloesung", dbOpenDynaset)
   
   Target.AddNew
   Target!Ebene = 0
   Target!Menge = 1
   Target!ArtikelId_1 = ArtikelId 'das ist weniger logisch
  Target!ArtikelId_2 = ArtikelId 'auf der untersten Ebene - Null wäre klarer
  Target.Update

   Call EvalArticleList(ArtikelId, 0, Source, Target)
   
   Target.Close
   Source.Close
End Sub

Sub EvalArticleList(ByVal ArtikelId As Long, ByVal Ebene As Long, _
                    Source As DAO.Recordset, Target As DAO.Recordset)
   Dim Criteria As String
   Dim bm As Variant

   'Suchkriterium, wo ArtikelId Fremdschlüssel ist, anlegen
  Criteria = BuildCriteria("ArtikelId_F", dbLong, ArtikelId)

   'Suche starten
  Source.FindFirst Criteria
   
   'solange bis nichts mehr gefunden wird
  Do Until Source.NoMatch
      'einen Datensatz in der Zieltabelle erstellen
     Target.AddNew
      Target!Ebene = Ebene + 1
      Target!Menge = Source!Menge
      Target!ArtikelId_1 = ArtikelId
      Target!ArtijelId_2 = ArtikelId_F
      Target.Update
     
      'Position merken
     bm = Source.Bookmark
     
      'alle untegeordneten Artikel der nächsten Ebene finden
     Call EvalArticleList(Source!ArtikelId, Ebene + 1, Target, Source)
     
      'an der gemerkten Position fortsetzen
     Source.Bookmark = bm
     
      'nächsten Artikel auf gleicher Ebene suchen
     Source.FindNext Criteria
   Loop
End Sub
Grüße von der (⌒▽⌒)
 

Offline martie01

  • Newbie
  • Beiträge: 14
Re: Datenbank mit DB_open table in Front und Backend trennen
« Antwort #10 am: Dezember 11, 2018, 21:20:08 »
Hallo Lachtaube, ich habe Deinen oberen Vorschlag versucht umzusetzen.Scheitere jedoch daran, das ich die Tabellen (tbl u.tbl_1 ) nicht zuordnen kann.

Set DB = OpenDatabase("C:\Users\martin\Desktop\alltec V12_061218_be.accdb")
With DB.OpenRecordset("tmpStücklisteAuflösung", dbOpenTable)
With DB.OpenRecordset("tdtaStückliste", dbOpenTable)

'With tbl = DB.OpenRecordset("tmpStücklisteAuflösung", dbOpenTable) 'DB_OPEN_TABLE
'With tbl_1 = DB.OpenRecordset("tdtaStückliste", dbOpenTable)  'DB_OPEN_TABLE

Was mache ich falsch?
Gruss
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1449
Re: Datenbank mit DB_open table in Front und Backend trennen
« Antwort #11 am: Dezember 11, 2018, 21:53:01 »
In den Bruchstücken kann ich ich keinen syntaktischen Fehler entdecken. Folgendes gilt es zu beachten:
Code: Visual Basic
   With ErstesObjekt
      'hier kann auf Methoden des Objekts beginnend mit dem Punkt-Operator
     'zugegriffen werden
     With ZweitesObject
         'hier kann nur auf Methoden vom zweiten Objekt mit dem Punkt-Operator
        'zugegriffen werden
     End With
      'ab hier steht das erste Objekt wieder zur Verfügung
  End With

   'wenn nach dem zweiten With Zugriff auf das erste Objekt benötigt wird,
  'sollte es einer Objektvariablen zugewiesen werden
  Dim rs As DAO.Recordset

   '...
  set rs = db.OpenRecordset(...) 'das Erste Objekt
  With db.OpenRecordset(...) 'das wweite Object
     rs.Seek ... 'Methode des ersten Objekts
     .Seek ...   'Methode des zweiten Objekts
  End With

PS: Code bitte zukünftig nicht als Freitext posten.
Grüße von der (⌒▽⌒)
 

Offline martie01

  • Newbie
  • Beiträge: 14
Re: Datenbank mit DB_open table in Front und Backend trennen
« Antwort #12 am: Dezember 13, 2018, 20:45:12 »
Hallo, so ich habe den Code jetzt eingefügt. Bekomme die Fehlermeldung "End with erwartet ". Kann bitte einer helfen ?

Option Compare Database
Option Explicit

Dim x

Function RekTest()
Static Ebene As Integer
Ebene = Ebene + 1
Debug.Print Ebene
DoEvents
x = RekTest()
End Function

Function StuecklisteFirst(dblArtikelnummer As Double)
Dim DB As dao.Database, tbl As dao.Recordset

DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE * FROM tmpStücklisteAuflösung"
DoCmd.SetWarnings True

Set DB = OpenDatabase("C:\Users\martin\Desktop\alltec V12_061218_be.accdb")
With DB.OpenRecordset("tmpStücklisteAuflösung", dbOpenTable)
'On Error Resume Next

tbl.AddNew
tbl("dtEbene") = 0
tbl("dtAnzahl") = 1
tbl("fiArtikelNrInt_1") = dblArtikelnummer
tbl("fiArtikelNrInt_2") = dblArtikelnummer
tbl.Update

x = StuecklisteNext(dblArtikelnummer)
tbl.Close
DB.Close

End With
End Function

Function StuecklisteNext(dblArtikelnummer As Double)
Dim DB As dao.Database, tbl As dao.Recordset, tbl_1 As dao.Recordset, sSql As String
Static xEbene As Integer

Set DB = OpenDatabase("C:\Users\martin\Desktop\alltec V12_061218_be.accdb")
With DB.OpenRecordset("tmpStücklisteAuflösung", dbOpenTable)
With DB.OpenRecordset("tdtaStückliste", dbOpenTable)

tbl_1.Index = "idArtikelNrInt"

'On Error Resume Next
tbl_1.Seek "=", dblArtikelnummer
If Not tbl_1.NoMatch Then
    xEbene = xEbene + 1
    Do Until tbl_1!idArtikelNrInt <> dblArtikelnummer
        tbl.AddNew
        tbl("dtEbene") = xEbene
        tbl("dtAnzahl") = tbl_1!dtAnzahl
        tbl("fiArtikelNrInt_1") = tbl_1!fiArtikelNrInt
        tbl("fiArtikelNrInt_2") = tbl_1!idArtikelNrInt
        tbl.Update
        x = StuecklisteNext(CDbl(tbl_1!fiArtikelNrInt))
        tbl_1.MoveNext
        If tbl_1.EOF Then Exit Do
        DoEvents
    Loop
xEbene = xEbene - 1
End If

tbl.Close
tbl_1.Close
End With

DB.Close

End Function
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1449
Re: Datenbank mit DB_open table in Front und Backend trennen
« Antwort #13 am: Dezember 13, 2018, 21:08:48 »
Der Code aus dem anderen Forum ist grottenschlecht, weil er unnötig immer wieder auds Neue Recordsets öffnet und schließt. Lade bitte eine angespeckte Version Deines Front- und Backends mit einigen (ggf. anonymisierten) Spieldaten hier in einem Anhang als Zip-Archiv hoch - dann kann ich Dir etwas basteln.

PS: auch ist die Datenhaltung zu überdenken. Denn, wenn ein Teil mehrmals verbaut werden kann (typisches Beispiel: eine Sechskant-Mutter M8), kann das Deine Struktur nicht mehr abbilden, weil die Mutter nur ein zugehöriges übergeordnetes Teil kennt. Bei einem Stammbaum oder einer Organisation mit jeweils nur einem Vorgesetzten auf jeder Ebene wäre das Ok.
Eine Stückliste ist besser aus der umgekehrten Richtung zu betrachten.
oberteil | unterteil | menge
----------------------------
teil_1   | teil_2    | 2
teil_1   | teil_3    | 3
teil_1   | teil_4    | 4
teil_2   | teil_5    | 3
teil_2   | teil_6    | 2
teil_7   | teil_2    | 1
teil_7   | teil_3    | 5

Am besten wäre es, wenn das Backend CTEs (Common Table Expressions) unterstützt, dann kann man nämlich das Ergebnis einfach mit einer Abfrage ermitteln, wie in diesem <dbfiddle>.
« Letzte Änderung: Dezember 16, 2018, 06:18:48 von Lachtaube »
Grüße von der (⌒▽⌒)
 

Offline martie01

  • Newbie
  • Beiträge: 14
Re: Datenbank mit DB_open table in Front und Backend trennen
« Antwort #14 am: Dezember 16, 2018, 12:28:42 »
Hallo Lachtaube, das ist der Bereich, in dem die Stücklistenaufteilung steckt.
Gruss
 

 

Benutzername und Passwortabfrage beim Öffnen jeder Datenbank

Begonnen von mradlmaierBoard Access-Hilfe

Antworten: 5
Aufrufe: 6555
Letzter Beitrag Mai 16, 2010, 13:44:16
von database
Hilfe!!!!! Brauche dringend jemanden der mir eine Datenbank erstellt!!!

Begonnen von schnappi00Board Access-Hilfe

Antworten: 1
Aufrufe: 2794
Letzter Beitrag Juni 05, 2010, 18:26:40
von DF6GL
Klassendiagramm aus der bestehneden Datenbank erstellen

Begonnen von Muhtar99Board Access-Hilfe

Antworten: 1
Aufrufe: 4934
Letzter Beitrag Juni 18, 2010, 22:20:27
von database
Datenbank zur Logistikgerechten Produktentwicklung

Begonnen von ohnePlanBoard Tabelle/Abfrage

Antworten: 2
Aufrufe: 3106
Letzter Beitrag Juni 26, 2010, 09:47:53
von accessundich
exportieren von zellen in access datenbank

Begonnen von thomutBoard Microsoft Excel

Antworten: 0
Aufrufe: 2228
Letzter Beitrag Juli 04, 2010, 15:47:03
von thomut