So funktioniert JustAnswer:

  • Fragen Sie einen Experten
    Tausende Experten in über 200 Kategorien.
  • Erhalten Sie eine professionelle Antwort
    Per E-Mail oder sofortiger Benachrichtigung, während Sie auf unserer Website warten.
    Stellen Sie ggf. weitere Anschlussfragen.
  • 100%ige Zufriedenheit garantiert
    Bewerten Sie die erhaltene Antwort.

Stellen Sie Ihre Frage an Tronic.

Tronic
Tronic, IT-Specialist
Kategorie: Computer
Zufriedene Kunden: 2269
Erfahrung:  Elektroniker und EDV-Service
31581453
Geben Sie Ihre Frage in der Kategorie Computer hier ein
Tronic ist jetzt online.

Hallo, bin von einem XP-32bit Rechner auf einen WIN7 Home

Kundenfrage

Hallo,

bin von einem XP-32bit Rechner auf einen WIN7 Home Premium-64bit-Rechner umgestiegen.
Diese WIN-Version hat die DAO2.5/3.5 nicht mehr drauf. Hab also als Verweis die DAO 3.6 angeklickt. Nun funktioniert der Befehl

rstBuchungszeile.[Istwerte zur Gänze erfasst] = True

nicht mehr. Hab ihn schon auf

rstBuchungszeile.[Istwerte zur Gaenze erfasst] = True

abgeändert und die dahinterliegenden Tabellen und Abfragen auf "Gaenze" statt "Gänze" korrigiert. Hat aber nichts geholfen?

Woran liegt das? Man hat mir gesagt, dass ich mit WIN-7-Home-Premium auch keinen XP-Modus fahren kann, mir also nichts anderes übrig bleibt, als alle Makros auf die DAO 3.6 zu verbessern. Nur wo liegt der Fehler. Was verträgt die DAO 3.6 nicht mehr, was die DAO 3.5 problemlos bewältigt hat?

Wäre nett, wenn Sie mir helfen könnten. Besten Dank u. LG
Martin Egger
Gepostet: vor 5 Jahren.
Kategorie: Computer
Experte:  IT-Fachinformatiker hat geantwortet vor 5 Jahren.
Hallo,

wo tritt das Problem denn auf? DAO 3.x ist vollkommen veraltet das funktioniert nicht mehr unter Windows 7 und auch nicht unter Vista. Es gibt einen XP Kompatibilitätsmodus aber der hilft Ihnen rein gar nicht denn DAO ist ja nicht vorhanden. Geht es um eine MS Access Anwendung?

Ich muss die Office Version und Komponente wissen, bei der das auftritt.

Gruss Günter

Aus dem Wiki erhalten Sie folgende Detail Informationen zum Thema DAO:

"
Data Access Objects, in der deutschsprachigen Dokumentation „Datenzugriffsobjekte“, üblicherweise mit der Abkürzung „DAO“ bezeichnet, ist eine Schnittstellen-Bibliothek von Microsoft für den Zugriff auf Daten und Strukturen von Datenbanken, speziell Microsoft Access Datenbanken (MDBs).

Bis einschließlich Access 97 war die DAO-Bibliothek die Standard-Bibliothek zum programmiertechnischen Zugriff auf die Datenbank-Objekte und Daten in Access selbst. Bei Access 2000, Access 2002 (Office XP) und Access 2003 wurde DAO nur aus Kompatibilitätsgründen noch mitgeliefert (in der Version 3.6), als Standard-Bibliothek war ADO vorgesehen. DAO erfreut sich aber bei Access-Entwicklern immer noch großer Beliebtheit, u. a. da es spezifischeren Zugriff auf Teile von Access erlaubt als ADO.

Bei Access 2007 ist die DAO-Bibliothek unter der neuen Lang-Bezeichnung „Access Database Engine Object Library“ mit der Versionsnummer 12.0 (Dateiname: ACEDAO.DLL, Qualifizierer im Code weiterhin: DAO) wieder Standard-Bibliothek für den Zugriff auf Datenbank-Objekte und Daten in MDBs.

Die DAO-Bibliothek bietet eine zweiteilige Objekthierarchie: Ausgehend vom Basis-Objekt „DBEngine“ gibt es „Workspace“-Objekte der Typen „Jet Workspace“ (zum Zugriff auf MDBs) und „ODBCDirect Workspace“ (seit DAO 3.5, zum Zugriff auf ODBC-Datenquellen) mit jeweils unterschiedlichen untergeordneten Objekten.

Ein „Jet Workspace“ enthält „Database“-Objekte, die MDBs repräsentieren. Auf die Datenstruktur der MDB kann über „TableDef“-, „Relations“- und „QueryDef“-Objekte zugegriffen werden, auf die Daten über „Recordset“-Objekte. Des Weiteren gibt es „User“-, „Group“-, „Container“- und „Document“-Objekte für den Zugriff auf das Rechte-System von Access. In der Version 12.0 sind letztere Objekte aber ganz ausgeblendet oder deren Eigenschaften / Methoden, die sich speziell auf das Rechte-System beziehen. Ein „Jet Workspace“ nutzt die Bibliotheken der Jet-Engine für die tatsächliche Ausführung.

Ein „ODBCDirect Workspace“ enthält Alternativ zu „Database“-Objekten „Connection“-Objekte, darunter aber nur Recordset- und, bei Connection-Objekten, QueryDef-Objekte. Ein „ODBCDirect Workspace“ greift über die RDO-Bibliothek auf die ODBC-API zu. Die Version 12.0 unterstützt den „ODBCDirect Workspace“ laut Dokumentation nicht mehr und verweist auf ADO für den Zugriff auf ODBC-Datenquellen."

Quelle: Wikipedia

Kunde: hat geantwortet vor 5 Jahren.

Bei der Office-Version handelt es sich um

 

MS Office Professional 2007 (Akademic)

 

Lt. Packung enthält es die folgenden MS Office Programme, u.a

Access 2007

 

Auf der Packung steht weiters:

OFFICE PRO 2007 WIN32 GERMAN AE CD

 

Liegt es vielleicht daran, dass es sich bei dem Office-Paket um eine 32-bit-Version handelt?

 

LG Martin Egger

 

Experte:  IT-Fachinformatiker hat geantwortet vor 5 Jahren.
Nein, auf keinen Fall das liegt daran, weil Sie eine ältere Datenbankschnittstelle verwenden die es vor 10 Jahren gab und inzwischen weiter entwickelt wurde. Ich muss konkret wissen bei welcher Datenbanki, Exceldatei oder was auch immer das Problem auftaucht sonst kann ich Ihnen nicht helfen ich muss also die Datei und das Programm kennen bei dem das verursacht wird. Access ist logisch daher vermute ich, das Sie eine Accessdatenbank nutzen wollen korrekt? Gruss Günter
Kunde: hat geantwortet vor 5 Jahren.
Natürlich!
Ich habe 2 Datenbanken eine Front- und eine Back-End-Acces-DB. Alle Tabellen liegen in der Back-End-DB. Der Rest inklusive der Macros in der Front-Datenbank.

In einem Formular habe ich das Feld "Istwerte zur Gänze erfasst". (J/N) Beim Verlassen des Feldes soll geprüft werden, ob dieses Feld nun true oder false ist. Hier das ganze Makro:

Private Sub Istwerte_zur_Gänze_erfasst_LostFocus()
Dim db As Database, rstBeleg As Recordset, rstBuchungszeile As Recordset
Set db = CurrentDb

With CodeContextObject

If (.[Fälligkeit] > 0 And .[Buchungszeile-ID Planwert] > 0 And forms![F:Buchhaltung-Journal-Neu]![Belegart] = "PR") Then
'... handelt es sich eindeutig um einen Planwert (z.B. aus der Auftragsbearbeitung)
'der eine Korrektor zu einem früher geplanten Mittelzu- oder -abfluss darstellt.
'Da es keinen Teilauftrag gibt, ist das Feld "Istwerte zur Gänze erfasst" immer auf true zu setzen:
.[Istwerte zur Gänze erfasst] = True
End If

If (.[Buchungszeile-ID Planwert] > 0) Then
Set rstBuchungszeile = db.OpenRecordset("Select * from [A:Beleg&Buchung] WHERE [Buchungszeile-ID Planwert]= " & forms![F:Buchhaltung-Journal-Neu]![UF:Beleg&Buchung].Form![Buchungszeile-ID Planwert], dbOpenDynaset)
rstBuchungszeile.MoveFirst
Do While Not rstBuchungszeile.EOF
rstBuchungszeile.Edit 'Bearbeiten zulassen'
If (.[Istwerte zur Gaenze erfasst] = True) Then

===> FEHLER IN DIESER ZEILE: rstBuchungszeile.[Istwerte zur Gaenze erfasst] = True

Else: rstBuchungszeile.[Istwerte zur Gaenze erfasst] = False
End If
rstBuchungszeile.Update 'Neue Daten speichern
rstBuchungszeile.MoveNext
Loop
rstBuchungszeile.Close
End If

If (.[Fälligkeit] > 0 And .[Buchungszeile-ID Planwert] > 0) Then

If (.[Istwerte zur Gaenze erfasst] = True) Then

'Wenn also alle Istwerte erfasst sind,
'somit die Werte des Plandatensatzes zur Gänze überholt sind,
'dann setze zum 1. im Plandatensatz das Feld "Fälligkeit erledigt" auf "bezahlt / true"
'Suche im rst demzufolge nach "Buchungszeile-ID" = forms![F:Buchhaltung-Journal-Neu]..."Buchungszeile-ID Planwert"

Set rstBuchungszeile = db.OpenRecordset("Select * from [A:Beleg&Buchung] WHERE [Buchungszeile-ID] = " & forms![F:Buchhaltung-Journal-Neu]![UF:Beleg&Buchung].Form![Buchungszeile-ID Planwert], dbOpenDynaset)
rstBuchungszeile.Edit 'Bearbeiten zulassen
rstBuchungszeile.[Fälligkeit erledigt] = True
rstBuchungszeile.Update 'Neue Daten speichern
rstBuchungszeile.Close

'Es muss darüberhinaus aber noch nachgesehen werden, ob es (ausser dem aktuellen) nicht noch weitere Datensätze gibt,
'die sich auf denselben Planwert beziehen.
'In diesem Fall ist in eben diesen Datensätzen (ausser dem aktuellen) das Feld "Fälligkeit erledigt" auf "bezahlt / true" zu setzen.
'Im aktuellen Datensatz deshalb nicht, da es sich ja um eine Buchung auf einem Forderungs- oder Verbindlichkeitenkonto handeln kann,
'und die Fälligkeit dann eben noch nicht erledigt ist.
'Suche im rst demzufolge nach "Buchungszeile-ID Planwert" = forms![F:Buchhaltung-Journal-Neu]..."Buchungszeile-ID Planwert"
'aber die "Buchungszeile-ID" darf nicht = jener im aktuellen Datensatz sein.

Set rstBuchungszeile = db.OpenRecordset("Select * from [A:Beleg&Buchung] WHERE [Buchungszeile-ID Planwert] = " & forms![F:Buchhaltung-Journal-Neu]![UF:Beleg&Buchung].Form![Buchungszeile-ID Planwert], dbOpenDynaset)
rstBuchungszeile.MoveFirst
Do While Not rstBuchungszeile.EOF
rstBuchungszeile.Edit 'Bearbeiten zulassen'
rstBuchungszeile.[Fälligkeit erledigt] = True
rstBuchungszeile.Update 'Neue Daten speichern
rstBuchungszeile.MoveNext
Loop
rstBuchungszeile.Close
'Durch die letzten Zeilen, wird auch der Wert im aktuellen Feld "Fälligkeit erledigt" auf "true" gesetzt.
'Wenn es sich allerdings um eine offene Forderung oder Verbindlichkeit handelt, dann darf das nicht geschehen.
'Daher wird eine MsgBox eingeblendet, wo der Anwender ggf. noch eine Korrektur vornehmen kann.
Dim Msg, Style, Response
Msg = "ACHTUNG: Sie haben festgelegt, dass der aktuelle Datensatz alle Planwerte ersetzt. Das Programm hat im Feld 'Rechnung bezahlt' daher automatisch ein Häkchen gesetzt. Handelt es sich bei der gegenständlichen Buchungszeile aber vielleicht noch um einen offenen Forderungs- oder Verbindlichkeitenbetrag ? "
Style = vbYesNo + vbDefaultButton2
Response = MsgBox(Msg, Style)
If Response = vbYes Then
.[Fälligkeit erledigt] = False
End If

Else: '... wenn also noch nicht alle Istwerte zum Planwert erfasst sind,
'sprich der offene Betrag noch nicht vollständig beglichen wurde:

'Dann darf zum 1. das Feld "Fälligkeit erledigt" keinesfalls auf "bezahlt / true" gesetzt sein.
'Hat der Benutzer dies irrtümlich getan, wird dies nachfolgend korrigiert.
.[Fälligkeit erledigt] = False

'Dann soll zum 2. eruiert werden, ob es sich um eine Teilrechnung (Belegart AR oder ER)
'oder eine Teilzahlung (sonstige Belegart, also Bank oder Kassa) handelt:
If (forms![F:Buchhaltung-Journal-Neu]![Belegart] = "AR" Or forms![F:Buchhaltung-Journal-Neu]![Belegart] = "ER") Then
'... handelt es sich - da "Istwerte zur Gänze erfasst" false ist -
'eindeutig um eine Teilrechnung.
'In diesem Fall soll zum einen einmal der alte Planwert auf "bezahlt" gesetzt werden.
DoCmd.GoToControl "Fälligkeit"

forms![F:Beleg&Buchung]![Fälligkeit erledigt] = True

Else: '... muss es sich um eine TEILZAHLUNG handeln,
'wobei dann nur das Feld Fälligkeit im ursprünglichen Datensatz
'den Wert der Fälligkeit der nächsten Zahlung, die ja im Rahmen
'der Teilzahlung angegeben wird, annehmen soll:

Set rstBuchungszeile = db.OpenRecordset("Select * from [A:Beleg&Buchung] WHERE [Buchungszeile-ID]=" & forms![F:Buchhaltung-Journal-Neu]![UF:Beleg&Buchung].Form![Buchungszeile-ID Planwert], dbOpenDynaset)
rstBuchungszeile.Edit 'Bearbeiten zulassen
rstBuchungszeile.[Fälligkeit] = forms![F:Buchhaltung-Journal-Neu]![UF:Beleg&Buchung].Form![Fälligkeit]
rstBuchungszeile.Update 'Neue Daten speichern
rstBuchungszeile.Close

'Weiters muss aber nachgesehen werden, ob es sonst noch Datensätze gibt,
'die sich auf den Plan-Datensatz beziehen,
'denn auch in diesen ist die Fälligkeit noch zu korrigieren:
Set rstBuchungszeile = db.OpenRecordset("Select * from [A:Beleg&Buchung] WHERE [Buchungszeile-ID Planwert]=" & forms![F:Buchhaltung-Journal-Neu]![UF:Beleg&Buchung].Form![Buchungszeile-ID Planwert], dbOpenDynaset)
rstBuchungszeile.MoveFirst
Do While Not rstBuchungszeile.EOF
rstBuchungszeile.Edit 'Bearbeiten des Datensatzes zulassen
rstBuchungszeile.[Fälligkeit] = .[Fälligkeit]
rstBuchungszeile.Update 'Bearbeiteten Datensatz speichern
rstBuchungszeile.MoveNext
Loop
rstBuchungszeile.Close

End If
End If
End If
End With
End Sub

LG Martin Egger
Experte:  IT-Fachinformatiker hat geantwortet vor 5 Jahren.
Hallo,

alsom den Code kann ich nicht testen aber ich würde mal das hier am Anfang der DB setzen:

Dim Db As Database
Dim Rs As RecordSet2


Es ist so: Sie müssen RecordSet2 benutzen dann müsste es klappen. RecordSet selbst hat ab Access 2007 eine andere Bedeutung. Es müsste aber auch das hier klappen:

Dim db As DAO.Database
Dim rs As DAO.Recordset2
Set db = CurrentDb


Das müssen Sie im Code entsprechend ändern, Rest bleibt wie er ist.

LG Günter
Kunde: hat geantwortet vor 5 Jahren.
Recordset2 gibt es bei mir nach eingabe von DAO. als Auswahlkriterium nicht!

LG Martin Egger
Experte:  IT-Fachinformatiker hat geantwortet vor 5 Jahren.
Hallo, machen Sie es bitte wie folgt:

