Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA-Access-SQL-Punkte versus Komma

Forumthread: VBA-Access-SQL-Punkte versus Komma

VBA-Access-SQL-Punkte versus Komma
09.12.2002 19:32:28
Sebastian
Hallo,
ich bin mit VBA noch nicht sehr lange vertraut, und habe nun eine rießengroßes Problem:
Ich muß von einer Access-Tabelle Daten via eines VBA-Scripts in SQl_Plus übertragen.

Habe wie folgt begonnen:


Sub sales_extract()

Dim db As Database
Dim rs As Recordset
Dim SQL, str As String
Dim strFileName, tmp_number As String
Dim list As Collection
Dim i As Integer

Set db = DBEngine.OpenDatabase("U:\student\MADE\irgendwas.MDB", False, False)

SQL = "Select t.time_key, t.product_key, " & _
"t.promotion_key, " & _
"t.store_key, " & _
"Format(t.dollar_sales, ""General Number"") as dollar_sales, " & _
"t.unit_sales, " & _
"t.dollar_cost, " & _
"t.customer_count " & _
"FROM Sales_fact t;"
'SQL = "Select * from sales;"
Debug.Print SQL

Set rs = db.OpenRecordset(SQL, dbOpenSnapshot)
rs.MoveFirst

Set list = New Collection

Do While Not rs.EOF


str = "insert into sales (" & _
"time_key, product_key, promotion_key, " & _
"store_key, dollar_sales, " & _
"unit_sales, dollar_cost, " & _
"customer_count) values ("
str = str & rs!time_key & ","
str = str & rs!product_key & ","
str = str & rs!promotion_key & ","
str = str & rs!store_key & ","
str = str & rs!dollar_sales & ","
str = str & rs!unit_sales & ","
str = str & rs!dollar_cost & ","
str = str & rs!customer_count & ");"
list.Add (str)
rs.MoveNext
Loop


strFileName = "insert_salesfact.sql"
Open ThisWorkbook.Path & "\" & _
strFileName For Output Access Write As #2
For i = 1 To list.Count
Print #2, list(i)
Next i

Close #2
rs.Close
db.Close

End Sub


Das klappt alles wunderbar, nur das Problem ist, daß bei der Ausgabe in Notepad z.B die dollar_sales mit einem Komma verbunden sind. Ich will nun, daß diese Werte mit einem Punkt verbunden sind.
z.B 7.5 statt 7,5 !!!!!
Ansonsten erkennt SQL-Plus zuviele Werte und kann die Daten nicht importieren...
Vielen Dank für eure große Hilfe
:-)
SEbastian

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: VBA-Access-SQL-Punkte versus Komma
09.12.2002 19:54:17
harald
Hallo,

ich hatte mal ein ähnliches Problem, ich habe es mit
Join(Split(dollar_sales, ","), ".") gelöst. Geht aber möglicherweise einfacher.

harald

Re: VBA-Access-SQL-Punkte versus Komma
10.12.2002 18:18:14
Sebastian
Hallo Harald,
vielen Dank für die prompte Hilfe. Wir sind wirklich noch ziemlich unerfahren..deswegen die doofe Frage:
wo genau muss der Join-Befehl eingefügt werden?
Vielen Dank im Voraus
Sebastian
:-)
Anzeige
Re: VBA-Access-SQL-Punkte versus Komma
10.12.2002 19:50:19
harald
Hallo,

im ganzen Bereich

müssen alle Ausdrücke der Form rs!VARIABLE durch Join(Split(rs!VARIABLE, ","), ".") ersetzt werden.

konkret:
Die Zeile
str = str & rs!dollar_sales & ","
muß durch
str = str & Join(Split(rs!dollar_sales, ","), ".") & ","
ersetzt werden; alternativ geht u.U.
str = str & WorksheetFunction.Substitute(rs!dollar_sales, ",", ".") & ",".

Ich arbeite mit Excel und kann nur vermuten, daß die Befehle in Access gleich sind. Na ja, versuch es einfach mal damit und sag mir dann, was daraus geworden ist.

harald

Anzeige
Re: VBA-Access-SQL-Punkte versus Komma
11.12.2002 21:17:07
Sebastian
Hallo Harald,

tausend Dank!!! Es hat geklappt, so wie Du es vorgeschlagen hast. Damit sind wir jetzt schon mal ein ganzes Stück vorangekommen. :)
Das nächste Problem kommt bestimmt....

Schöne Grüsse,

Sebastian

Re: VBA-Access-SQL-Punkte versus Komma
12.12.2002 09:22:25
Sebastian
Hallo Harald,

folgendes Problem:

wir haben in der Dimension,an der wir gerade arbeiten, ein Datum.
In der Access Datenbank ist es richtig formatiert als beispielsweise Oktober 1, 1994.
Unsere vba-script lautet:
Sub dbtest()

Dim db As Database
Dim rs As Recordset
Dim SQL, str As String
Dim strFileName As String
Dim list As Collection
Dim i As Integer


Set db = DBEngine.OpenDatabase("U:\student\MADE\supermarket.MDB ", False, False)

SQL = "Select t.time_key, " & _
"Format(t.date, ""dd.mm.yyyy"") as date, " & _
"t.day_of_week, " & _
"t.day_number_in_month, " & _
"t.day_number_overall, " & _
"t.week_number_in_year, " & _
"t.week_number_overall, " & _
"t.month, " & _
"t.quarter, " & _
"t.fiscal_period, " & _
"t.year, " & _
"t.holiday_flag " & _
"FROM Time_L t;"
'SQL = "Select * from time_l;"
Debug.Print SQL

Set rs = db.OpenRecordset(SQL, dbOpenSnapshot)
rs.MoveFirst

Set list = New Collection

Do While Not rs.EOF
str = "insert into time (" & _
"TIME_KEY, date_, DAY_OF_WEEK, " & _
"DAY_NUMBER_IN_MONTH, DAY_NUMBER_OVERALL, " & _
"WEEK_NUMBER_IN_YEAR, WEEK_NUMBER_OVERALL, " & _
"Month, QUARTER, fiscal_period, year, holiday_flag) values ("
str = str & rs!time_key & ", to_date('"
str = str & rs!Date & "','dd.mm.yyyy'), '"
str = str & rs!day_of_week & "', "
str = str & rs!day_number_in_month & ","
str = str & rs!day_number_overall & ","
str = str & rs!week_number_in_year & ","
str = str & rs!week_number_overall & ", '"
str = str & rs!Month & "',"
str = str & rs!quarter & ", '"
str = str & rs!fiscal_period & "', "
str = str & rs!Year & ", '"
str = str & rs!holiday_flag & "');"
list.Add (str)
rs.MoveNext
Loop

strFileName = "insert_timetable.sql"
Open ThisWorkbook.Path & "\" & _
strFileName For Output Access Write As #1
For i = 1 To list.Count
Print #1, list(i)
Next i

Close #1
rs.Close
db.Close
End Sub

Das Datum haben wir zeichengenau, genau wie in allen anderen Dimensionen,in denen es wunderbar klappt, mit dem format-befehl bearbeitet.
Trotzdem kommt dabei raus z.B:
insert into time (TIME_KEY, date_, DAY_OF_WEEK, DAY_NUMBER_IN_MONTH, DAY_NUMBER_OVERALL, WEEK_NUMBER_IN_YEAR, WEEK_NUMBER_OVERALL, Month, QUARTER, fiscal_period, year, holiday_flag) values (2, to_date('02.10.94','dd.mm.yyyy'), 'Sunday', 2,274,40,40, '34638',4, '4Q94', 1994, 'N');

Rauskommen sollte:
insert into time (TIME_KEY, date_, DAY_OF_WEEK, DAY_NUMBER_IN_MONTH, DAY_NUMBER_OVERALL, WEEK_NUMBER_IN_YEAR, WEEK_NUMBER_OVERALL, Month, QUARTER, fiscal_period, year, holiday_flag) values (2, to_date('02.10.1994','dd.mm.yyyy'), 'Sunday', 2,274,40,40, '34638',4, '4Q94', 1994, 'N');

Irgendeine Idee??

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

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