Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Fragebögen aufbauen/trimmen

Begonnen von claudia2324, Dezember 06, 2012, 16:13:51

⏪ vorheriges - nächstes ⏩

claudia2324

#30
Das muss ich mal testen ob die OMR-Software mit der Größe der Kringel klar kommt und was diese braucht (also ob Rechtecke es auch tun...). Ich hoffe nur, dass ich da ran komme... Das macht wieder jemand anderes, der das genau so habe will/muss wie auch immer...  :-[

Dann habe ich jetzt erst mal was zum umsetzen und testen.

Danke euch für die Hilfe heute...  :)

Claudia

claudia2324

Hallo nochmal,

@DF6GL: Was ist Word Automation? Ich habe gerade keine Vorstellung wie dein Vorschlag umgesetzt wird... :-\ Bedeutet das, es gibt eine Word-Vorlage in der mittels VBA-Code die Daten in markierte Felder in der Word-Vorlage angezeigt werden?

ZitatWenn sich das Ding partout an die Word-Vorlage hält oder halten muss, dann empfehle ich die anfänglich angesprochene Erzeugung eines Word-Docs aus  der Wordvorlage mittels Word-Automation und Ausfüllen entspr. Textmarken mit den Tabellen-Daten ...

ebs17

ZitatWas ist Word Automation?
Alles, was Du per Hand in Word machen kannst, kannst Du auch per VBA-Code erledigen (unter Nutzung des Objektmodells von Word). Also kann man auch Word fernsteuern sowie aus einer Vorlage ein Dokument erzeugen und Daten z.B. aus einer Datenbank übergeben.

Ich verstand Dich aber so, dass es Dein größeres Problem ist, ein Formular nach Vorgaben zu gestalten und somit die Problematik einer Datenübergabe eher nachrangig ist.

MfGA
ebs
Mit freundlichem Glück Auf!

Eberhard

claudia2324

#33
Hallo,

@DF6GL: Ich hab nochmal eine Frage zu dem was du in meine Beispiel-DB integriert hast.

ZitatLt. der PDF-Datei besteht der Bericht aus insgesamt zwei Seiten mit derselben Kopfzeile , auf denen
nur Metadaten (also keine Daten aus einer Tabelle stehen müssen. Nichtsdestotrotz müssen für diese
zwei Seiten 2 Datensätze her, damit der Bericht eben weiß dass er zwei Seiten (zwei DAtensätze)
drucken soll. Das erreicht man mit einer Hilfstabelle, in der lediglich eine Spalte mit einer
fortlaufenden Zahl vorhanden ist . Diese Hilftabelle wird in einer Abfarge mit der Kurstabelle als
Kreuzprodukt (Outer Join) verknüpft
, so dass jeder Datensatz aus der Kurstabelle sooft von Abfrage
geliefert wird , wie forlaufende Zahlen in der Hilftabelle vorhanden sind (bzw. über eine
Kriteriumsangabe eingeschränkt werden.
[/size]

Ich suche nach dem SQL-Code für den Outer Join (deine Beschreibung, siehe grün makiert), aber finde ihn nicht? Das ganze klappt auch noch ohne die Tabelle tbl_Zahl mit d erfortlaufenden Zahl.

@ebs
Zitat
Ich verstand Dich aber so, dass es Dein größeres Problem ist, ein Formular nach Vorgaben zu gestalten und somit die Problematik einer Datenübergabe eher nachrangig ist.
[/size]

-> Stimmt. Wollte nur wissen, ob ich das richtig verstehe. Dankeschön nochmal.

Hab noch ein weiteres Anliegen...

Auf dem Ratingbogen oben in der Kopfzeile soll eine Laufende-Nummer pro Teilnehmer gezählt werden. Bei einem zweiseiten Bericht, müsste diese also immer auf Seite 1 und 2 gedruckt werden... Ich weiß leider nicht, wie ich das hinbekomme? Hoffe ihr könnt mir Tipps geben.  :)

VG

Claudia

DF6GL

Hallo,


ein outer join ist ein Kreuzprodukt als Abfrageergebnis.  Das erreicht man, wenn man (in Access) gar keinen Join angibt:

Select Tabelle1.Feld1, Tabelle1.Feld2 from Tabelle1, Tabelle2


Ich hatte zuerst gedacht, dass im Bericht im Dateilbereich gleiche Darstellungen, die nicht an Tabellenfelder gebunden sind, wiederholt werden müssten. Das ist aber hier nicht der Fall, so dass diese Methode hier fehl am Platz ist.   Beispiel für einen solchen Einsatz:   Drucken mehrerer Etiketten (Kopieen) mit Daten aus einer Adress-Tabelle.



Laufende Nr:   welchen Sinn hat das nun wieder?  Eine laufende Nr hat keinerlei Aussagewert und wäre z. B. von Druck zu Druck anders für einen gewissen Kursteilnehmer. Sinnvoll ist eher (ich glaube, die ja schon drauf) , die Teilnehmer-ID auszudrucken.  Wir haben hier, wenn auch im einfachsten Maßstab, eine Datenbank vor uns und keinen Papierstapel  ;-)


Wenn die laufende Nr die (bislang) ausgedruckten Fragebögen "durchnummerieren" soll, dann ist eine Tabelle vonnöten, in der die Druckvorgänge, mindestens aber der akt. "Druckzähler" , erfasst werden müssten. Dabei ergibt sich da wieder die Schwierigkeit, geanu(!) festzustellen, ob ein Ausdruck nun auch funktioniert hat oder evtl. Papierstau oder Fehldruck oder sonstwas aufgetreten ist. Im schlimmsten Fall muss jeder einzelne Papierausdruck manuell über eine Eingabemöglichkeit bestätigt werden.

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

claudia2324

#35
Hallo,

die laufende Nummer soll für die Sortierung der Papierseiten helfen. Die Testung ist groß angelegt und die Interviewer bekommen einen große Packen mit den Ratingbögen auf den Tisch. Die Teilnehmer komme dann in der Reihenfolge sortiert nach Raumnummer und Uhrzeiten (Durchläufen). Pro Durchgang kommen immer 50 Teinehmer. So kann man nebender ID sehen ob der Packen vollständig ist. Die Teilnehmerzahl an den Test ist begrenzt. Es wollen mehr teilnehmen als für die Testteilnahme zugelassen werden können. Darum gibt es zB 400 IDs aber nur 300 können mitmachen. Darum ist die LLfd.nr zum händischen Nachzählen wichtig.

Papierstau kanns ja bei dem "Druck" nicht geben, denn es wird ja alles aus Access in ein PDF "gedruckt". Die pdfs gehen dann an die Druckerei. Die Papierpacken werden dann noch Raum und Uhrzeit (Durchgang) verteilt.

Hoffe meine Erklärung reicht aus? Würde das die Generierung einer Lfd.nr. erleichtern? Wäre das dann noch das gleiche Vorgehen?

Hoffe auf Tipps.  :)

Vg

Claudia

DF6GL

Hallo,

diese "Verwaltung" der zugelassenen Teilnehmer mußt Du in der/den Tabellen erledigen... D. h. es darf in der Tabelle nur diejenigen Kursteilnehmer geben, die auch wirklich teilnehmen, ansonsten ist ein Ja/Nein-Feld ("PersonNimmtTeil") erforderlich, das eben diese "gültigen" Teilnehmer kennzeichnet.


Die laufende Nummer kann dann im Bericht selber erzeugt werden:

http://www.donkarl.com/?FAQ5.16
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

claudia2324

Hallo,

@DF6GL

Zur Verwaltung der Kursteilnehmer... In der Original-DB ist die Abfrage "Kurse_Abfrage" das Ergebnis einer Berechnung welche dere Teilnehmer aufrund ihrer Qualifikation an dem Testverfahren teilnehmen dürfen. Diese Listen wird dann eben in dem Formular "Listenverwaltung" mittels der Komiboxen gefiltert und die Filterugn an die Berichte übergeben.

Ich habe die Laufende Nummer in einem Bericht testweise wie unter http://www.donkarl.com/?FAQ5.16 beschrieben, integriert. Also ein Textfeld hinzugefügt, bei Steuerelemente "=1" eingegeben und bei laufende Summer "über Alles" eingegeben.

Hmm, jetzt klappt das ganze genau bis zur Lfd.nr. 2. Also Lfd.nr. 1 über beide Bereichtsseiten für den ersten Teilnehmer klappt, und dann steht bei allen Weitere eine 2. Was habe ich vergessen?

Würde mich über Hilfe freuen.

VG

Claudia

DF6GL

Hallo,



Du machst was nicht ganz richtig...

Setze das Textfeld wie bei Donkarl beschrieben in den Detailbereich des Berichtes (kannst das vorhandene auch einfach in den Detailbereich verschieben) und benenne das z. B. txtLfdNr  . Setz die Sichtbar-Eigenschaft auf nein.

Bau im Seitenkopf-Bereich dort, wo die LfdNr erscheinen soll, ein weiteres Textfeld  mit Steuerelementinhalt    =txtLfdNr      ein.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

claudia2324

#39
Hallo,

danke für die Tipps. Klappt jetzt alles...  :)

Ich habe noch zwei Fragen.

In der Fußzeile der Berichte soll die Version des Dokuments stehen. Dabei soll, je nachdem ob ich der Blankobogen oder der personalisierte Fragebogen generiert wurde die Versionierung entsprechend gekennzeichnet sein wie folgt z.B. "kurs1_v2_final" oder "kurs2_v2_blanko". Wie kann ich sowas realisieren mit nur einem Bericht für beide Versionen?

Weiter habe ich das Problem, dass auch den Blankobögen die Felder, welche nicht ausgefüllt werden sollen in der Kopfzeile zT so aussehen "#Fehler" oder "TYP". Wie bekomme ich das weg?
"#Fehler" erscheint bei den Namen und "TYP" bei der Raumnummer -> Diese muss für den Scann mit der OMR-Software dreistelling sein, was ich so realisiere -> Steuerelemteinhalte ='00'+[Raumnr].

Hab mal ein Beispiel-PDF angehängt, damit man sieht, was ich meine.

Hoffe auf eure Hilfe.  :)

VG

Claudia

DF6GL

Hallo,


ich hab  mir schon gedacht, dass die Geschicht noch nicht ausgestanden ist  :'(


-- Wodurch unterscheidet sich denn ein Blanko-Bogen von einem personalisiertem? "Was ist das Kennzeichen eines Blanko-Bpgens?  (d. h. wie generierst Du überhaupt einen Blanko?)

-- Die Versions-Nummer (Text) kann entspr. der Beantwortung der o. st. Fragen mittels VBA an eine Bezeichnungsfeld oder textfeld zugewiesen werden.  Oder vorausgefüllte Bezeichnungsfelder, die übereinander liegen, werden entspr. sichtbar/unsichtbar gesetzt.

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

claudia2324

Sorry... :-[

Der personalisierte Bogen enthält in der Kopfzeile die ausgefüllten Textfelder Kurs, Raumnummer, Kennummer, Teilnhemer-ID, Vorname und Nachname des Teilnehmers.

Bei dem Blankobogen erscheint in der Kopfzeile nur das Feld "Kurs" ausgefüllt. Soll es nur aber leider habe ich ja diese Fehler drin:

ZitatWeiter habe ich das Problem, dass auch den Blankobögen die Felder, welche nicht ausgefüllt werden sollen in der Kopfzeile zT so aussehen "#Fehler" oder "TYP". Wie bekomme ich das weg?
"#Fehler" erscheint bei den Namen und "TYP" bei der Raumnummer -> Diese muss für den Scann mit der OMR-Software dreistelling sein, was ich so realisiere -> Steuerelemteinhalte ='00'+[Raumnr].
[/size]

Die restlichen Felder sollen im Blankobogen händisch nachgetragen werden (Also Teilehmer-ID, Nachname ...).

Das erste Textfeld "Kurs" habe ich direkt mit der Kursnummer im Bericht eingetragen. Die restlichen Inhalte der gelisteten Textfelder stammen aus der Abfrage "Kurse-Abfrage".

Den Blankoboge generiere ich wie folgt:

Private Sub Blanko_Pruefb_pdf_Click()
Dim stDocName As String, strSQL As String
    If Me!Kblanko >= 10 Or Me!Kblanko <= 0 Then GoTo fehler Else GoTo Blanko_Kursliste
   
Blanko_Kursliste:
    strSQL = "SELECT Kurse_Abfrage.Raumnr, Kurse_Abfrage.Kursnr, Kurse_Abfrage.ID, Kurse_Abfrage.Nachname, Kurse_Abfrage.Vorname FROM Kurse_Abfrage Where 1=2"
    stDocName = "abf_Kurs_" & Me!Kblanko
    CurrentDb.QueryDefs(stDocName).SQL = strSQL

    DoCmd.OutputTo acOutputReport, "Kurs_" & Me!Kblanko, acFormatPDF, CurrentProject.Path & "\Raum-" & Me!Kblanko & "_" & "Blanko" & Format(Date, "\_yyyy-mm-dd") & ".pdf"
    Exit Sub
fehler:
    MsgBox "xxx!"
    Exit Sub

End Sub


Ich hoffe der Code ist aussagekräftiger als mein Bemühen um eine Erklärung?

In der von mir anfänglich hochgeladen Beispiel-DB kann das ganze nachvollzogen werden zB...

Ich weiß nicht wie ich diese lästigen Fehler rauskriege.   :-\

Hoffe auf Tipps.  :)

VG


MzKlMu

Hallo,
für den Blankobogen würde ich in der Personentabelle einen vollständig leeren Datensatz anlegen und diesen leeren datensatz für den Blankobogen verwenden.
Als Nachname kannst Du auch "blanko" eintragen und dann im Bericht den Namen "blanko" durch einen Leerstring ersetzen.
Gruß Klaus

DF6GL

Hallo,

der leere DS wird schon mit Where 1=2 (oder Where false)   erzeugt..

Trotzdem ist das Ganze nur eine Trickserei...    :D



[Anhang gelöscht durch Administrator]
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

claudia2324

Hallo,

@MzKlMu der Tipp ist einfach und genial. Danke.  

Blöderweise muss alles auf dieser Abfrage "Kurse_Abfrage" basieren. Inder realen DB wird diese durch ein eine komplizierter SQL-Berechnung generiert. ich weiß nicht, wie ich in diesem Geflecht aus Outer Join und Inner Join diese Spalte als Blank für den Druck der Blankobögen darzubringen kann??!!

SELECT Pruefung.Pruefung_ID, Trim(KoP.Nachname) AS Nachname, Trim(KoP.Vorname) AS Vorname, IntD.Nr AS Durchgang, String(3-Len(IntD.Nr),'0') & IntD.Nr AS Durchgangtxt, IntD.Uhrzeit, IntE.Nr AS Raumnnr, IntE.Raum AS Raumnname, String(3-Len(IntE.Nr),'0') & IntE.Nr AS Raumnrtxt, Pruefung.Int_Start AS Start, 10-Start+2-IIf(Start<=1,10,0)+10*(IntD.Nr-1) AS Kurs1
FROM ((Pruefung_Bewerber AS Pruefung INNER JOIN KoP_Bewerber AS KoP ON Pruefung.TestNr = KoP.TestNr) LEFT JOIN Int_Raumn AS IntE ON Pruefung.Int_Raum = IntE.Raum_ID) LEFT JOIN Int_Durchgaenge AS IntD ON Pruefung.Int_Durchgang = IntD.Durchgang_ID
WHERE (((Pruefung.Info)=4))
ORDER BY IntD.Nr, Pruefung.Int_Start DESC;


Also macht wohl das Ausblende der entsprechenden Textfelder im Blankobogen Sinn. Kann man das beim Aufruf der der Prozedur Private Sub Blanko_Pruefb_pdf_Click() unterbringen?

Wäre dankbar um hilfreiche Infos.

VG

Claudia