Avatar billede t-johansen Juniormester
08. september 2006 - 12:19 Der er 29 kommentarer og
1 løsning

optimering af tabel / ODBC

Jeg har en tabel som slår nogle værdier op i en "read only" ODBC database.

f.eks
denne rækkekilde:
SELECT dbo_VEHICLE.BASIS_NUMBER, dbo_VEHICLE.REGISTER_NUMBER, dbo_VEHICLE.USER_CODE FROM dbo_VEHICLE;

og denne rækkekilde:
SELECT dbo_CUSTOMER.CUSTOMER_NUMBER FROM dbo_CUSTOMER;

og denne rækkekilde:
SELECT dbo_CUSTOMER.CUSTOMER_NUMBER FROM dbo_CUSTOMER;

og denne rækkekilde:
SELECT dbo_VEHICLE.BASIS_NUMBER, dbo_VEHICLE.REGISTER_NUMBER, dbo_VEHICLE.DEBIT_ACCOUNT, dbo_VEHICLE.MODEL_TEXT FROM dbo_VEHICLE;


Dvs dem er der 4 af i tabelen.

men det gør at tabelen er blevet meget langsom at opdatere med nye og ændrede dataer.

Jeg har indexeret de felter som den slår op, men det gør ingen forskel.

nogen ideer til hvad man ellers kan gøre?

eller kan man optimere opslagene?

skal i bruge flere informationer til at komme med nogle gode bud?
Avatar billede t-johansen Juniormester
08. september 2006 - 12:36 #1
lige en tilføjelse

Det er selvfølgelig i en formular at problemet opstår.

Et eksempel.

Jeg åbner en ny post.
udfylder første felt med et registreringsnummer hvortil den henter de nødvendige oplysninger til en underformular. (første rækkekilde opslag)
samtidigt henter den kontonumre til de næste to felter (de næste to rækkeopslag)
som derefter henter de nødvendige oplsysninger til to underformularer.

Når man så tabulere/enter til næste felt som er hvor den sidste rækkekilde opslag køres, hænger formularen og i venstre hjørne skriver den "beregner"
dette kan tage ca 10-20 sec.

Jeg kan lige tilføje at tabelen som denne formular er bygget på ca har 600 poster.
Dog er ODBC databasen på ca 20000 poster afhængigt af den søger i.
Tror dog ikke direkte det har noget at gøre med ODBC databasen da der ikke var nogle problemer da den lokale tabel kun var på 20 poster.
Men hvis jeg nu bare åbner tabelen somi dag er på ca 600 poster så er den lidt lang tid om at hente alle dataer.
Avatar billede Slettet bruger
08. september 2006 - 12:40 #2
Har du slået Track name Autocorrect fra?~)
Avatar billede Slettet bruger
08. september 2006 - 12:48 #3
tools/options/general og fjern flueben i track name autocorrect info!~)
Avatar billede t-johansen Juniormester
08. september 2006 - 13:19 #4
Det hjalp desværre ikke.
Talte lige tiden og den er ca 17 sec om det.
Avatar billede Slettet bruger
08. september 2006 - 13:22 #5
Hvad med at tage opslagene ud af tabellen og ligge dem på dropdown felterne...
Avatar billede t-johansen Juniormester
08. september 2006 - 13:31 #6
Altså den genereret rækkekilde skal i stedet lægges på de nuværende dropdown felter i formularen?

hmm vidste ikke man kunne det, det må jeg prøve.
Avatar billede terry Ekspert
08. september 2006 - 13:33 #7
You could try changing the RowSource which I assume are queries to PassThrough queries. Or maybe even having a view on the server. Normally you will see BIG improvements with PassThrough queries if there are any criteria in the SQL but in this case I dont see any. So maybe it wont help much at all. But it is worth trying.
Avatar billede Slettet bruger
08. september 2006 - 13:46 #8
weekend!~)
Avatar billede t-johansen Juniormester
08. september 2006 - 15:05 #9
Prøvede at fjerne opslagene fra tabelen og fandt ud af at opslagene også allerede var i formularen. Men det ændrede ikke på hastigheden :-(

Men nu er opslagene der ihvertfald ikke dobbelt.

Terry:

Rowsource?
passthrough queries?

Mener du en ekstra forespørgsel til at "styre" dataerne?
Avatar billede t-johansen Juniormester
08. september 2006 - 15:27 #10
en ekstra info:

når man åbner tabelen er den lang tid om at opdatere data, dog ikke 17 sek kun en 3-4 sec.

men når man opretter en ny post, så stopper den ikke når man går fra 3. felt til fjerde, som den gør i formularen, så fejlen må ligge i formularen.

Også kan det være mange ting, men tror så at fejlen kan ligge ved trejde felt's hændelsesprocedure som lyder på følgende:

Private Sub Kombinationsboks162_Exit(Cancel As Integer)
Me!test_kontrakt_bruger_pris.Requery
Dim VARa As Long
DoCmd.GoToControl "regnrlejebil"
VARa = Me.id
DoCmd.FindRecord VARa, acEntire, False, , True, acCurrent, True
DoCmd.GoToControl "Kombinationsboks162"
Me!test_kontrakt_bruger_pris.Requery
DoCmd.GoToControl "regnrlejebil"
End Sub
Avatar billede terry Ekspert
10. september 2006 - 19:54 #11
Is it possibe to import your ODBC tables into some Access tables and then send the dB? It hard to make suggestions without a better understanding of how your dB is put together.
Avatar billede Slettet bruger
11. september 2006 - 07:47 #12
Lav et kopi og så slet en ting af gangen fra din formular, indtil du finder den, som sænker hastigheden...
Avatar billede t-johansen Juniormester
11. september 2006 - 15:44 #13
kan man køre en log med timestamp så man kan se hvad den "beregner"?
Avatar billede t-johansen Juniormester
11. september 2006 - 15:48 #14
Fandt noget i funktioner-analyse-ydeevne.

den siger jeg skal bruge færre kontrolelementer?

og at jeg skal bruge en Option explicit? hvad er det, på normalt dansk.
Avatar billede t-johansen Juniormester
11. september 2006 - 15:56 #15
En anden ting.

Jeg har en masse kundenumre hvor datatypen er sat til tekst, vil det hjælpe meget at ændre det til heltal?
Avatar billede terry Ekspert
11. september 2006 - 16:04 #16
"Option explicit"
If you dont use option explicit the it is possible to use variables which are not declared

(Dim myVar as integer)

If you use Option explicit then you will get an error for undeclared variables.

(kundenumre) Chaning these to number isnt going to speed things up that much at all.
Avatar billede terry Ekspert
11. september 2006 - 16:04 #17
10/09-2006 19:54:01
Avatar billede t-johansen Juniormester
11. september 2006 - 16:13 #18
Det samme gælder mine makroer, kan det betale sig at konventere til moduler istedet?

og når den gør det automatisk skal man så henvise til den modulet eller gør den det hele automatisk?
Avatar billede t-johansen Juniormester
11. september 2006 - 16:21 #19
oh terry I misread your answer from 10/09-2006 19:54:01

If the offers still there, i'll try to send it to you tomorrow.


thanks in advange.
Avatar billede terry Ekspert
11. september 2006 - 16:36 #20
yes the offer is still there, but please import your ODBC tables into Access, otherwise I wont be able to do much at all.
Avatar billede t-johansen Juniormester
12. september 2006 - 12:36 #21
Hej Terry

Prøvede lige og lave ODBC tables om til lokale og det gik fint. Samtidig ville jeg lige lave indholdet i de tabeller meget simpel, da jeg ikke kan give dig alle de oplysninger der er i de tables, altså kundedata mv. Men efter det er gjort så er den hurtig igen!

og så kan du jo ikke se på problemet.

så indtil videre må vi droppe det med mindre du kan se på den uden de sammenkædet tabeller.
Avatar billede terry Ekspert
12. september 2006 - 13:25 #22
I wont be able to see what may be causin the database to be slow, but I may be able to make somne suggestions as to what could be done differently.

If you can also tell me which tables are normally the ODBC ones then this will also help too, and maybe where they are used will save me time in looking around.

I seem to recall that the ODBC tables were only for reading. Maybe you could alos concider copyin the data from these into Access tables each time the dB was opened, and then when required.
Avatar billede t-johansen Juniormester
12. september 2006 - 13:39 #23
LOL terry i was just looking at your personal info, and at your site santhell.dk

looking at your reference, made me smile. I can see you know my ODBC source, ADP.

So maybe you know more about my problem/solution than you think.

shall I just send you an email at that email address?
Avatar billede terry Ekspert
13. september 2006 - 09:34 #24
Do you work for ADP? When do they use Access?

You can send the mail to eksperten@NOSPAMsanthell.dk
remove NOSPAM
Avatar billede t-johansen Juniormester
13. september 2006 - 09:51 #25
Im not working for ADP, working in a autodealer, but using their system, Dracar+.

We was not satified about some of their features, so I have made a car rental database, and email and sms message system, which gather information from Dracar. Ofcource with your help inhere, since i dont know much about programing.

I will email you in the next couple of days, just have to sort out some problems first.
Avatar billede terry Ekspert
13. september 2006 - 10:20 #26
Its over 10 years since I worked for them, back then it was AD2000.
Anyway get back when your ready.
Avatar billede t-johansen Juniormester
15. september 2006 - 08:16 #27
Terry: thanks for looking at my database, converting the ODBC queries to passthrough sql queries, as you explained sounds interesting, so I'll try that.

Thanks for taking time to look it through.
Avatar billede terry Ekspert
15. september 2006 - 11:04 #28
Thanks, just drop a line f you need further help here.

And a good weekend to all
Avatar billede t-johansen Juniormester
15. september 2006 - 15:41 #29
Terry:

after I have converted to passthrough queries, its asks for "select data source" and I dont know any file datasource, thou I can also choose a "machine data source" and then after choosing the correct Data source name, and entered the correct code, it says:

ODBC : Kaldet ikke lykkedes
[INTERSOLV][ODBC SQL server driver][SQL Server]Incorrect syntax near';' (#102)


Just to point out that the ODBC Driver I use is a "Sybase System 11"


off to weekend.....
Avatar billede t-johansen Juniormester
18. september 2006 - 13:54 #30
terry:

in "egenskaber" in design view in a passthrough sql query I have a ODBC source: ODBC;DSN=dadfo1;SRVR=******;DB=dadf01;UID=odbc;PWD=*****

is that correct?

It is something it has genereated automatic, but it is "machine" source, not file data source.

Anyway it still makes the same error at mentioned before.
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