Avatar billede jette1 Nybegynder
25. juli 2002 - 13:39 Der er 19 kommentarer og
1 løsning

Sql forespørgsel til access database

Jeg vil forbinde til en database, hente summen af tallene i en kolonne og skrive summen til en label. Jeg har bakset med det i et par timer, så nu giver jeg op! :-)

Jeg her nået hertil med min sub:

Private Sub tonsialt()
    Dim sql As String
    Dim objconn As New ADODB.Connection
    Dim rs As ADODB.Recordset
    objconn.ConnectionString = DataEnvironment1.Tilbud97.ConnectionString
    sql = "Select sum(ton) as ton from Tilbud"
   
    Set rs = objconn.Execute(sql)
   

    objconn.Close
End Sub

Jeg får en fejl der siger noget om at min forbindelse til databasen ikke er åben, ved sætningen "Set rs = objconn.Execute(sql)".

Jeg ved heller ikke hvordan jeg får summen ud af resultatet og skriver det til min label...
Avatar billede pjatmadsen Nybegynder
25. juli 2002 - 13:52 #1
Hey. Jeg har det script jeg bruger når jeg åbner access databaser, du kan jo se om du kan bruge det...

dim accessdb, mydsn
  accessdb = "/db1.mdb"
  myDSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath(accessdb)
  set oconn = server.createobject("ADODB.Connection")
  on error resume next
    oconn.open myDSN
    if err.number<>0 then
      response.write "<BR><HR>Database connection error.<BR>"
      response.write "Fejl beskrivelse: " & err.description & "<BR>"
      response.write "Connectionstring: " & mydsn & "<BR>"
      response.end
    end if
  on error goto 0

Den virker hvert fald hos mig...
Avatar billede xfox Nybegynder
25. juli 2002 - 13:58 #2
Prøv at se om dette ikke virker:

dim db as database
dim rs as recordset
dim strSQL as string

set db = opendatabase("c:\database.mdb")

strSQL = ("Select sum(ton) as ton from Tilbud")
set rs = db.openrecordset(strSQL)

label1.caption = rs!ton
Avatar billede terry Ekspert
25. juli 2002 - 14:01 #3
sum is an Aggregate function so I would think you will need to GROUP BY!
Avatar billede jette1 Nybegynder
25. juli 2002 - 14:26 #4
pjatmadsen -> din metode giver fejlen:

Run-time error '424';
Object required

ud for linien med myDSN= ....
Avatar billede pjatmadsen Nybegynder
25. juli 2002 - 14:29 #5
Nu har du også husket at installere en ODBC driver ikke??
Avatar billede jette1 Nybegynder
25. juli 2002 - 14:29 #6
xfox -> mangler jeg ikke en reference? Den siger...

Userdefined type not defined

ud for linien ...

Dim db As Database
Avatar billede pjatmadsen Nybegynder
25. juli 2002 - 14:30 #7
Og du skal selfølig også huske og lave accessdb om til navnet på dig egen database...
Avatar billede jette1 Nybegynder
25. juli 2002 - 14:31 #8
pjatmadsen -> Jeg har en eksisterende forbindelse til samme database i det program jeg arbejder på via en ADO data control, og den har jeg en ODBC driver til.... kan jeg bruge den samme her?
Avatar billede pjatmadsen Nybegynder
25. juli 2002 - 14:34 #9
Hmm det skulle jeg mene du godt kan, men er ikke sikker... Jeg plejer at bruge Mdac fra Microsoft...
Avatar billede terry Ekspert
25. juli 2002 - 14:34 #10
yes you will need a reference to ADO
Avatar billede jette1 Nybegynder
25. juli 2002 - 14:39 #11
Terry -> Jeg har i forvejen denne reference:

Microsoft ActiveX data Objects 2.5 Library

Er den den du mener?
Avatar billede pjatmadsen Nybegynder
25. juli 2002 - 14:41 #12
Tror du skal hente dig en Mdac... http://www.microsoft.com/data/download.htm

Skal bare installeret...
Avatar billede jette1 Nybegynder
25. juli 2002 - 14:47 #13
Jeg ville bare mene det burde kunne gøres mere enkelt, idet jeg allerede har en ADO data control på formen... burde man ikke kunne gøre noget i retning af ...

Private Sub tonsialt()
    Dim strSQL As String
    strSQL = "select sum(ton) as ton from Tilbud"
    Set rs = Adodc1.Recordset
    rs.openrecordset (strSQL)
   
    lblTonialt.Caption = rs!ton
End Sub

Altså jeg mener, kan man ikke bare lave en "kopi" at det eksisterende recordset, og køre forespørgslen på den?
Avatar billede terry Ekspert
25. juli 2002 - 14:51 #14
YES ADO 2.5!

Jette1 we cant seee what you have in
DataEnvironment1.Tilbud97.ConnectionString
Avatar billede jette1 Nybegynder
25. juli 2002 - 15:30 #15
Terry ->
DataEnvironment1.Tilbud97.ConnectionString = F:\Region Ejby\Salg\Tilbud97.mdb
Avatar billede jette1 Nybegynder
25. juli 2002 - 15:58 #16
Nu har jeg fordoblet pointene i håb om at det hjælper lidt :-)

Jeg har allerede en forbindelse til den database jeg skal bruge, via en ADO data control. Dataene fra databasen vises i en datagrid. Én af kolonnerne indeholder antal tons, og summen af denne kolonne skal vises på en label.

Jeg ved ikke om summen skal komme direkte fra databasen, eller man måske kan bruge datagrid'en til sammentællingen.... bare jeg får den samlede sum af kolonnen ton over i den label, er jeg glad :-)
Avatar billede terry Ekspert
26. juli 2002 - 09:27 #17
jette1 you can make a query in Access and then select the query instead of the query. It seasier ot see if the SQL works in Access and that way you can be sure the SQL works and if it desont work in your VB then its obviously in your VB program.

I can also take a look if you send it to terry@santhell.dk (VB+DB) ZIPPED
Avatar billede medions Nybegynder
26. juli 2002 - 11:49 #18
Hej Jette!

Prøv lige at kør denne kode, og sig så hvad den kommer med af fejl! -det lyder lidt underligt at det ovenfor ikke vil funge...

'** Betingelser:
'** Reference: Microsoft ActiveX Data Objects 2.5 Library

    Dim Conn As New Connection
    Dim rs As Recordset
    Dim strSQL As String
   
  Function Connection()
      Conn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & App.Path & "\DB.mdb"
  End Function

Private Sub Form_Load()
'** Udskrivning **
    Connection
    strSQL = "SELECT * FROM Tilbud"
    Set rs = Conn.Execute(strSQL)

    MsgBox (rs("ton"))

    Conn.Close
End Sub

//>Rune
Avatar billede jette1 Nybegynder
26. juli 2002 - 12:22 #19
medions -> Jeg ved ikke hvad du har gjort rigtigt, men nu virker det i hvert fald :-))
Avatar billede medions Nybegynder
26. juli 2002 - 12:29 #20
:-) Fair nok
Thx 4 Poinz

//>Rune
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

IT-JOB

Capgemini Danmark A/S

Java Engineer

Forsvarets Efterretningstjeneste

IT-direktør til Forsvarets Efterretningstjeneste

Netcompany A/S

IT Consultant