Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
188to192
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
188to192
188to192
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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
:-)
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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige