Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Listenfeld funktioniert in mdb, als accdb ist es leer?
zurück: Formularfenster an Accessfenster anpassen + Systemmenüfeld weiter: Fehlerhafte Darstellung im Formular nach Größenänderung Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Petrocelli
Im Profil kannst Du frei den Rang ändern


Verfasst am:
21. Aug 2012, 13:51
Rufname:

Listenfeld funktioniert in mdb, als accdb ist es leer? - Listenfeld funktioniert in mdb, als accdb ist es leer?

Nach oben
       Version: Office 2007

Hallo,

unsere Auftrags-DB ist bisher unter Access 2007 als mdb gelaufen. Nun habe ich alles auf das 2007er Format konvertiert. Läuft auch alles, soweit ich das bis jetzt feststellen konnte, bis auf ein ungebundenes Listenfeld in einem Form. Das ist jetzt beim Öffnen des Forms leer und es kommt "Kein aktueller Datensatz", obwohl sich außer der Konvertierung nichts geändert hat.
Das ist der Form-Aufruf:
Code:
Private Sub Form_Open(Cancel As Integer)
    DoCmd.Restore
    Me!Abfrage.RowSource = Standardberichte()
End Sub
Das ist die Funktion "Standardberichte", die da aufgerufen wird:
Code:
Public Function Standardberichte()
On Error GoTo Fehler
    Dim DB As DAO.Database
    Dim Berichte As Container, bernamen As Document
    Dim i As Integer
    Dim Liste As String
   
    Liste = ""
    Set DB = CurrentDb
    Set Berichte = DB.Containers("Reports")
    For i = 0 To Berichte.Documents.Count - 1
        Set bernamen = Berichte.Documents(i)
        If Left$(bernamen.Name, 6) = "rep_N_" Then
            Liste = Liste & Mid$(bernamen.Name, 7) & ";"
        End If
    Next i
    Standardberichte = Liste
    DB.Close
Exit_Standardberichte:
    Exit Function
Fehler:
    FehlerAufnahme "mod_Standardberichte", "Standardberichte"
    Resume Exit_Standardberichte
End Function
Debuggen findet nichts. Hat jemand eine Idee, woran das liegen könnte?

Gruß
Petro
kyron9000
Practitioner :)


Verfasst am:
21. Aug 2012, 16:35
Rufname:
Wohnort: Wien


AW: Listenfeld funktioniert in mdb, als accdb ist es leer? - AW: Listenfeld funktioniert in mdb, als accdb ist es leer?

Nach oben
       Version: Office 2007

Hallo,

so wie es aussieht, willst alle Berichte auflisten.
Das würde auch wesentlich einfacher zustande kommen,
in dem du einfach die Tabelle MSysObjects als Datensatzherkunft in die Liste einfügst.
Code:
SELECT Name
FROM   MSysObjects
WHERE  ParentId=-2147483645
Oder du gibst den Code im Form ein...
Code:
Private Sub Form_Load()
    Me!Abfrage.RowSource = vbEmptyString
    Me!Abfrage.RowSourceType = "Wertliste"
    Set conn = Application.CurrentProject
    For Each obj In conn.AllReports
        Me!Abfrage.AddItem obj.Name
    Next obj
End Sub
Deine Liste heißt [Abfrage], oder? Ich frag nur, weil er eigentlich unpassend ist.
Und ja, das ist in AC2010 getestet und funkt... in 2007 kann es im MSysObjects ev. eine andere ParentId geben...
Müsste ich aber erst starten, was ich nicht so gerne mache, da es immer so lange dauert *g*

_________________
Gruß Alfred...

Es ist nicht immer alles so einfach wie es sich im Moment darstellt...
Sonneschein
AC97-Entwicklung, AC2003-2010 nur Test


Verfasst am:
21. Aug 2012, 17:39
Rufname: Mike

AW: Listenfeld funktioniert in mdb, als accdb ist es leer? - AW: Listenfeld funktioniert in mdb, als accdb ist es leer?

Nach oben
       Version: Office 2007

Hallo,
sollte auch in einer ACCDB funktionieren.
Schaue mal nach, ob die Funktion überhaupt etwas zurückgibt, dass heißt ob Berichte mit der passenden Benamsung vorhanden sind.
Auch solltest du kontrollieren, ob das Listenfeld auf "Werteliste" eingestellt ist.

_________________
Grüße
Mike
kyron9000
Practitioner :)


Verfasst am:
21. Aug 2012, 18:16
Rufname:
Wohnort: Wien

AW: Listenfeld funktioniert in mdb, als accdb ist es leer? - AW: Listenfeld funktioniert in mdb, als accdb ist es leer?

Nach oben
       Version: Office 2007

... noch deine Version abgeändert:
Code:
Public Function Standardberichte()
On Error GoTo Fehler
    Dim db     As DAO.Database
    Dim CRep   As Container
    Dim DRep   As Document
    Dim i      As Integer
    Dim sListe As String
   
    sListe = ""
    Set db = CurrentDb
    Set CRep = db.Containers("Reports")
    For Each DRep In CRep.Documents
        If sListe <> "" Then sListe = sListe & ";"
        sListe = sListe & DRep.Name
    Next DRep
    Standardberichte = sListe
    Set db = Nothing
Exit_Standardberichte:
    Exit Function
Fehler:
    FehlerAufnahme "mod_Standardberichte", "Standardberichte"
    Resume Exit_Standardberichte
End Function
...das war's, funktioniert auch... dass "Wertliste" eingestellt ist... ist, so hoffe ich doch klar Smile
PS: deine Version hat einfach "" zurückgegeben Confused da kann nichts angezeigt werden.

_________________
Gruß Alfred...

Es ist nicht immer alles so einfach wie es sich im Moment darstellt...
Sonneschein
AC97-Entwicklung, AC2003-2010 nur Test


Verfasst am:
21. Aug 2012, 18:31
Rufname: Mike


AW: Listenfeld funktioniert in mdb, als accdb ist es leer? - AW: Listenfeld funktioniert in mdb, als accdb ist es leer?

Nach oben
       Version: Office 2007

@Alfred:
Zitat:
PS: deine Version hat einfach "" zurückgegeben
Nein das stimmt so nicht. Die Funktion ist i.O.. Sie filtert allerdings nur bestimmte Berichte.
Zitat:
....dass heißt ob Berichte mit der passenden Benamsung vorhanden sind

_________________
Grüße
Mike
kyron9000
Practitioner :)


Verfasst am:
21. Aug 2012, 18:37
Rufname:
Wohnort: Wien

AW: Listenfeld funktioniert in mdb, als accdb ist es leer? - AW: Listenfeld funktioniert in mdb, als accdb ist es leer?

Nach oben
       Version: Office 2007

... ich weiß

habe das noch mit eingebaut
...Edit: hat die Änderung nicht mehr angenommen.. egal, das wird er hoffentlich selber hinbekommen.

Und, nur zur Sicherheit, @Mike hast du es getestet?
Ich habe kA was das darstellen sollte... Berichte.Documents(i)
vermutlich ist das in der älteren Version gewünscht kA., aber bei mir funktioniert sein
Code auch nicht.
Er hat das nicht neu erstellt...alles hat schon mal so funktioniert!
Da werden die Namen doch auch passen, denke ich.

_________________
Gruß Alfred...

Es ist nicht immer alles so einfach wie es sich im Moment darstellt...
Sonneschein
AC97-Entwicklung, AC2003-2010 nur Test


Verfasst am:
21. Aug 2012, 21:04
Rufname: Mike

AW: Listenfeld funktioniert in mdb, als accdb ist es leer? - AW: Listenfeld funktioniert in mdb, als accdb ist es leer?

Nach oben
       Version: Office 2007

@Alfred:
Ja ich habe es getestet und sehe keinen Grund, warum das nicht gehen soll Confused.
Direktfenster hat folgendes geschrieben:
?Standardberichte
test;test2;

Eine Auflistung kann man mir For each ... oder halt über den Index selbst durchlaufen.
Direktfenster hat folgendes geschrieben:
?currentdb.Containers("Reports").Documents(0).Name
rep_N_test
?currentdb.Containers("Reports").Documents(1).Name
rep_N_test2

_________________
Grüße
Mike
kyron9000
Practitioner :)


Verfasst am:
21. Aug 2012, 21:19
Rufname:
Wohnort: Wien

AW: Listenfeld funktioniert in mdb, als accdb ist es leer? - AW: Listenfeld funktioniert in mdb, als accdb ist es leer?

Nach oben
       Version: Office 2007

... ok, 0 Prob, mach mir jetzt mal keine Gedanken mehr darüber... ich weiß das mein Code funktioniert und mehr braucht es für mich nicht.
Und, ich verstehe den ganzen Aufwand nicht, denn die SQL würde auch schon für die Liste reichen...
Code:
SELECT Name
FROM   MSysObjects
WHERE  Name Like "rep_N_*"
AND    ParentId=-2147483645
Und der Vollständigkeit halber...
Code:
        If Left$(DRep.Name, 6) = "rep_N_" Then
        If sListe <> "" Then sListe = sListe & ";"
            sListe = sListe & DRep.Name
        End If
...der nicht mehr eingefügte Code.
_________________
Gruß Alfred...

Es ist nicht immer alles so einfach wie es sich im Moment darstellt...
Petrocelli
Im Profil kannst Du frei den Rang ändern


Verfasst am:
22. Aug 2012, 08:57
Rufname:

AW: Listenfeld funktioniert in mdb, als accdb ist es leer? - AW: Listenfeld funktioniert in mdb, als accdb ist es leer?

Nach oben
       Version: Office 2007

Hallo,

erstmal vielen Dank für die ganzen Antworten.

Vorab: Das Listenfeld ist auf "Wertliste" eingestellt und die Berichte "rep_N_..." existieren auch.
Der gleiche Code funktioniert ja auch als mdb.

Ich habe den Code jetzt mal wie vorgeschlagen abgeändert:
Code:
Public Function Standardberichte()
On Error GoTo Fehler
    Dim db     As DAO.Database
    Dim CRep   As Container
    Dim DRep   As Document
    Dim i      As Integer
    Dim sListe As String
   
    sListe = ""
    Set db = CurrentDb
    Set CRep = db.Containers("Reports")
    For Each DRep In CRep.Documents
        If Left$(DRep.Name, 6) = "rep_N_" Then
            If sListe <> "" Then sListe = sListe & ";"
            sListe = sListe & DRep.Name
        End If
    Next DRep
    Standardberichte = sListe
    Set db = Nothing
Exit_Standardberichte:
    Exit Function
Fehler:
    FehlerAufnahme "mod_Standardberichte", "Standardberichte"
    Resume Exit_Standardberichte
End Function
Aber es kommt immer noch "kein aktueller Datensatz", auch wenn ich die Filterung auf die "rep_N_...."-Berichte weglasse.

Wenn ich die Testzeilen im Direktfenster angebe, kommt folgendes dabei raus:

?Standardberichte
Pop-Up: "Kein aktueller Datensatz"

?currentdb.Containers("Reports").Documents(0).Name
rep_Angebot
?currentdb.Containers("Reports").Documents(1).Name
rep_Angebot_UB

Also er listet dann nicht die Berichte mit "rep_N_..." auf.

Wenn ich die SQL-Abfrage stattdessen bei der Datensatzquelle einfüge,
kommt keine Fehlermeldung, aber die Berichte werden auch nicht aufgelistet.

Irgendwo ist da noch ein Knackpunkt. Kann da vielleicht was in den Verweisen fehlen, was man bei einer accdb noch einstellen muß?

Gruß
Petro
Sonneschein
AC97-Entwicklung, AC2003-2010 nur Test


Verfasst am:
22. Aug 2012, 09:57
Rufname: Mike

AW: Listenfeld funktioniert in mdb, als accdb ist es leer? - AW: Listenfeld funktioniert in mdb, als accdb ist es leer?

Nach oben
       Version: Office 2007

Hallo,
ich habe keine Erklärung für das Verhalten.

Dies ist dann der Moment, wo man die DB (testweise) neu aufbauen sollte.
Erstelle eine neue DB und importiere alle Objekte der alten DB.

_________________
Grüße
Mike
Petrocelli
Im Profil kannst Du frei den Rang ändern


Verfasst am:
22. Aug 2012, 11:00
Rufname:

AW: Listenfeld funktioniert in mdb, als accdb ist es leer? - AW: Listenfeld funktioniert in mdb, als accdb ist es leer?

Nach oben
       Version: Office 2007

Hallo,

habe ich gemacht (nicht alle Objekte, nur die dafür relevanten). Damit teste ich nun.
Aber das gleiche in grün. Selbst wenn ich die Datensatzquelle des Formulars direkt auf MSysObjects setze, bleibt das Listenfeld leer.
Ist das überhaupt richtig, müßte nicht das Listenfeld direkt abgefragt werden?

Gruß
Petro
kyron9000
Practitioner :)


Verfasst am:
22. Aug 2012, 11:53
Rufname:
Wohnort: Wien

AW: Listenfeld funktioniert in mdb, als accdb ist es leer? - AW: Listenfeld funktioniert in mdb, als accdb ist es leer?

Nach oben
       Version: Office 2007

Hallo,

also, deine erste Variation habe ich auch noch mal umgebaut, funkt bei mir jetzt auch.
Code:
Public Function Standardberichte()
On Error GoTo Fehler
    Dim db As DAO.Database
    Dim Berichte As Container
    Dim bernamen As String
    Dim i As Integer
    Dim Liste As String

    Liste = ""
    Set db = CurrentDb
    Set Berichte = db.Containers("Reports")
    For i = 0 To Berichte.Documents.Count - 1
        bernamen = Berichte.Documents(i).Name
        If Liste <> "" Then Liste = Liste & ";"
        If Left$(bernamen, 6) = "rep_N_" Then
            Liste = Liste & bernamen
        End If
    Next i
    Standardberichte = Liste
    Set db = Nothing
Exit_Standardberichte:
    Exit Function
Fehler:
    MsgBox Err.Description
    FehlerAufnahme "mod_Multiselect", "Standardberichte"
    Resume Exit_Standardberichte
End Function
...da bei mir jetzt sämtliche Versionen funktionieren,
weiß ich dann auch nicht mehr weiter.
Was hast übrigens unter Spaltenanzahl 1 und unter Spaltenbreite?
Textfarbe wird hoffentlich auch passen Smile

Habe jetzt noch eine 2003 nach 2007 konvertiert... funktioniert alles.
und die ID... ParentId=-2147483645 ist überall gleich... 2003/2007/2010

Noch mal Smile schau nach ob diese Berichte überhaupt in der Tabelle MSysObjects dabei stehen!
Die Abfrage ohne dem Kriterium Wie "rep_N_*"!

Zitat:
Selbst wenn ich die Datensatzquelle des Formulars direkt auf MSysObjects setze
... du sollst diesen SQL-Code (MSysObjects ) nicht ins Formular schreiben sondern in das Listenfeld als Datensatzherkunft!
_________________
Gruß Alfred...

Es ist nicht immer alles so einfach wie es sich im Moment darstellt...
Petrocelli
Im Profil kannst Du frei den Rang ändern


Verfasst am:
22. Aug 2012, 14:08
Rufname:

AW: Listenfeld funktioniert in mdb, als accdb ist es leer? - AW: Listenfeld funktioniert in mdb, als accdb ist es leer?

Nach oben
       Version: Office 2007

Hallo,

danke für eure Geduld. Bin nicht so der Access-Crack.

@kyron9000:
Spaltenanzahl 1, Spaltenbreite nichts, die Berichte stehen in der Tabelle MSysObjects.
Wenn ich deinen letzten Code einsetze, sehe ich jetzt endlich die Berichte Very Happy (leider schreibt er das "rep_N_" mit davor, das soll eigentlich nicht sein).
Dann klicke ich auf einen Button "Druckansicht" mit folgender Funktion:
Code:
Private Sub Seitenansicht_Click()
On Error GoTo Fehler
    Dim bername As String

    bername = "rep_N_" + Me!Abfrage
    'Me.Visible = False
    DoCmd.OpenReport bername, acViewPreview
    DoCmd.Maximize
    DoCmd.RunCommand acCmdZoom100
    DoCmd.Close acForm, "frm_DruckBerichte"
Exit_Seitenansicht_Click:
    Exit Sub
Fehler:
    'If Err = 2501 Then      ' Druck abgebrochen
    '    MsgBox "Druckauftrag wurde abgebrochen."
    'End If
    FehlerAufnahme Me.Name, "Seitenansicht_Click"
    Resume Exit_Seitenansicht_Click
End Sub
und dann kommt wieder die Meldung "Kein aktueller Datensatz".

Mit dem SQL-Code bin ich wohl zu doof. Den zeigt er mir dann nur in dem Listenfeld.

Gruß
Petro
Gast



Verfasst am:
22. Aug 2012, 14:25
Rufname:

AW: Listenfeld funktioniert in mdb, als accdb ist es leer? - AW: Listenfeld funktioniert in mdb, als accdb ist es leer?

Nach oben
       Version: Office 2007

... ja auch klar, dann solltest eben das...
Code:
    Liste = Liste & Mid$(bernamen.Name, 7)
wieder einsetzen, das habe ich beim testen entfernt.
Dann wird auch der Berichtaufruf wieder passen.

PS: freundlichen Leuten helfe ich gerne Smile
Petrocelli
Im Profil kannst Du frei den Rang ändern


Verfasst am:
22. Aug 2012, 15:05
Rufname:


AW: Listenfeld funktioniert in mdb, als accdb ist es leer? - AW: Listenfeld funktioniert in mdb, als accdb ist es leer?

Nach oben
       Version: Office 2007

Habe ich gemacht.

Aber das ".Name" mußte ich rausnehmen, sonst markiert er in dieser Zeile "bernamen" als "Ungültiger Bezeichner".

Jetzt klappt anscheinend alles.

Nochmal Danke
Petro
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: mdb Dateigröße 1 Markus????? 1085 22. Nov 2006, 22:25
jens05 mdb Dateigröße
Keine neuen Beiträge Access Tabellen & Abfragen: Aktualisierungsabfrage funktioniert nicht. 1 Lady_S 622 18. Sep 2006, 19:10
rita2008 Aktualisierungsabfrage funktioniert nicht.
Keine neuen Beiträge Access Tabellen & Abfragen: Listenfeld als Parameterquelle für Abfrage funzt nicht 6 dornsat23 980 07. Sep 2006, 14:18
Highlander Listenfeld als Parameterquelle für Abfrage funzt nicht
Keine neuen Beiträge Access Tabellen & Abfragen: In Kreuztabelle "0" wo Feld leer ... 2 ronnie-osullivan 3221 10. Aug 2006, 14:40
ronnie-osullivan In Kreuztabelle "0" wo Feld leer ...
Keine neuen Beiträge Access Tabellen & Abfragen: Kombinationsfeld soll beim "leer bleiben" alles ab 3 Philip 1293 26. Jul 2006, 19:46
jens05 Kombinationsfeld soll beim "leer bleiben" alles ab
Keine neuen Beiträge Access Tabellen & Abfragen: Aktualisierungs-abfrage beim Listenfeld 1 DarkAngel1208 575 21. Mai 2006, 00:03
Solaiman Aktualisierungs-abfrage beim Listenfeld
Keine neuen Beiträge Access Tabellen & Abfragen: Feld1 = leer dann X in Feld2 2 jmk 1012 22. März 2006, 12:06
jmk Feld1 = leer dann X in Feld2
Keine neuen Beiträge Access Tabellen & Abfragen: Leer und ausgefüllte Felder anzeigen 1 Fabs 613 23. Feb 2006, 09:38
rita2008 Leer und ausgefüllte Felder anzeigen
Keine neuen Beiträge Access Tabellen & Abfragen: Count() Funktion in Abfrage funktioniert nicht 1 Nike 889 31. Jan 2006, 19:44
jens05 Count() Funktion in Abfrage funktioniert nicht
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage funktioniert nicht 2 TheRealKing 603 13. Jan 2006, 17:06
TheRealKing Abfrage funktioniert nicht
Keine neuen Beiträge Access Tabellen & Abfragen: Standartwert funktioniert nicht 3 cubus 573 26. Dez 2005, 15:42
jens05 Standartwert  funktioniert nicht
Keine neuen Beiträge Access Tabellen & Abfragen: NZ funktioniert bei mir im SQL nicht--- Warum? 0 blicki 671 19. Dez 2005, 11:18
blicki NZ funktioniert bei mir im SQL nicht--- Warum?
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: HTML CSS