Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Mehr als 255 Zeichen für SQL-Abfrage über Makro

Mehr als 255 Zeichen für SQL-Abfrage über Makro
30.05.2007 14:13:06
Michael
Hallo!
Ich möchte eine Reihe von (Oracle) SQL-Abfragen über ein VBA-Makro laufen lassen. Nun habe ich folgendes Problem: Wenn ich die SQL-Abfragen für die Variablen einlesen möchte, werden nur die ersten 255 Zeichen je Abfrage gespeichert (lt. Überwachung)....
Hier mein Anfang:
---
Sub daten()
Dim arSQL(7) As Variant 'SQL Abfragen
Dim strTemp As String 'Temp Variable für die Kalenderwoche
Dim i, n, y As Integer
Dim intCWNext As Integer 'Kalenderwoche ohne CW nur als Ganzzahl
'1 - All FR's
arSQL(0) = "SELECT count(TO_CHAR (f.DETECTION_DATE, 'IW')), TO_CHAR (f.DETECTION_DATE, 'IW') FROM tref.fekat_faults f WHERE f.TECHN_PRIORITY ='17.04.2007' group by TO_CHAR (f.DETECTION_DATE, 'IW')"
'2 - All closed FR's
arSQL(1) = "SELECT count(TO_CHAR (f.DETECTION_DATE, 'IW')), TO_CHAR (f.DETECTION_DATE, 'IW') FROM tref.fekat_faults f WHERE f.TECHN_PRIORITY ='17.04.2007' group by TO_CHAR (f.DETECTION_DATE, 'IW')"
'3 - All closed FR's "error"
arSQL(2) = "SELECT count(TO_CHAR (f.DETECTION_DATE, 'IW')), TO_CHAR (f.DETECTION_DATE, 'IW') FROM tref.fekat_faults f WHERE f.TECHN_PRIORITY ='17.04." _
& "2007' and (f.RESULT = 'A' OR exists (select TASK_ID from tref.FEKAT_TASKS t where t.TASK_TYPE='COR'and t.RESULT = ('T' )and t.frnumber=f.frnumber) ) group by TO_CHAR (f.DETECTION_DATE, 'IW')"
----
usw. ...
Die ersten beiden Abfragen liest er noch ein, aber ab der Dritten gibt's Probleme - und die nächsten 5 Abfragen sind noch länger :-(
Ich würde mich über einen Tipp sehr freuen!
Gruß
Michael

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehr als 255 Zeichen für SQL-Abfrage über Makro
30.05.2007 15:17:17
Rolf
Hallo Michael,
versuch's mal damit.
fG
Rolf
Option Explicit

Sub splitSQLString()
MsgBox Join(sqlSplit(arSQL(2)), vbLf)
End Sub



Function sqlSplit(strSQL As String) As Variant
Dim p As Single
Dim i As Integer
p = Int(Len(strSQL) / 200) + 1
ReDim x(p)
If p > 1 Then
For i = 1 To p - 1
x(i) = Mid$(strSQL, (i - 1) * 200 + 1, 200)
Next
End If
x(p) = Right$(strSQL, Len(strSQL) - (p - 1) * 200)
sqlSplit = x
End Function


Anzeige
AW: Mehr als 255 Zeichen für SQL-Abfrage über Makro
30.05.2007 16:19:00
Luschi
Hallo Michael,
ich benutze die Excel-Abfrage-Masche schon lange nicht mehr, weil sie eben so unhandlich ist und bei langen Abfrage-Strings kapituliert.
Für den Datenaustausch zwischen Excel und einer Datenbank (DB) ist ADODB/ADOX die bessere Wahl.
Dafür gibt es in der DB eine Dummy-View, bei der mit Hilfe von ADOX der SQL-Code ausgetauscht
und gespeichert wird.
Durch ADODB wird dann die Select-Abfrage gestartet: "Select * From dummyView".
Man könne aber auch ohne dummyView arbeiten und den gewünschten SQL-Code direkt an die DB
per ADODB abschicken.
Hier ein 1. Link dazu:
http://www.activevb.de/tutorials/tut_ado_db/adodb.html
Darin steht:
ADO ist der Nachfolger von DAO. Über ADO lassen sich fast alle geläufigen Datenbanken zugreifen, egal ob Access, SQL-Server, Oracle (hier ist der Oracle wesentlich stärker als der von Microsoft), Informix oder sonst ein Datenbanksystem. Auch ODBC-Datenquellen, die durch ADO auch hinfällig werden, lassen sich problemlos ansteuern.
Gruß von Luschi
aus klein-Paris
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige