Microsoft Excel

Herbers Excel/VBA-Archiv

Wandlung Connectstring für Uhrzeit


Betrifft: Wandlung Connectstring für Uhrzeit von: Hans-Jürgen
Geschrieben am: 19.09.2019 18:36:11

Hallo Wissende,

heute brauche ich mal wieder eure Hilfe. Ich komme diesmal nicht mit leeren Händen, sondern habe auch was im Angebot. (Die Profis von euch brauchen es sicher nicht, aber vielleicht interessiert es den einen oder anderen.)

Ich bastele momentan noch an einem Excel-Frontend, mit dem ich eine Datenbank steuere. Wenn ich nun bestimmte Datentypen verarbeiten will, muss ich die erstmal so umformen, dass SQL das versteht.

Folgende Funktionen habe ich schon gesammelt:

   Public Function ZahlInSQL(varZahl As Variant) As String
             ZahlInSQL = Replace(Replace(CStr(varZahl), ".", ""), ",", ".")
   End Function
   
   Public Function TextInSQL(strText As String) As String
             TextInSQL = "'" & Replace(CStr(strText), "'", "''") & "'" 
   End Function
   
   Public Function DatumInSQL(datDatum As Date) As String
             DatumInSQL = Format(datDatum, "\#yyyy\-mm\-dd\#")
   End Function
   
Was ich nun brauche (und da brauche ich euch) ist die Umwandlung einer Uhrzeit. Da bin ich "lost", weil ich auch nicht die Spezifikation kenne, die Access-SQL dafür haben will. Hat da jemand was?

Vielen Dank im voraus

Hans-Jürgen

P.S.: Ich weiß, die Funktionen oben sind verbesserungsbedürftig, insbesondere fangen sie keine Fehler auf. Aber ich sorge vorher auf der Excel-Ebene dafür, dass nur vernünftige Werte übergeben werden.
  

Betrifft: Ergänzung von: 1713961.html
Geschrieben am: 19.09.2019 19:05:48

Eins sollte ich noch erwähnen: Nach aktueller Planung wird immer nur die aktuelle Uhrzeit in die Datenbank geschrieben. Die müsste also eigentlich nicht als Uhrzeit übergeben werden, sondern könnte auch direkt aus Access/SQL kommen. Ich bekomme aber auch ohne Übergabe nicht hin, dass er das aktuelle Datum in ein Feld gibt, Now() ergibt NULL.

Ich weiß, ihr seid kein Access-Forum, aber vielleicht weiß das trotzdem jemand...

  

Betrifft: AW: Wandlung Connectstring für Uhrzeit von: 1713962.html
Geschrieben am: 19.09.2019 19:22:20

Hi Hans-Jürgen

Die Typenkonvertierung ist oft Trial&Error, weil irgendwie ist es jedes mal anders :)
(je nach DB, Servereinstellung etc.)

Ich hätte gedacht, ZahlInSQL braucht es nicht, weil eine echte Zahl in VBA bereits mit Punkt als Dezimaltrennzeichen daher kommt. Bei Variant kann die Ausgangslage auch ein String sein, aber den müsstest du separat behandeln.

Ein echtes Datum kann Access vielleicht ohne Zusatzformatierung verarbeiten. Oder es war doch das US-Format...
https://dbwiki.net/wiki/VBA_Tipp:_Datum_ins_VBA-Datumsformat_(SQL-Format)_umwandeln

Wie sieht der Code für die Verbindung aus?

cu
Chris


PS: Zu deiner Ergänzung fällt mir ein, mal den Typ des Datenfeldes in der Access genau prüfen. Und mal etwas mehr Code zeigen z.B. wie du das Now verarbeitet hast.

  

Betrifft: AW: Wandlung Connectstring für Uhrzeit von: 1713978.html
Geschrieben am: 19.09.2019 20:13:38

Hi,

KREISCH, ich habs gefunden, und zwar durch Schlampigkeit... Habe es nochmal probiert und dabei die Klammern hinter Now vergessen,,, und siehe da... das ist die Lösung:

insert into meinetabelle (uhrzeit,wert) Values(now,42)

(Uhrzeit ist in meinetabelle als "Zeit, lang" definiert)

Zu den Strings: Den mit Zahl habe ich bei nem Kollegen geklaut... habe schon bemerkt, dass man das für Ganzzahlen nicht braucht. Aber demnächst muss ich auch "krumme" Zahlen senden, und da wird es sicher wegen dem Replace (Komma/Punkt) nötig sein.

Trotzdem danke!

Hans-Jürgen

Beiträge aus dem Excel-Forum zum Thema "Wandlung Connectstring für Uhrzeit"