🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.bazy-danych.msaccess
3 messages
3 total messages Started by minfo Wed, 19 Apr 2017 15:01
Zastąpienie DLookUp - coś co przyspieszy/ optymalizacja formularza
#137444
Author: minfo
Date: Wed, 19 Apr 2017 15:01
23 lines
2137 bytes
Witam,

Mam podlinkowaną sporą tabelę dbf z aplikacji zewnętrznej
A2010 obsługuje jeszcze dbf-y ale chyba trochę spowolnił ...
Zrobiłem formularz który ma 4 pola:
1. numer wysyłki - dane wpisuję w formularz z ręki
2. nr odbiorcy
3. nr adresata
4. adres wysyłki

po wpisaniu numeru wysyłki w zdarzeniu "po aktualizacji"
mam odświeżenie formularza

zrobiłem jak umiałem na szybko być może trzeba optymalizować
w polach 2-4 funkcja DLookUP która wstawia dane z podlinkowanej tabeli
w warunku funkcji jest np. tak: pole 2. wyszukaj nr odbiorcy w tabeli wysyłki (dbf) gdzie numer wysyłki = Me.numer_wysyłki (pole 1 formu).

Generalnie A2010 dość długo uzupełnia pola 2-4.

Możecie pomóc w optymalizacji/ew. zastąpieniu DLookUP?

Z góry dziękuję.
MF
Re: Zastąpienie DLookUp - coś co przyspieszy/ optymalizacja formularza
#137445
Author: minfo
Date: Wed, 19 Apr 2017 15:10
9 lines
1499 bytes
.....
> 
> Z góry dziękuję.
> MF

Aha,
Chciałem jeszcze dodać że pola formu są niezwiązane.

MF
Re: Zastąpienie DLookUp - coś co przyspieszy/ optymalizacja formularza
#137446
Author: Smyk
Date: Thu, 20 Apr 2017 07:19
46 lines
2539 bytes
minfo@onet.pl wrote at Mi 19.04.2017 17:01:

> po wpisaniu numeru wysyłki w zdarzeniu "po aktualizacji"
> mam odświeżenie formularza
> [...]
> w polach 2-4 funkcja DLookUP która wstawia dane z podlinkowanej tabeli
> w warunku funkcji jest np. tak: pole 2. wyszukaj nr odbiorcy w tabeli
> wysyłki (dbf) gdzie numer wysyłki = Me.numer_wysyłki (pole 1 formu).
> 
> Generalnie A2010 dość długo uzupełnia pola 2-4.
> 
> Możecie pomóc w optymalizacji/ew. zastąpieniu DLookUP?

Startujesz 3 razy DLookup() żeby pobrać wartość jednej kolumny tabeli. 
Zastąp to jednym zapytaniem SQL, ktore zwróci wszystkie trzy kolumny jako 
Recordset. Odświeżanie przyśpeszy trzykrotnie :)

Ze starym DAO byłoby jakoś tak ...

  ...
  Dim db as DAO.Database
  Dim r as DAO.Recordset
  Dim sql as String

  sql = " select kol2, kol3, kol4 from tabela_dbf " &
        " where numer_wysylki = " & Me![numer_wysylki]
  Set db = CurrentDB
  Set r = db.OpenRecordset(sql, dbOpenSnapshot, dbForwardOnly)
  if not r.EOF then
    Me!pole2 = r!kol2
    Me!pole3 = r!kol3
    Me!pole4 = r!kol4
  else
    Me!pole2 = "Nic nie znaleziono"
    Me!pole3 = Me!pole2
    Me!pole4 = Me!pole2
  end if
  r.Close
  Set r = Nothing
  Set db = Nothing
  ..

Sprawdź składnie. Mój VBA trochę zardzewiał ...


Ciao, Smyk
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads