Office - Word, Excel und Co. 9.751 Themen, 41.570 Beiträge

Access2003 Begrenzung Formularfelder erhöhen/umgehen?

daCrazyDoc / 13 Antworten / Baumansicht Nickles

Unter Access 2003 gibt es leider die (allerdings normalerweise auch nicht störende) Begrenzung auf 744 Controls pro Formular.

Hab nun das Problem, dass ich für ein bestimmtes Formular mehr (genauer gesagt so um die 1300) Felder bräuchte. Gibt es irgendwie die Möglichkeit, die Begrenzung zu umgehen?

Ehe mir jetzt hier jemand einen Vortrag hält, dass es sicherlich (normalerweise) ja auch ziemlich unsinnig ist, so viele Controls auf einem Formular zu postieren, hier gleich ne Erklärung anbei - vielleicht hat ja jemand auch ne bessere Lösung.

Ich möchte in einem Formular einen Mitarbeiter Einsatzplan anzeigen. Das Formular muss für max 40 Mitarbeiter und jeden Tag des Monats ein Control (in dem Fall angedacht ein Rechteck) anzeigen, dem einfach durch die Farbe zu entnehmen ist, ob der Mitarbeiter eingeplant, nicht eingeplant ist oder frei hat etc.. Ebenfalls muss es möglich sein, bei Mausklick auf das jeweilige Control eine Prozedur zu starten. Daher dachte ich halt an ne Matrix aus 40 Zeilen (für die MA's) und bis zu 31 Spalten für die Tage.

Und wie schon erwähnt: wenn ich hier ne blöde Lösung gewählt habe und es was Eleganteres gibt, bin ich für Tipps mehr als dankbar.

THX im voraus
Joe

bei Antwort benachrichtigen
neanderix daCrazyDoc „Access2003 Begrenzung Formularfelder erhöhen/umgehen?“
Optionen

Du scheinst hier EXCEL mit ACCESS zu verwechseln - dein Vorhaben ist in dieser Form zumindest in Access mehr als unsinnig.

Volker

Computers are like airconditioners - they stop working properly when you open Windows Ich bin unschuldig, ich habe sie nicht gewählt!
bei Antwort benachrichtigen
daCrazyDoc neanderix „Du scheinst hier EXCEL mit ACCESS zu verwechseln - dein Vorhaben ist in dieser...“
Optionen

Sorry, aber das ganze ist nun mal ne inzwischen recht umfangreiche Access-Anwendung mit eigener Benutzeroberfläche, bei der der Benutzer Access selbst gar nicht direkt zu Gesicht bekommt. Und imho ist es auch nicht möglich, diese Tabelle innerhalb eines Access-Formulars darzustellen, so dass ein Klick auf ein Tabellenfeld eine Access-Routine aufruft - oder?

bei Antwort benachrichtigen
neanderix daCrazyDoc „Sorry, aber das ganze ist nun mal ne inzwischen recht umfangreiche...“
Optionen
Sorry, aber das ganze ist nun mal ne inzwischen recht umfangreiche Access-Anwendung mit eigener Benutzeroberfläche,

Nein ist es nicht - das ist, entschuldige bitte die harten Worte, schlicht Krampf, aber keine Anwendung.

Und imho ist es auch nicht möglich, diese Tabelle innerhalb eines Access-Formulars darzustellen,

Richtig.

Und sinnvoll ist es auch nicht.

Was ihr versucht ist, Access für eine Darstellungsweise regelrecht zu vergewaltigen, für die es nicht gedacht ist.

Natürlich kann man eine Mitarbeiter-Einsatzplanung mit Access machen - aber deine Gesamtübersicht bekommst du so nicht hin, das kannst du in der von dir gewünschten Form nur in Excel machen - ergo böte sich ein Datenexport nach Excel an.

Und ich hab heute abend auch keine Idee mehr, wie man sowas in Access realisieren könnte -- ist zu spät und, hier unterm Dach, auch zu warm (Dachgeschosswohnung, 26°C)

Volker,
schwitzend

Computers are like airconditioners - they stop working properly when you open Windows Ich bin unschuldig, ich habe sie nicht gewählt!
bei Antwort benachrichtigen
daCrazyDoc neanderix „ Nein ist es nicht - das ist, entschuldige bitte die harten Worte, schlicht...“
Optionen

Danke erst mal für Deine kompetente Beurteilung der Anwendung, die Du ja sicherlich bereits im Detail kennst. Ich denke mir, man sollte Dinge nicht nach einem kleinen Detail beurteilen (vor allem, da die Einsatzplanung nur ein kleiner Teilbereich der Anwendung ist, was man vielleicht auch vor einerBeurteilung wissen sollte). Und wie gesagt macht es m. E. hier einfach keinen Sinn, Access zuverlassen und nach Excel zu gehen. U. A. auch, weil die Access-Geschichte völlig eigenständig mit Runtime Umgebung kommt und ich gar nicht weiß, ob auf allen Rechnern, auf dem das Teil läuft, Office installiert ist, bzw. keiner eventuell da zusätzliche Lizenzen kaufen will.

Allerdings sollte Dir als allmächtig und scheinbar hellseherisch Allwissender vielleicht ein Gedanke gekommen sein, an dem ich zur Zeit bastele: nämlich ein Spreadsheet-Objekt einzubinden. Das scheint nämlich möglicherweise des Pudels kern zu sein.

bei Antwort benachrichtigen
neanderix daCrazyDoc „Danke erst mal für Deine kompetente Beurteilung der Anwendung, die Du ja...“
Optionen
Danke erst mal für Deine kompetente Beurteilung der Anwendung, die Du ja sicherlich bereits im Detail kennst. Ic

Spare dir bitte deine Polemik - ich sage nur aus der sicht eines *Daatenbankentwicklers* was Sache ist - und auch wenn die wortwahl vergleichsweise drastisch ist, ist es keineswegs als Angriff auf dich oder sonstwen gemeint.

Du verwechselst aus meiner sicht definitiv Access und Excel - nur weil in beiden anwendungen ein Obkjekt "Tabelle" heisst, ist es noch lange nicht dasselbe und haben die beiden Objekte noch lange nicht die gleichen Eigenschaften.

Ein Standardformular in Access stellt *immer* einen einzelnen Datensatz dar - schon allein deshalb macht es keinen sinn, ein Formular mit 1300 Feldern auszustatten, selbst wenn das möglich wäre ... du würdest damit das von dir gewünschte nicht erreichen können.

Und damit du nicht glaubst, ich wäre nicht wirklich hilfsbereit:

So als Idee könntest du versuchen, das Gewünschte mittels einer Kreuztabellenabfrage zu erreichen.



Computers are like airconditioners - they stop working properly when you open Windows Ich bin unschuldig, ich habe sie nicht gewählt!
bei Antwort benachrichtigen
daCrazyDoc neanderix „ Spare dir bitte deine Polemik - ich sage nur aus der sicht eines...“
Optionen

Habe das Problem nun grundsätzlich mehr als einfach und auch performant gelöst, indem ich einfach ein Spreadsheet-Objekt eingebaut habe, das die Daten aus einem Recordset bekommt.

Was mir nun noch fehlt, ist einfach die Hintergrundfarbe der einzelnen Zellen zu setzen. Ich kriege die Anzeige so weit korrekt dargestellt, dass ich z. B. in die belegten Zellen ein X und in die unbelegten Nichts oder - einfüge (Syntax z. B. : Me.sp01.Cells(inty, intx).Value = "X", wobei sp01 das Spreadsheet ist und intx und inty die jeweiligen Koordinaten). Ich möchte es aber einfach farblich (weil übersichtlicher) machen).

Vielleicht kennt ja jemand die Syntax bzw. eher den Eigenschaftswert, den ich da für die Zelle einstellen muss. (Access-Standards wie backColor etc. funktionieren nicht).

bei Antwort benachrichtigen
neanderix daCrazyDoc „Habe das Problem nun grundsätzlich mehr als einfach und auch performant...“
Optionen
Vielleicht kennt ja jemand die Syntax bzw. eher den Eigenschaftswert, den ich da für die Zelle einstellen muss. (Access-Standards wie backColor etc. funktionieren nicht).

Das Spreadsheet-control ist eine Art Excel-Runtime, versteht die VBA-Codes von Excel -- und nur die!

Volker
Computers are like airconditioners - they stop working properly when you open Windows Ich bin unschuldig, ich habe sie nicht gewählt!
bei Antwort benachrichtigen
daCrazyDoc neanderix „ Das Spreadsheet-control ist eine Art Excel-Runtime, versteht die VBA-Codes von...“
Optionen

Hi Volker,

hab mir einfach mal angesehen, wie das in Excel so liefe; aber der Code (s.u.) führt in Access einfach zu dem Fehler, dass die Eigenschaft nicht unterstützt wird.
Was mach ich Dämel denn da falsch; irgendwie muss das doch möglich sein.


Code:

me.sp01.Range("E9").Select
With Selection.Interior
.ColorIndex = 36
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With


Anm: sp01 ist das Spreadsheet

bei Antwort benachrichtigen
neanderix daCrazyDoc „Hi Volker, hab mir einfach mal angesehen, wie das in Excel so liefe aber der...“
Optionen

Gib mir Zeit bis morgen, da kann ich ein paar Dinge nachlesen - hier zu Hause habe ich mein Access und auch keine Literatur dazu - und soooo übermäßig intensiv hab ich mich auch noch nicht mit dem Spreadsheet-Control befasst.

Ein Tipp:

Wenn du Steuerelemente referenzierst, nutze den "!".

Also:

Me!sp01.Range("E9").Select

Machst du es wie in deinem Codeschnipsel mit dem "." dann kann das zu Problemen führen.

An dieser Stelle wollte ich eigentlich einen Link zu diesem Thema einbauen, aber ich finde den Text gerade nicht wieder.



Computers are like airconditioners - they stop working properly when you open Windows Ich bin unschuldig, ich habe sie nicht gewählt!
bei Antwort benachrichtigen
neanderix daCrazyDoc „Hi Volker, hab mir einfach mal angesehen, wie das in Excel so liefe aber der...“
Optionen

So, ich hab mal recherchiert.

der Grund für dein Problem ist, dass ACCESS weder ein Range-Objekt noch die zugehörigen Methoden kennt - das ist alles Excel.
Sprich: du benötigst einen Verweis auf die Excel-Bibliothek.

Ich habe hier - leider nur auf Papier - eine Beispielroutine zum Spreadsheet-control.
Das Beispiel ist aber zu umfangreich um es einzutippen....

Computers are like airconditioners - they stop working properly when you open Windows Ich bin unschuldig, ich habe sie nicht gewählt!
bei Antwort benachrichtigen
daCrazyDoc neanderix „So, ich hab mal recherchiert. der Grund für dein Problem ist, dass ACCESS weder...“
Optionen

THX an Alle, bes. an Neanderix, der sich des Themas ziemlich angenommen hat.

Hab nun durch Änderung des Forms ein anderes Problem, dass in nem neuen Thread steht, so dass dieser eigentlich geschlossen werden kann.

bei Antwort benachrichtigen
Borlander daCrazyDoc „THX“
Optionen

Du kannst die Frage als beantwortet markieren (im Menü Optionen zum Beitrag).

Für alle anderen Mitleser: Weiter gehts im Thread
Access: activeX-Steuerelement (spreadsheet) formatieren

Gruß
Borlander

bei Antwort benachrichtigen
daCrazyDoc Borlander „Du kannst die Frage als beantwortet markieren im Menü Optionen zum Beitrag ....“
Optionen

Danke an Alle, die dabei waren

bei Antwort benachrichtigen