Mit folgendem Code wäre es zwar möglich geöffnete Formulare umzustellen. Das
sollte jedoch auch ohne Öffnen möglich sein?
Dim frm As Form
For Each frm In Application.Forms
If Left(frm.Name, 1) = "p" Then
frm.PopUp = True
End If
Next
Vielen Dank
Peter
"Peter" <aui...@chello.at> schrieb im Newsbeitrag
news:cCmx7.7139$Pg3.2...@news.chello.at...
wie wärs mit:
Dim frm As Form
' Bildschirmecho auschalten
Application.ECHO False
For Each frm In Application.Forms
If Left(frm.Name, 1) = "p" Then
frm.PopUp = True
End If
Next
' Bildschirmecho einschalten
Application.ECHO True
hth johann
----
Tips+Tricks: TREEVIEW als Klasse ohne OCX...
URL: http://members.aon.at/millpartner
"Peter" <aui...@chello.at> schrieb ...
trage bitte Deinen vollständigen Absender ein, um Dich von
den anderen Peter's unterscheiden zu können. Danke.
> Ich würde gerne mit VBA Code alle Formulare auf PopUp = true bzw = False
> umstellen
>
> Mit folgendem Code wäre es zwar möglich geöffnete Formulare
> umzustellen. Das sollte jedoch auch ohne Öffnen möglich sein?
Um solche Eigenschaften umzustellen musst Du die Formulare öffnen.
Das sollte dann im Design-Modus erfolgen, in etwa so (A2000++)
oder via DAO Container:
Private Sub FormProperty()
Dim doc As Access.AccessObject
Dim frm As Access.Form
On Error GoTo FormPropertyExit
' Keine Anzeige, keine Rückfrage
Application.Echo False, "Initialisiere Formulare"
DoCmd.SetWarnings False
' Formulare auf Grundeinstellung
For Each doc In CurrentProject.AllForms
If Left(frm.Name, 1) = "p" Then
DoCmd.OpenForm doc.Name, acDesign
If Err = 0 Then
Set frm = Forms(doc.Name)
frm.PopUp = True
Set frm = Nothing
DoCmd.Close acForm, doc.Name
End If
End If
Next doc
FormPropertyExit:
Application.Echo True
DoCmd.SetWarnings True
Exit Sub
End Sub
Gruss
Elmar
Ich hab "frm.name" in "doc.name" ausgebessert und die "If Err Zeile"
ausdokumentiert und es funktioniert unter A2k.
Was hattest Du mit "If Err = 0 Then" vor?
Weißt Du vielleicht auch wie ich das Problem ohne ADO lösen kann? Ich brauch
es nämlich für eine A97 Anwendung.
Vielen Dank
(Namensproblem wurde auch gelöst)
Peter
"Elmar Boye" <news...@elmarboye.de> schrieb im Newsbeitrag
news:9q54hh$l4jk3$2...@ID-28695.news.dfncis.de...
"Peter Auinger" <aui...@chello.at> schrieb ...
> Ich hab "frm.name" in "doc.name" ausgebessert und die "If Err Zeile"
> ausdokumentiert und es funktioniert unter A2k.
> Was hattest Du mit "If Err = 0 Then" vor?
Sorry, da habe ich was ausgeschnippelt, aber wohl nicht alles.
> Weißt Du vielleicht auch wie ich das Problem ohne ADO
> lösen kann? Ich brauch es nämlich für eine A97 Anwendung.
Wäre via DAO - ebenfalls auf die Schnell geschnitzt ohne Test:
Dim con As DAO.Container
Dim doc As DAO.Document
Dim obj As Form
' Auswahl Formulare oder Berichte
Set con = dbsLocal.Containers("Forms")
con.Documents.Refresh
On Error GoTo ScanObjectsExit
' Keine Anzeige, keine Rückfrage
Application.Echo False, "Durchsuchen Formulare"
DoCmd.SetWarnings False
' Durchlaufen Formularauflistung
On Error Resume Next
For Each doc In con.Documents
If Left(doc.Name, 1) = "p" Then
DoCmd.OpenForm doc.NAME, acDesign
If Err = 0 Then
Set obj = Forms(doc.NAME)
frm.PopUp = True
Set obj = Nothing
DoCmd.Close acForm, doc.NAME
End If
End If
End If
Next doc
ScanObjectsExit:
Set con = Nothing
Du hast mir wirklich sehr geholfen. Hab bisher schon viele Stunden erfolglos
gesucht und probiert.
Gut daß es Profis gibt.
Vielen Dank
Peter
"Elmar Boye" <news...@elmarboye.de> schrieb im Newsbeitrag
news:9q57fr$ln0ve$1...@ID-28695.news.dfncis.de...
"Peter" <aui...@chello.at> wrote in message
news:cCmx7.7139$Pg3.2...@news.chello.at...
Damit Du das machen kannst, musst Du zuerst die Forms in der
Entwurfsansicht öffnen. Die Forms sind Documents im Container Forms.
Das geht dann etwa so (ungetestet):
Dim db as Database
dim doc as Document
dim frm as Form
Set DB = CurrentDB()
for each doc in db.Containers("Forms")
docmd.openForm doc.name, acviewdesign
set frm = Forms(doc.name)
if Left(frm.Name, 1) = "p" then
frm.PopUp = True
docmd.close acForm, frm.Name, acSaveYes
else
docmd.close acForm, frm.Name, acSaveNo
end if
next
set frm = nothing
set doc = nothing
db.close
set db = nothing
HTH
Henry
Vielen Dank
Ich werde Deinen Lösungsvorschlag gleich testen.
lg Peter
"Henry Habermacher [MVP Access]" <he...@psp-online.com> schrieb im
Newsbeitrag news:9q58t9$ltk2o$2...@ID-30649.news.dfncis.de...
Ich habe auch Deinen Vorschlag ausprobiert, aber der Code kommt nicht über
nachstehende Position
> > for each doc in db.Containers("Forms")
Weisst Du da bitte vielleicht eine Lösung?
Viele Grüsse
Peter
"Peter Auinger" <aui...@chello.at> schrieb im Newsbeitrag
news:%9vx7.16865$Pg3.5...@news.chello.at...
mit A2K hab ich Deine Hilfe perfekt nachvollziehen und einsetzen können.
Auch die DAO Version läuft fehlerfrei durch, aber es passiert leider nichts.
Aus irgeneinem Grund setzt der Code die Eigenschaft nicht auf true bzw
false.
Vielleicht hast Du dazu eine Idee.
Viele Grüsse
Peter
"Elmar Boye" <news...@elmarboye.de> schrieb im Newsbeitrag
news:9q57fr$ln0ve$1...@ID-28695.news.dfncis.de...
> mit A2K hab ich Deine Hilfe perfekt nachvollziehen und einsetzen können.
> Auch die DAO Version läuft fehlerfrei durch, aber es passiert leider
nichts.
> Aus irgeneinem Grund setzt der Code die Eigenschaft nicht auf true bzw
> false.
Hallo Peter,
probier mal:
Dim db As DAO.Database
Dim doc As DAO.Document
Dim str As String
Set db = CurrentDb()
For Each doc In db.Containers("Forms").Documents
str = doc.Name
If Left(str, 3) = "p" Then
DoCmd.OpenForm str, acViewDesign
Forms(str).PopUp = True
DoCmd.Close acForm, str, acSaveYes
End If
Next
Gruss
Günther
http://www.access-hilfe.de
"Peter Auinger" <aui...@chello.at> schrieb ...
> mit A2K hab ich Deine Hilfe perfekt nachvollziehen und einsetzen können.
> Auch die DAO Version läuft fehlerfrei durch, aber es passiert leider nichts.
> Aus irgeneinem Grund setzt der Code die Eigenschaft nicht auf true bzw
> false.
>
> Vielleicht hast Du dazu eine Idee.
nachdem ich die Mängel behoben hatte (End If zuviel, dbsLocal zuwenig) -
mal wieder zu viel/wenig geschnippselt... :-(
Der Code sollte unter normalen Umständen jegliches Formular mit
einem einleitenden "p" ändern. Und das Formular danach die
Eigenschaft Popup = Ja haben, und sich somit beim nächsten Öffnen
wie ein solches verhalten.
Um Nebenwirkungen durch andere Einstellungen auszuschliessen:
Kommentiere den einleitenden Code aus
' Keine Anzeige, keine Rückfrage
'Application.Echo False, "Durchsuchen Formulare"
'DoCmd.SetWarnings False
dann sollten Meldungen Fehler angezeigt werden, so sie durch
andere Bedingungen eintreten.
Nur für den Fall, das Du etwas in der Art vorhast:
Nicht funktionieren tut, die Popup-Eigenschaft zur Laufzeit
eines Formular zu ändern. Solange das Fenster im Normalmodus
eröffnet ist, passiert an den Fenstermodi nichts. Der Modus
muss wird nur beim Öffnen beachtet, und ggf. durch den
Parameter WindowMode beim DoCmd.OpenForm geändert.
Gruss
Elmar