Avatar billede Morten Nybegynder
30. august 2004 - 11:37 Der er 4 kommentarer og
1 løsning

ODBC - Månedsskift

Hej

Jeg har en ODBC forespørgelse mod vores AS400

På grund af mængden af data er jeg nød til kun at hente den aktuelle måneds tal, men hvordan får jeg det til at fungerer så det kører automatisk...

Jeg har optaget oprettelsen af forbindelse i en makro og ændre filter-felterne til en variable som jeg så sammenligner med dagsdato problemet er bare at denne makro kun bruges i forbindelse med oprettelse af forbindelsen...

Jeg knytter disse data til en Pivottabel - er det ikke muligt i opdateringsfasen at angive en anden variable for hentning...

Håber nogen forstår hvad jeg har skrevet - understående er den makro jeg har rettet i:

Sub GetDataFromAS400()
Dim YearPart, MonthPart

YearPart = 1 & Right(DatePart("yyyy", Now), 2)
MonthPart = DatePart("m", Now)


    Worksheets("MSSSOB").Activate
    With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
        "ODBC;DRIVER={Client Access ODBC Driver (32-bit)};UID=MFR;SIGNON=;SSL=;DESC=Client Access Express ODBC data source;QAQQINILIB=;PKG=QG" _
        ), Array( _
        "PL/DEFAULT(IBM),2,0,1,0,512;TRACEFILENAME=C:\Documents and Settings\me\Dokumenter\IBM\Client Access\Service\Trace Files;SORTTA" _
        ), Array( _
        "BLE=;LANGUAGEID=ENU;XLATEDLL=;DFTPKGLIB=QGPL;DBQ=QGPL MSSPRDDAT;SYSTEM=AS400;" _
        )), Destination:=Range("A3"))
        .CommandText = Array( _
        "SELECT MSSSOB.CMGFTX, MSSSOB.CMARDT, MSSSOB.CMAHTM, MSSSOB.CMCDNB, MSSSOB.CMBJNB, MSSSOB.CMBKNB, MSSSOB.CMBQCD, MSSSOB.CMBSCD, MSSSOB.CMBUCD, MSSSOB.CMC8NB, MSSSOB.CMBZCD, MSSSOB.CMA8TX, MSSSOB.CMA7TX" _
        , _
        ", MSSSOB.CMHHNB, MSSSOB.CMBYNB, MSSSOB.CMAZVA, MSSSOB.CMA0VA, MSSSOB.CMA1VA, MSSSOB.CMA8ST, MSSSOB.CMBTNB, MSSSOB.CMA6ST, MSSSOB.CMAADT, MSSSOB.CMAATM, MSSSOB.CMAFTX, MSSSOB.CMDTNB, MSSSOB.CMG7TX, MSS" _
        , _
        "SOB.CMB6NB, MSSSOB.CMAVCD, MSSSOB.CMCFNB, MSSSOB.CMCGNB, MSSSOB.CMJGVA" & Chr(13) & "" & _
        Chr(10) & "FROM DKCRAW03.MSSPRDDAT.MSSSOB MSSSOB" & Chr(13) & "" & Chr(10) & _
        "WHERE (MSSSOB.CMBJNB= " & YearPart & ") AND (MSSSOB.CMBKNB= " & MonthPart & ")" _
        )
        .Name = "Forespørgsel Sales"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlOverwriteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 5
        .PreserveColumnInfo = True
        .Refresh BackgroundQuery:=True
    End With
End Sub

den virker første gang - men hvad sker der til månedsskiftet??
Avatar billede Morten Nybegynder
30. august 2004 - 11:43 #1
og for at teste er det så nok blot at ændre tiden i windows - eller skal jeg ændre systemdatoen i Bios for at teste?
Avatar billede sjap Praktikant
30. august 2004 - 17:55 #2
Jeg forstår ikke rigtigt noget som helst at alt det, der står i funktionen, men hvis du har problemer med tiden skal du blot se på følgende linier

YearPart = 1 & Right(DatePart("yyyy", Now), 2)
MonthPart = DatePart("m", Now)

Disse to linier kan du blot ændre til

' YearPart = 1 & Right(DatePart("yyyy", Now), 2)
' MonthPart = DatePart("m", Now)
YearPart = 2004
MonthPart = 4

Som du kan se, er de første to linier de samme som før, men med en ' foran. Det betyder blot at koden ikke læser dem. Så kan du undgå at slette dem, hvis det viser sig at du alligeel vil bruge dem senere.
I de næste to linier skriver du blot hvilket år og hvilken måned du vil hente data for.

Jeg ved ikke, om det er noget i den retning du er ude efter, men det er et bud.
Avatar billede bak Forsker
30. august 2004 - 18:59 #3
prøv lige at fjerne det lille Add du har inde, når du har kørt den 1. gang
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _

ændres til
With ActiveSheet.QueryTables(1).(Connection:=Array(Array( _
Avatar billede Morten Nybegynder
01. september 2004 - 08:34 #4
Hej Bak...

With ActiveSheet.QueryTables(1).(Connection:=Array(Array( _

Det vil den ikke - den siger:
Expected: Identifier or Bracketed expression
Avatar billede Morten Nybegynder
30. september 2004 - 08:31 #5
luk
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester