collapse

* Benutzer Info

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

* Wer ist Online

  • Punkt Gäste: 46
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 14543
  • stats Beiträge insgesamt: 72943
  • stats Themen insgesamt: 9849
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 443

Autor Thema: einem Formular programmatisch Steuerelemente zufügen  (Gelesen 312 mal)

Offline datekk

  • Access-Meister
  • ***
  • Beiträge: 757
einem Formular programmatisch Steuerelemente zufügen
« am: Juni 19, 2019, 11:26:16 »
Servus :)

Ich möchte eine Daten-Import-Funktion meiner Anwendung zufügen. Aus einer Exceltabelle werden die Datensätze in ein Recordset übernommen. Dabei kann die Anzahl der Tabellenspalten variieren. Das Recordset soll dann in einem Endlosformular dargestellt werden. Soweit kein Problem. ABER:

Das Formular soll sich dynamisch nach der Anzahl der Spalten anpassen. Heißt, in der aktuellen Variante besteht das Formular aus einem Textfeld, dessen Bezeichnungsfeld und einem Kombifeld. Diese drei Felder sind mit dem Layout "Tabelle" (Menü Anordnen>Tabelle>Tabelle) angelegt. Bedeutet: Im Detailbereich ist das Textfeld (txt1), im Formularkopf das Bezeichnungsfeld (bez1) und darüber noch das Kombifeld (kombi1).

Ich möchte nun dieser "Tabelle" je nach Anzahl der Spalten (Fields) im Recordset weitere "Spalten" zufügen.

Händisch würde ich jetzt auf das Textfeld klicken, dann im Menü auf Anordnen>Rechts einfügen klicken und dann die Steuerelemente zufügen und auf die neuen, leeren "EmptyCell"s schieben.

Wie ist dies programmatisch möglich?

Folgender Ablauf müsste irgendwie umgesetzt werden:

- erstes Textfeld fokusieren
- Aktion "Rechts einfügen"
- Name der neuen EmptyCell neben dem Kombinationsfeld müsste ermittelt werden (zB "EmptyCell10")
- ein neues Kombifeld müsste in EmptyCell10 eingefügt werden
- ein neues Bezeichnungsfeld müsste in EmptyCell11 eingefügt werden
- ein neues Textfeld müsste in EmptyCell12 eingefügt werden

Danach müsste nun das neue Textfeld in EmptyCell12 fokusiert werden und wieder die Aktion "Rechts einfügen" ausgeführt werden usw.

Das Ganze so lange nach der Anzahl der Spalten im Recordset.

(Wie) ist das umsetzbar?

LG
datekk


vorhandene Textfeld fokusiert werden, dann müsste die Aktion "Rechts einfügen" ausgewählt werden,

Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps
 

Offline markus888

  • Access-Profi
  • **
  • Beiträge: 338
Re: einem Formular programmatisch Steuerelemente zufügen
« Antwort #1 am: Juni 19, 2019, 13:27:36 »
Ein Weg:
Du erstellst genug Controls, die du dann zur Laufzeit je nach Bedarf per Code sichtbar stellst und positionierst.





10 Jahre Access
 

Offline ebs17

  • Access Guru
  • ****
  • Beiträge: 1197
Re: einem Formular programmatisch Steuerelemente zufügen
« Antwort #2 am: Juni 19, 2019, 19:28:26 »
Zitat
Wie ist das umsetzbar?
Gegenfrage: Was hast Du (neues) gekonnt, wenn Du Deine Exceltabelle in einem Formular anschauen kannst? Eine Verarbeitung der neuen unbekannten Felder designst Du dann auch während der Laufzeit (mit ebensolchem Können)?

Wenn man wegen ein paar zusätzlicher Daten neu-/umprogrammieren muss, hat man etwas falsch gemacht.

Zitat
EmptyCell10, EmptyCell11, EmptyCell12, EmptyCell156,  ...
Führe ein Unpivot aus und verwende somit in der DB-Tabelle DB-gemäße Strukturen.
Mit freundlichem Glück Auf!

Eberhard
 

Offline datekk

  • Access-Meister
  • ***
  • Beiträge: 757
Re: einem Formular programmatisch Steuerelemente zufügen
« Antwort #3 am: Juli 01, 2019, 14:25:40 »
Danke für Eure Antworten :)

@ebs17: mhhh. Ich weiß nicht, ob ich Deine Antwort so richtig verstehe...
Ein Import via Excel Tabelle bedingt ja immer die Sache, dass ich nicht weiß, welche Felder die Tabelle aufweist. Wohl aber weiß ich, welche Datenbankfelder ich habe. Ich muss also einer Excel Tabelle welche Name, Straße, Postleitzahl, Ort und Telefon hat die entsprechenden Datenbankfelder zuweisen. Also meine Anwendung muss wissen, welches Datenbankfeld dem Field(0) meines Recordsets (in diesem liegt die Excel) zugewiesen werden muss. Dementsprechend brauche ich erst eine Ansicht der Daten um dann die Zuweisung (z.B. mittels Kombi-Steuerelement) durchführen zu können.

Ich habe das Ganze jetzt erstmal so gelöst, dass die Mitarbeiter eine "Vorlagen-Excel" erhalten haben und diese dann entsprechend meiner Vorgaben füllen. Das klappt ganz prima. Die alte Sache wäre dann ein "nice to have".

Ich will da auch nix umprogrammieren oder so... es soll ja so programmiert sein, dass das Formular dynamische Felder bekommt, so wie ich es oben geschrieben habe.

@markus888: ein sehr guter Ansatz.... Lieben Dank... Das könnte schon die Lösung sein. Ich probiere das mal aus und melde mich hierzu demnächst wieder :)
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps
 

Offline ebs17

  • Access Guru
  • ****
  • Beiträge: 1197
Re: einem Formular programmatisch Steuerelemente zufügen
« Antwort #4 am: Juli 01, 2019, 14:58:15 »
Zitat
Also meine Anwendung muss wissen, welches Datenbankfeld dem Field(0) meines Recordsets (in diesem liegt die Excel) zugewiesen werden muss.
Das würde ich Automatismus nennen (den zu bevorzugenden Normalfall). Da müssen aber Zuordnungen automatisch über Bezeichnungen oder Feldreihenfolgen ermittelbar sein, mit Riesenaufwand und hohem Fehlerpotential eventuell auch zusätzlich über Feldinhalte.

Da merkt man schon, dass eine standardisierte gleichbleibende Datenquelle der einfachste und fehlerunanfälligste Ansatz ist. Sicherstellen kann man das durch Vorlagen in Excel oder auch (kostenlose Runtimes erleichtern das) über Eingabe-Access-DB's.

Zitat
Wohl aber weiß ich, welche Datenbankfelder ich habe.
Mit der "fixierten" weil geplanten Datenbanktabelle fällt doch die gewünschte Dynamik in den Eimer. Das einzige was man bräuchte, wäre die Zuordnung von DB-Tabellen-Feld zu angebotener Excelspalte. Da die Feldanzahl der DB-Tabelle konstant(?) bleibt, braucht man da auch keine Formulardynamik während der Laufzeit, sondern eine feste Anzahl an Kombinationsfeldern zu Auswahl und Zuordnung macht es auch.

Im Ergebnis musst Du nur in der Datenherkunft der Kombinationsfelder die Spaltennamen der Exceltabelle zur Auswahl anbieten. Je nach dem, wie die Exceltabelle verfügbar gemacht wird, genügt da schon als Datenherkunftstyp die Feldliste.
Mit freundlichem Glück Auf!

Eberhard
 

 

Kunden auslesen, welche nicht ware von einem Lieferanten bekommen haben.

Begonnen von GuidoBoard Tabelle/Abfrage

Antworten: 9
Aufrufe: 7284
Letzter Beitrag Mai 11, 2010, 10:35:10
von Guido
VBA-Code funktioiniert bei einem Wert, bei einem anderen nicht

Begonnen von OPSBoard Access Programmierung

Antworten: 7
Aufrufe: 8556
Letzter Beitrag Mai 19, 2010, 17:29:09
von OPS
Dateipfad in einem Textfeld anpassen

Begonnen von cyorpsBoard Formular

Antworten: 2
Aufrufe: 2583
Letzter Beitrag Mai 20, 2010, 22:09:32
von cyorps
Erster Buchstabe aus einem Feld

Begonnen von carman0103Board Formular

Antworten: 14
Aufrufe: 11928
Letzter Beitrag Juni 09, 2010, 10:10:59
von carman0103
verschiedene Textfarben in einem Feld ???

Begonnen von carman0103Board Formular

Antworten: 2
Aufrufe: 3136
Letzter Beitrag Juni 08, 2010, 09:28:56
von carman0103

Advertisment / Werbung - Amazon Affiliate Links