PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kurven plotten mit VBA Access


Mosher
2010-01-28, 19:26:25
Hi

für ein Schulprojekt sollen wir bei einer gedämpfen elektrischen Schwingung
(RLC), bei der man R, L und C selbst eingeben kann, den Spannungs- und Stromverlauf graphisch darstellen.

Unsere Lehrerin hat gemeint, wir sollen statt der entstehenden abklingenden Sinuskurve lauter Rechtecke ausgeben lassen, die wenn sie hinreichend schmal sind, so eine Art "Kurve" ergeben.


Mich hat diese Lösung allerdings nicht befriedigt und so habe ich mich auf die Suche nach Tipps gemacht, wie man in VBA Kurven plotten kann --> ohne Erfolg.


Uns steht tatsächlich nur VBA Access 2003 zur verfügung. .net oder VB Lösungen helfen mir leider nicht weiter.

Das Projekt ist komplett fertig, "nur" der Kurvenplotter fehlt noch.

Kann mir da jmd. helfen, oder einen Link schicken, wo ich mich evtl schlau machen könnte?

Danke

Gast
2010-01-28, 19:40:22
Uns steht tatsächlich nur VBA Access 2003 zur verfügung
:ugly:

:lol::lol::lol:

DraconiX
2010-01-28, 19:45:38
:ugly:

:lol::lol::lol:

:freak:

DITO... Erklär deiner Lehrerin mal das es VB-Express gibt...

Mosher
2010-01-28, 21:19:10
Hab´ ich schon gemacht.

Sie meinte, das will sie nicht benutzen, da die Projekte, die wir in der Schule machen (FOS13 Technik) viel zu simpel sind, um richtig von einer komplexeren (moderneren?!) Programmierumgebung profitieren zu können.

samm
2010-01-28, 21:36:53
VB-Lösungen helfen dir schon weiter, musst halt die entsprechenden Bibliotheken einbinden. Wenn's rein MS VBA bleiben soll: kannst du nicht Excel benutzen (resp. wenn es Access sein [i]muss[/ï] den Excel Library-Verweis einbinden) und das dort zeichnen? Hat sicher mehr in Richtung Visualisierung an Bord.

Mosher
2010-01-30, 10:12:25
okay, hab jetzt ein Objekt "Microsoft Graph" erstellt und das Diagramm meinen Wünschen entsprechend angepasst.

Es wurde eine Beispieltabelle erstellt, die die entsprechenden Daten für den Graphen enthalten hat, ich brächte jetzt quasi noch eine Funktion, wie ich Werte, die sich in der Laufzeit errechnen lassen an diese Tabelle übergeben kann, sprich in einzelne Zellen schreiben lassen.

Kann mir das wer erklären?

Mosher
2010-01-30, 12:03:25
Ok Leute, habs hinbekommen, war eigentlich ganz simpel.


danke für den Tipp imt Excel, hat mich auf die richtige Spur gebracht

patermatrix
2010-01-30, 13:57:00
http://www.forum-3dcenter.org/vbulletin/showpost.php?p=7812061&postcount=3

Mosher
2010-01-30, 22:58:07
Ich hab unter Access 2010 erstmal eine .mdb erstellt, die zu Access 2003 kompatibel sein sollte.

Zuerst habe ich eine Tabelle erstellt, die später die im Graphen darzustellenden Werte enthalten soll.

Dann habe ich ein neues Formular erstellt und dort ein Diagramm (zu finden in der Toolbox) platziert. Im folgenden Dialog habe ich als Quelle für die Daten die Tabelle von vorher ausgewählt. Eine Spalte sollte die Beschriftung der x-Achse enthalten und mindestens eine Spalte dann eben zukünftig die y-Werte. (kann das jetzt nicht gescheit erklären, aber im Prinzip funktioniert´s so, wie Diagramme in Excel)

Zunächst erscheint ein Balkendiagramm mit Beispielwerten auf dem Formular, das Layout lässt sich aber nach eigenen Wünschen anpassen. Das praktische an diesem Diagramm ist, dass es sich automatisch aktualisiert, sobald sich Werte ändern, oder neue hinzukommen.

Jetzt gilt es nur noch, eine Routine zu schreiben, die Werte in die vorher angelegte Tabelle schreiben kann, dazu hab´ ich folgenden Code gegoogelt:


Private Sub butt_Click()
'neuen Datensatz schreiben
With CurrentDb().OpenRecordset("Tabellenname", dbOpenDynaset, dbAppendOnly)
.AddNew
!NamedesZahlenfeldes = 4711

.Update
End With

'Datensatz lesen
With CurrentDb().OpenRecordset("Tabellenname", dbOpenSnapshot)
.FindFirst NamedesZahlenfeldes = 4711
If Not .NoMatch Then
'Ergebnis mit Strg+G im VBA-Editor ansehen
Debug.Print !NameDesZahlenfeldes
End If
End With
End Sub


Also für meine Zwecke hat das wunderbar funktioniert, und es lassen sich auch 2 Graphen gleichzeitig zeichnen, wenn man nach "NameDesZahlenfeldes = 4711" noch weitere Felder mit ; getrennt anführt. Die blauen Teile des Codes können/müssen selbstverständlich dem eigenen Programm angepasst werden.

Der letzte Teil des Codes dient nur dazu, sein Wunderwerk im Debugger bestaunen zu können

Hoffe, diese kleine Anleitung hilft jemandem weiter.

Mosher
2010-01-31, 00:24:28
Tut mir leid, hab´ einiges vergessen, was noch zu tun ist.

- nach .update muss noch ein me."NameDesDiagramms".requery hin, damit sich die Grafik in "Echtzeit" aktualisiert.

Die Tabelle, aus der die Werte übernommen werden, muss unbedingt richtig formatiert werden (Datentypen!) und eventuell automatisch eingestellte Funktionen deaktiviert werden.

(Group by auf der Spalte mit der Beschriftung der x-Achse ist zum Beispiel hinderlich, wenn man T/4, T/2 etc. anzeigen will. Die Daten würden alphabetisch sortiert werden und der Graph entsprechend vermurkst. Bei Zahlenfeldern ist standardmäiß Sum eingestellt, was man in den meisten Fällen wohl auch nicht unbedingt haben will)

Es empfiehlt sich, eine kleine Pausenfunktion zu schreiben, wenn man einen zeitlichen Verlauf simulieren will. Falls noch Fragen auftauchen sollten, einfach PN an mich, wobei ich an dieser Stelle anmerken muss, dass ich, was das Programmieren angeht, ein ziemlicher Laie bin und mir das meiste auch durch Googeln und Herumprobieren zusammenschustern muss.