webForumDet fria alternativet

Hämta från flera db - VBA-kod i Excel.

Kontorsprogram

6 svar · 311 visningar · startad av solbulle

Medlem sedan mars 20015 287 inlägg
Frågan#1

VBA-kod i Excel.

Har idag en sql-fråga som ger mig kundnummer samt diverse fakta om kunden.
Nu vill jag från en annan databas hämta mer fakta, då med hjälp av kundnummret jag får fram i den tidigare frågan.
Hur göra detta bäst? Hämta allt i en loop? Hämta det ena först och sen det andra?
Kanske kan man skriva om frågorna?

Tips, ideer mottages tacksamt.

select    dbi.kundnummer , namn, SUM(belopp), SUM(belopp) / (13 - 01 + 1),  kategori   from dbi, kund where  vecka >= '2003'||'-'||'01' and vecka <= '2003'||'-'||'13'  and dbi.kundnummer = kund.kundnummer and kund.grupp = '500' Group by dbi.kundnummer, namn, kategori

Resultatet av denna loopar jag sen ut:

   Do While Not rs.EOF
        Worksheets("blad").Range("A" & i).Value = CStr(rs(0))
        Worksheets("blad").Range("B" & i).Value = CStr(rs(1))
	'osv	
        i = i + 1
        rs.MoveNext
    Loop

Till detta vill jag i i "C"-kolumnen lägga till datat som denna sql-fråga ger:

select sum(belopp) from dbi, kund, stad  where vecka >= '2003-01' and vecka <= '2003-13'  and dbi.kundnummer = kund.kundnummer  and kund.kundnummer = '10000' and kund.stad = stad.stad

Dessa sql-frågor byggs upp av värden i celler i ett excelark.
Kruxet är då, att kundnummret jag använder i denna fråga är det jag får ut i den första frågan, hur gör jag detta bäst?
Anledningen till två frågor är att de kopplar mot olika databaser.

Medlem sedan feb. 20013 023 inlägg
#2

Det är väl inget krux!
Skapa en array, redimma arrayen med antalet poster som du får i det första recordsetet.

Sedan loopar du igenom arrayen. Använd Ubound så vet du arrayens längd.

Glasklart?

Medlem sedan mars 20015 287 inlägg
#3

Jo... det där verkar ju glasklart! :)
Får försöka få till det i VBA... det ska väl kunna gå.

Medlem sedan mars 20015 287 inlägg
#4

Ok...
Nu har jag kommit en bit på väg, går lite över ån efter vatten...
Jag gör som så att jag skriver ut mina fakta sen hämtar jag området med de nya numren jag behöver och kör en loop för att få ut dom ett och ett.
Fast det som är riktigt illa egentligen är att först kör jag en databashämtning för att få alla grunddata, sen måste jag köra en hämtning för varje rad/post för att få ut den sista datan, det känns väldigt onödigt.
Så egentligen bör jag ju koncentrera mig på en omskrivning av mina sql-frågor.

Medlem sedan feb. 20013 023 inlägg
#5

OK, tittar inte in här så ofta...
Om uppgifterna ligger i olika databaser så är det ju inte så lätt att
lösa. Annars skulle det ju vara lätt att joina ihop tabellerna?

Medlem sedan feb. 20013 023 inlägg
#6

Du kanske kan länka databaserna?

Medlem sedan mars 20015 287 inlägg
#7

Mina kunskaper sträcker sig inte så långt. Men det hela fungerar nu och frågan, "dne hela stora" körs inte så ofta så det ska nog fungera.
Det bästa vore givetvis att lägga tabellerna i en och samma databas men det helt utom min kontroll.

Tack för svaren.

253 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)