Avatar billede bodekaer Nybegynder
05. september 2001 - 15:11 Der er 10 kommentarer og
1 løsning

Dsum() funktion

Jeg har oprettet en forespørgsel der bruger Dsum() funktionen til brug i ved hentning af data fra en Access database.

Kører jeg SQL strengen i Access fungerer det fint, men kører jeg den fra Visual Basic siger den pludselig: \"Der er en ikke-defineret funktion \'DSum\' i udtrykket\"

Hvordan får jeg DSum funktionen \'ind i\' Visual Basic?

Håber på hjælp, da DSum er den eneste løsning som det er nu.

/Michael Bodekær
www.rezq.dk
Avatar billede terry Ekspert
05. september 2001 - 15:13 #1
as far as I know Dsum is NOT a part of the VB Language but the Access VBA language!
Avatar billede terry Ekspert
05. september 2001 - 15:15 #2
I have no idea as to how you are using your Access database from VB but you could create a query in Access with paramters. Then you can open then query filling in th eparameters necessary!
Avatar billede terry Ekspert
05. september 2001 - 15:17 #3
You can also make a select statement to do what you want without using DSUM.

But I have no ideas as to your capabilities!
Avatar billede bodekaer Nybegynder
05. september 2001 - 15:20 #4
Well, actually I am just running an VB code which opens the database. Ex.:

db.OpenDatabase(dblink)
rs.OpenRecordset(\"SELECT bla bla DSum(\'[test]\';\'[tbl]\';\'\') FROM [blabla]\")

There is no difference from opening it from Access, only VB doesn\'t seem to have that DSum function... or what? Can I find some text anywhere about this?


Avatar billede bodekaer Nybegynder
05. september 2001 - 15:22 #5
Well about using other statements, I first tried making multiply Select statements, and implementing those into eachother... this way it sucked up all the CPU in no time.
Avatar billede terry Ekspert
05. september 2001 - 15:37 #6
Cant you just use SUM?

Try altering your query in Access to a totals query.

Avatar billede bodekaer Nybegynder
05. september 2001 - 15:41 #7
I dont think I can. See this:

SELECT [tbl-brugerlogin].[bruger-id], Sum([spil-min])-Sum([tidstyring-min]) AS tid
FROM [tbl-tidstyring] RIGHT JOIN ([tbl-brugerlogin] LEFT JOIN [tbl-spilstat] ON [tbl-brugerlogin].[bruger-id] = [tbl-spilstat].[spil-brugerid]) ON [tbl-tidstyring].[tidstyring-brugerid] = [tbl-brugerlogin].[bruger-id]
GROUP BY [tbl-brugerlogin].[bruger-id];

This code should sum the time a user has played. The problem is that it dublicates the posts a lot of times because there is 2 tables in the query. I can\'t explain exactly, as I don\'t know the exact error..., only that the above doesnt work
Avatar billede kichian Nybegynder
05. september 2001 - 15:44 #8
DSum dosn\'t exist in regular VB. But writing the equivalent in SQL i easy.

DSum(\'[test]\';\'[tbl]\';\'\') can also be written as:
SELECT SUM(test) FROM tbl

or
DSum(\'[test]\';\'[tbl]\';\'some condition\') =
SELECT SUM(test) FROM tbl WHERE some condition

Avatar billede terry Ekspert
05. september 2001 - 15:45 #9
Well I can see that you have no WHERE .... in the query so just make a query in access as you have been doing and then in VB use

SELECT * FROM yourQuery

instead of from yourtable
Avatar billede bodekaer Nybegynder
05. september 2001 - 15:48 #10
Kichian>> So how can I make multiply SELECT statements in one Query? Could u give an example




Terry>> I tried, but it seems as if the query is just being runned in VB anyway. It same error appears....
Avatar billede bodekaer Nybegynder
09. oktober 2001 - 11:47 #11
I found another way around without using DSum.

Thanks for the input
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
Kurser inden for grundlæggende programmering

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