Dim db As DAO.Database
Dim rs As DAO.Recordset2
Set db = CurrentDb


Ihre Datenbank muss exakt so modifiziert werden. Evtl. im VBA-Editor Menü Extras > Verweise > Microsoft Office Object Library | DAO anwählen muss aber auch bereits so funktionieren.

Gruss Günter
Kunde: hat geantwortet vor 5 Jahren.
Hab das nun folgendermaßen korrigiert:

Dim db As DAO.Database
Dim rsBeleg As DAO.Recordset2
Dim rsBuchungszeile As DAO.Recordset2
Set db = CurrentDb

==> wirft mich nun aber bereits in der Zeile "Dim db As DAO.Databas"

Bei den Verweisen ist eingestellt:
Microsoft Access 2007 12 Object Library
==> und sagt mir auch, dass das Programm im Moment darauf zugreift.

Noch was: Wenn ich das Programm starten will, bekomme ich eine Einblendung "Teil der Datenbank wurde deaktiviert", dann muss man über Optionen "für diese eine Sitzung deaktivieren" anklicken. Das nervt. Kann man das nicht so einstellen, dass es immer deaktiviert wird?

Experte:  IT-Fachinformatiker hat geantwortet vor 5 Jahren.
Nein, können Sie nicht und das ist auch gewollt. Man kann in der Registry etwas ändern das ist aber nicht ungefährlich daher lassen wir das erst mal weg. Sie können sichere und vertrauenswürdige Speicherorte angeben, dann verschwindet die Meldung:

http://www.accessribbon.de/?Sicherheit:Vertrauenswuerdige_Speicherorte

Ich schaue noch mal nach bzgl des Codes.

LG Günter
Kunde: hat geantwortet vor 5 Jahren.
Hallo,

hab noch mal unter den Verweisen nachgesehen. Dort gibt es einen möglichen Verweis zum Anklicken:

Microsoft Access 2007 Database ENGINE Objekt Library (oder so).
... und seitdem ich das angeklickt habe, läuft die Kompilierung drüber !!!

Muss jetzt leider weg. Werd das heute Abend noch weiter testen und Ihnen dann Bescheid geben. Vielleicht lag es wirklich nur an diesem ENGINE-Verweis !?

LG Martin Egger
Experte:  IT-Fachinformatiker hat geantwortet vor 5 Jahren.
Okay, so ich habs so klappts bei mir:

Dim db As Database
Dim qd As QueryDef
Dim rs As Recordset2

Set db = CurrentDb

usw.

notwendige Verweise:

Microsoft Office 12 Access Database Engine Object
Microsoft Access 12 Object Library
Visual Basic for Applications
OLE Automation


Schauen Sie mal in den Verweisen da muss etwas von DAO/ADO drin sein ich hab grad leider kein Access 2010 hier aber ich bin mir da sehr sicher, weil ich selbst diverse Access Projekte mache und seit 1997 "dabei" bin.

LG Günter

Bekannt aus:

 
 
 
„[...]mehr als Zehntausend Experten weltweit; 1500 davon in Deutschland. Acht Jahre nach dem Start ist das [...] Online-Unternehmen mit seinen 90 Mitarbeitern die größte Web-Seite für das Vermitteln von Experten von Anwälten über Ärzte bis hin zu Universitätsprofessoren.“
„Wer eine fachmänische Lösung für ein medizinisches, rechtliches oder technisches Problem sucht, kann das jetzt auch im Internet tun. Lebenshilfe auf die schnelle, unkomplizierte und vor allem erschwingliche Art bietet die Seite www.justanswer.de. Etwa 1500 Experten stehen per Mail für Fragen zu ca. 200 Fachgebieten rund um die Uhr zur Verfügung."
„Rat gewünscht? Rechtliche, medizinische oder allgemeine Fragen beantworten Experten unter www.justanswer.de."
„JustAnswer, die weltweit führende Online-Plattform für Expertenfragen und -antworten, bietet ab sofort noch mehr Sicherheit und Qualität für Verbraucher."
„Ob Vorbereitung, Notfall oder Reklamation nach dem Urlaub - JustAnswer bietet jederzeit schnelle, kompetente Antworten"
„Die Online-Plattform JustAnswer bringt Ratsuchende und Experten in über 200 Fachgebieten zusammen."
 
 
 

Was unsere Besucher über uns sagen:

 
 
 
  • Ich bedauere, dass ich nicht gleich bei Ihnen gelandet bin. Die Leerung des Cache hat das Problem gelöst. Danke Gerd Schönbuchner Grafrath
< Zurück | Weiter >
  • Ich bedauere, dass ich nicht gleich bei Ihnen gelandet bin. Die Leerung des Cache hat das Problem gelöst. Danke Gerd Schönbuchner Grafrath
  • Endlich ein Experte, der mir wirklich weiterhelfen konnte! DANKE! JustAnswer Kunde Taunusstein
  • Ihre Antwort hat mir sehr geholfen, die richtigen Entscheidungen zu treffen. Dass Sie mir darüber hinaus noch 2 Empfehlungen gegeben haben fand ich super. Vielen Dank! JustAnswer Kunde Freiburg
  • Die ausgearbeiteten Hilfen waren gut strukturiert, leicht verständlich und zu 100% hilfreich für mich. Vielen Dank Markus B. Karlsruhe
  • Sehr schnelle und kompetente Antwort, die für mich bares Geld bedeutet. Vielen Dank! S.Stober K.
  • Herzlichen Dank! Hab durch Ihre Antwort viel Geld gespart! Ben R. Deutschland
  • Sehr schnelle und kompetente Hilfestellung. Besonders für mich als Laien wurde alles sehr verständlich erklärt. Gerne wieder! Rosengl Bad Tölz
 
 
 

Lernen Sie unsere Experten kennen:

 
 
 
  • Tronic

    Tronic

    IT-Specialist

    Zufriedene Kunden:

    2269
    Elektroniker und EDV-Service
< Zurück | Weiter >
  • http://ww2.justanswer.com/uploads/PY/Pyroflash/2011-4-21_104934_tronic.64x64.jpg Avatar von Tronic

    Tronic

    IT-Specialist

    Zufriedene Kunden:

    2269
    Elektroniker und EDV-Service
  • http://ww2.justanswer.com/uploads/rufushoschi/2010-11-08_135947_bild.jpg Avatar von IT-Fachinformatiker

    IT-Fachinformatiker

    Systemadministrator

    Zufriedene Kunden:

    6338
    Software Entwicklung, Projekt Erfahrung, Windows-Netzwerke, Linux-Netzwerke, Windows/Linux-Server
  • http://ww2.justanswer.com/uploads/COMINAROSA/2010-02-03_172238_PASSBILD.JPG Avatar von COMIN IT-Service

    COMIN IT-Service

    Dipl.-Ing.

    Zufriedene Kunden:

    779
    Dipl.Ing (FH) ET, NT, IT
  • http://ww2.justanswer.com/uploads/RaubergerConcep/2010-03-02_102740_Portraet64.jpg Avatar von RaubergerConcept

    RaubergerConcept

    IT-Specialist

    Zufriedene Kunden:

    234
    Mehr als 10 Jahre Erfahrung in Softwareentwicklung und Netzwerktechnik
  • http://ww2.justanswer.com/uploads/LF/lfalkenburg/2015-2-8_01843_.64x64.jpg Avatar von Lutz Falkenburg

    Lutz Falkenburg

    IT-Specialist

    Zufriedene Kunden:

    96
    Seit über 20 Jahren beruflich im IT-/IUK-Bereich tätig. Egal ob EinzelPC der Netzwerk...
  • http://ww2.justanswer.com/uploads/BI/BigDaddyXD/2012-10-24_20126_WhySoSeriousJob.64x64.jpg Avatar von BigDaddyXD

    BigDaddyXD

    Informatiker

    Zufriedene Kunden:

    1588
    Microsoft Certified Professional, Microsoft Certified Desktop Support Technican,...
  • http://ww2.justanswer.com/uploads/PU/Pucky80/2011-5-14_54537_pucky80.64x64.jpg Avatar von Pucky80

    Pucky80

    IT-Systemkaufmann

    Zufriedene Kunden:

    1322
    MCITP (Microsoft Server 2008 Enterprise Administrator)
 
 
 

Ähnliche Fragen in der Kategorie Computer