Hi Asunta,
hmm, wenn du es fortlaufend haben willst, musst du eine bedingung einbauen, wie
dim zeile as long
dim spalte as long
spalte = 1
zeile = 1
do until cells(zeile, spalte) = ""
zeile = zeile + 1
loop
'nach der schleife hat er eine leere zelle gefunden(darf halt auch keine leere zwischendrin sein)
ich habe dir hier ein beispiel herausgesucht, um eine access-db anzuzapfen:
Dim conn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset
Dim sConnString As String
sConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\BVRdb.mdb;User Id=admin;Password=;"
conn.Open sConnString
Set cmd.ActiveConnection = conn
cmd.CommandText = "SELECT [Abfrage auf Tabelle].Monat, [Abfrage auf Tabelle].Country AS Ausdr1, Count([Abfrage auf Tabelle].Country) AS [Anzahl von Country]
FROM [Abfrage auf Tabelle]
GROUP BY [Abfrage auf Tabelle].Monat, [Abfrage auf Tabelle].Country
"
cmd.CommandType = adCmdText
Set rs = cmd.Execute
Do While Not rs.EOF
'und hier ein beispiel zur fallunterscheidung
if rs("monat") = "januar" then
cells(zeile, spalte) = rs("Anzahl")
elseif rs("monat" = "februar" then
cells(1, 1) = rs("Anzahl")
else
cells(2, 1) = rs("anzahl")
end if
rs.MoveNext
Loop
Set rs = Nothing
Set cmd = Nothing
conn.Close
Set conn = Nothing
kann sein, das es auch rs.item("anzahl") heisst, statt rs("anzahl") - habs nicht gestestet. aber wenn du die kleine anleitung genau durchliest, solltest du zu einem ergebnis kommen. achja und nicht vergessen, bei den verweisen im vba-editor einen verweis auf microsoft ado2.8 zu setzen!
ich hoffe es hilft dir
viele grüße
oliver
Assunta schrieb am 29.07.2005 09:34:46:
hallo oliver
dein lösungsvorschlag klingt gut:)
hört sich nur bissel kompliziert zu erstellen an *g*
also die ergebnisse sollen alle in demselben excelsheet, jedoch je nach monat in ner anderen zeile stehen. (also z.b. alle ergebnisse von mai in einer zeile und die von juni in die zeile drunter)
du brauchste die sql codes von den abfragen?
hier ist mal n beispiel code:
SELECT [Abfrage auf Tabelle].Monat, [Abfrage auf Tabelle].Country AS Ausdr1, Count([Abfrage auf Tabelle].Country) AS [Anzahl von Country]
FROM [Abfrage auf Tabelle]
GROUP BY [Abfrage auf Tabelle].Monat, [Abfrage auf Tabelle].Country;
kannste was damit anfangen?
gruß
assunta
Oliver schrieb am 28.07.2005 14:08:38:
"guten morgen" aussunta :-)
also das ganze wird so aussehen, das wir von excel eine datenbank-connection zu access aufbauen und eine abfrage(sql) senden.
das ergebnis der abfrage schreiben wir in excel in eine art datenbehälter-tabelle(recordset).
dieses recordset können wir nach belieben auslesen und die daten die wir erhalten durch bedingungen dahin schreiben, wo wir sie benötigen.
d.h. wenn die selben länder immer in den selben spalten stehen, ist es uns nur recht.
dann können wir z.b. unterscheiden:;
if land = "italien" then
cells(3, 5) = summe
end if
wie sieht es aus? werden die ergebnisse im gleichen excel-sheet weiter geschrieben, oder pro auswertung ein eigenes excel-sheet(niht kompl- datei) angelegt?
wenn du in access eine abfrage auswählst, kannst du bei ansicht im menü auf die sql-ansicht wechseln - das ist der abfrage-code, den wir für excel benötigen(ohne anführungszeichen und ohne strichpunkt am schluss)
kommst du soweit mit?
viele grüße
oliver
|