Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [Access] Mittels VBA Daten aus der DB holen (https://www.delphipraxis.net/95999-%5Baccess%5D-mittels-vba-daten-aus-der-db-holen.html)

Meflin 17. Jul 2007 14:46


[Access] Mittels VBA Daten aus der DB holen
 
Moin moin!

Leider leider leider muss ich im Moment mit VBA rumfrickeln :kotz: Aber da ich weiß dass das einige hier können, stelle ich die Frage trotzdem mal in einer Delphi-Community :oops:

Vielleicht erinnert sich ja noch der eine oder andere an dieses etwas größere Formular, mit dem ich so meine Probleme hatte. Für jedes der Felder brauche ich jetzt noch mal drei...

Und zwar will ich bei jedem angezeigten Eingabefeld auf dem Formular im ControlTipText (auf Delphideutsch: Hint) den Durchschnitts-, Minimal- und Maximalwert der Daten dieses Feldes in der Datenbank anzeigen.

Das sind aber zu viele Records als die 255 die ein Access Formular im Recordset verkraftet. Daher müsste ich einfach bei jedem Feld eine einfache SQL-Abfrage machen und den Wert dann eben eintragen.

Trotz langer suche (vielleicht suche ich einfach nur das falsche) konnte ich allerdings keinerlei Beispielquelltext finden, wie man mit VBA eine Abfrage durchführt und auf Werte daraus zugreift. :(

Ich wäre also sehr glücklich, wenn mir da mal jemand ein kleines Beispiel schreiben könnte :)



[edit=SirThornberry]Titel korrigiert - Mfg, SirThornberry[/edit]

DP-Maintenance 17. Jul 2007 14:49

DP-Maintenance
 
Dieses Thema wurde von "SirThornberry" von "Windows 9x / ME / 2000 / XP / 2003 / Vista" nach "Programmieren allgemein" verschoben.

Meflin 17. Jul 2007 15:45

Re: [Access] Mittels VBA Daten aus der DB holen
 
... und eine Stunde später hatte er sich doch selber was zusammengefrickelt :)

Verbesserungsvorschläge weiterhin willkommen ;)

Code:
Public Function GetHint(Table As String, Field As String) As String
Dim strSQL As String
Dim db As Database
Dim rs As Recordset


    strSQL = "SELECT Avg([" & Table & "].[" & Field & "]) AS AvgValue, Min([" & Table & "].[" & Field & "]) AS MinValue, Max([" & Table & "].[" & Field & "]) AS MaxValue FROM [" & Table & "];"
   
    Set db = CurrentDb
    Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)
   
    rs.MoveFirst
   
    strAvgValue = Round(rs.Fields![AvgValue], 2)
    strMaxValue = Round(rs.Fields![MaxValue], 2)
    strMinValue = Round(rs.Fields![MinValue], 2)
   
    GetHint = "Durchschnitt: " & strAvgValue & vbCrLf & "Min: " & strMinValue & vbCrLf & "Max: " & strMaxValue
   
End Function
@SirThornberry: sorry für die Arbeit, war grad ziemlich fertig mit den Nerven :angel:


Bernhard Geyer 17. Jul 2007 15:50

Re: [Access] Mittels VBA Daten aus der DB holen
 
Schon mal überlegt was passiert wenn die DB etwas größer wird und das Ergebnis nicht in 1 ms geliefert wird? Dann darf der Anwender ganz schön warten. Besser wäre es den Hint bei bedarf zu laden. Aber ob Access sowas vorsieht?

Meflin 17. Jul 2007 15:53

Re: [Access] Mittels VBA Daten aus der DB holen
 
Zitat:

Zitat von Bernhard Geyer
Schon mal überlegt was passiert wenn die DB etwas größer wird und das Ergebnis nicht in 1 ms geliefert wird? Dann darf der Anwender ganz schön warten. Besser wäre es den Hint bei bedarf zu laden. Aber ob Access sowas vorsieht?

Ich könnte den Hint beim daraufzeigen erst erstellen. Falls das geht, müsste ich ausporbieren. Aber wann ich das da aufrufe geht doch aus der Funktion garnicht hervor ;)

Die Funktion gibt ja nur die drei Werte im gewünschten Hint-Format zu einem beliebigen Feld zurück. Dafür wäre natürlich ein Cache optimal, aber das ist mir zu overkilled.


Bernhard Geyer 17. Jul 2007 16:00

Re: [Access] Mittels VBA Daten aus der DB holen
 
Zitat:

Zitat von Meflin
Aber wann ich das da aufrufe geht doch aus der Funktion garnicht hervor ;)

Ich habe lang genug mit Acces gearbeitet um noch grob zu wissen was da geht und nicht. und bin froh mit Delphi zu arbeiten :-)

DeddyH 17. Jul 2007 16:01

Re: [Access] Mittels VBA Daten aus der DB holen
 
Nach einem Blick auf #3 kann ich das sehr gut nachvollziehen. :lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:21 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz