Avatar billede mikker Nybegynder
27. oktober 2006 - 10:11 Der er 12 kommentarer og
1 løsning

Dlookup eller kolonnenummer eller

Hej Eksperter

Jeg har lavet kæde til 2 ODBC databser (AS/400).

I begge databaser har jeg 11 cifrede varenumre jeg gerne vil kæde sammen. Dette vil under normale omstændigheder ikke være noget problem- men...

Lad os sige at jeg vil have kædet DB a sammen med DB b, men fra DB b vil jeg automatisk have en ny kolonne alt efter hvilken uge vi er i. Altså i uge 1 vil jeg have kolonne 4, i uge 2 vil jeg have kolonne 5 osv. Kolonnerne hedder PIX01 for uge 1 PIX02 for uge 2 osv.

Dette er hvad jeg har indtil videre:
Beregnede felter:

UGE: "PIX" & Format(Date();"ww";2;2)
BLA: DLookUp ([UGE];"[DBTRIM_TRIMSES]";"[DBTRIM_TRIMSES].IITEM"="[DBTRIM_TRIMSES].IITEM")

UGE: Giver mig en streng eks. PIX43
BLA: Slår faktisk op i kolonne PIX43, men returnerer kun den første record igen og igen.

Jeg har prøvet med diverse joins, men jeg er ren amatør på det punkt.

Mit spørgsmål er kort og godt:

Kan man gøre dette ved at slå op i kolonnenumre eller blot ved at optimere min dlookup eller måske blot ved at gøre det rigtigt?

- Mikker

P.S. Den var godt nok ikke nem at formulere, så undskyld hvis det er volapyk.
Avatar billede mikker Nybegynder
27. oktober 2006 - 10:12 #1
Der kom da lidt mange linier ind i min Dlookup...

BLA: DLookUp([UGE];"[DBTRIM_TRIMSES]";"[DBTRIM_TRIMSES].IITEM"="[DBTRIM_TRIMSES].IITEM")
Avatar billede terry Ekspert
28. oktober 2006 - 16:06 #2
Can you give an example of your data so we can better understand your problem?
Avatar billede mikker Nybegynder
30. oktober 2006 - 15:19 #3
Jeg kan da ihvertfald prøve at illustrere det.

Som sagt har jeg lavet kæder til databaser på AS/400, lad os sige den ene ser således ud:

SKU          P1
12345678901  1000
12345678902  1500


Den anden ser således ud:

SKU          pix01  pix02  pix03  pix43  pix44
12345678901  0,8    1,0    1,2    1,0    1,3
12345678902  0,7    1,0    1,2    0,9    1,4

I uge 44 skal jeg så kæde SKU i den første sammen med SKU i den anden og finde kolonnen pix44 (for uge 44).

Så skulle min forespørgsel gerne se således ud:
SKU          P1    PIX44(eller alias)
12345678901  1000  1,3
12345678902  1500  1,4


Giver det mere mening?

- Mikker
Avatar billede terry Ekspert
30. oktober 2006 - 15:31 #4
You should be able to use either a sub select or Dlookup to find the px for week 44

But if your database was maybe changed a bit then it would be much easier.

Instead of adding a new column for each week you shoule have a column for the wek number and a column for tha value
Avatar billede mikker Nybegynder
30. oktober 2006 - 17:04 #5
Jeg har ikke indflydelse på hvilke kolonner jeg har til rådighed.
Medmindre man kan lave dem i forespørgslen?

Dlookup har jeg prøvet, den finder den rigtige kolonne, men tager kun den første record igen og igen.

Sub select kender jeg ikke.

- Mikker
Avatar billede terry Ekspert
30. oktober 2006 - 18:56 #6
Is it possible for you to import the AS400 tables into Access and then send me your dB?
ekspertenATsanthell.dk

AT = @
Avatar billede mikker Nybegynder
30. oktober 2006 - 20:19 #7
I can send You some of it tomorrow. We are talking hundreds of thousands of records, so I will send You a small sample :o)

Thanks

- Mikker
Avatar billede terry Ekspert
30. oktober 2006 - 20:35 #8
as long as there is enough data to reproduce the example above tehh that would be fine. If you can also giv eth table the same name as those in AS400 then you should b eable to reuse the query I make.

Please compact and zip the dB
Avatar billede mikker Nybegynder
01. november 2006 - 08:43 #9
Blot til information, så har Terry løst opgaven ved at lave en formular med kode der ændrer SQL strengen. Koden følger her:

Private Sub Command0_Click()
On Error GoTo Err_Command0_Click
Dim qryDef As DAO.QueryDef

    Dim stDocName As String
   
    stDocName = "Query1"
   
    Set qryDef = CurrentDb.QueryDefs(stDocName)
    qryDef.SQL = "SELECT R.IITEM, (SELECT PIX" & Format(Date, "ww", 2, 2) & " from [DBTRIM_TRIMSES] T " & "WHERE T.IITEM = R.IITEM ) AS Pix " _
                & "FROM DBTRIM_RVARERTRIM AS R" _
       
   
    DoCmd.OpenQuery stDocName, acNormal, acEdit

Exit_Command0_Click:
    Exit Sub

Err_Command0_Click:
    MsgBox Err.Description
    Resume Exit_Command0_Click
   
End Sub

Endnu engang tak til Terry for altid at være klar til at hjælpe.

- Mikker
Avatar billede terry Ekspert
01. november 2006 - 08:55 #10
thanks
Avatar billede mikker Nybegynder
09. november 2006 - 13:02 #11
Jeg fandt en anden løsning, som nogen muligvis kan bruge i fremtiden.

Jeg benytter mig simpelthen af streng manipulation.
Ved at tage at tal der har max 2 decimaler kan jeg blot gange med 100 og formatere som "0000". Dog kan man max have 1004 tegn i en Access formel, så jeg var nødt til at lave en for uge 1- 26

ST: Format([PIX01]*100;"0000") & Format([PIX02]*100;"0000") & Format([PIX03]*100;"0000") & Format([PIX04]*100;"0000") & Format([PIX05]*100;"0000") & Format([PIX06]*100;"0000") & Format([PIX07]*100;"0000") & Format([PIX08]*100;"0000") & Format([PIX09]*100;"0000") & Format([PIX10]*100;"0000") & Format([PIX11]*100;"0000") & Format([PIX12]*100;"0000") & Format([PIX13]*100;"0000")...

Og det samme for uge 26 - 52.

Derefter lavede jeg et felt der samlede de to felter til 1:

ST3: [ST] & [ST2]

Herefter er det blot at slå værdien op:

SD: IIf(CDbl(Format(Mid([ST3];((Format(Date();"ww";2;2)*4)-4+1);4)/100;"#0,00"))=0;1;CDbl(Format(Mid([ST3];((Format(Date();"ww";2;2)*4)-4+1);4)/100;"#0,00"))

Anyway, dette blot til info.

- Mikker
Avatar billede mikker Nybegynder
09. november 2006 - 13:09 #12
... Og det samme for uge 26 - 52.
Nej, vel?

Naturligvis for uge 27 - 52
Avatar billede mikker Nybegynder
09. november 2006 - 14:51 #13
CDbl kommandoerne giver vist heller ikke meget mening i ovenstående...

Ak ja, man skal jo starte et sted. Det var nu også blot for at give et forslag til hvordan man kunne gøre. Min forspørgsel ser lidt anderledes ud i virkeligheden.

- Mikker
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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