Optellen in database

Status
Niet open voor verdere reacties.

old Hippy

Gebruiker
Lid geworden
24 mei 2008
Berichten
911
Hi Helpers

Ik wil graag een colom met bedragen in mijn database op tellen.
Wil iemand mij opweg helpen?????:love:
 
Hoe bedoel je 'in je database optellen'?

Waarom doe je niet iets zoals

Code:
dim totaal as integer = 0
for each colum in dataset.colums
totaal += cint(colum.field("optelVeld").value)
next

Weet niet vanbuiten hoe je die dataset crap enzo noemt, maar het princiepe is wel correct lijkt me :)
 
Beste bn2vs

Ik heb geen ervaring met database maar met de hulp van jullie ben ik al een heel eind gekomen.

Ik werk met een Locale database Database.sdf gemaakt met vb2008.
De Database heeft de keuse om een query te maken.
Select which returns a single value
(for example,sum,count.or any other aggregate function)
en dacht misschien hier iets mee te kunnen
en wil graag een colom genoemd Totaal alles optellen.

Dus
90.00
50.00
en dan in een textbox het resultaat 140.00
heb echter geen idee hoe te beginnen ben al aan het zoeken op google
maar nog niet veel verdergekomen.
Met vriendelijke groet Old Hippy
 
Hi bn2vs
De code geeft een fout
Error 1 'value' is not a member of 'Char'.

De code ziet er nu zo uit misschien iets verkeerd begrepen?

Code:
Dim totaal As Integer = 0
        For Each colum In DatabaseDataSet.OVData
            totaal += CInt(colum.OVTotaal("optelTextbox").value)
        Next
 
Ik weet niet in welke database je werkt maar het lijkt me sterk dat die database niet zelf kan rekenen :)

Kwestie van de juiste query formuleren.
 
Hi Tha Devil

Dat is zo maar verzin eens een Query.
ik kom er niet uit van daar mijn vraag

alvast bedankt voor je reactie
 
Hangt van je database af maar meestal is het iets als dit

PHP:
SELECT SUM(veld1, veld2) as totaal FROM tabel

Hier staat een Access voorbeeld met wat uitleg.
 
Hi Allemaal

Het lukt mij nog niet de boel aan de gang te krijgen.
De tot nu toe laatst uit geprobeerde query
met de opdracht sum komt hij met een fout melding

Code:
SELECT        COUNT(*) AS OVTotaal
FROM            OVData
GROUP BY OVTotaal
HAVING        (COUNT(*) = @Totaal)

Als iemand meer gegevens over de database.sdf wil vraag dan even wat voor gegevens.
zodat ik die kan uitzoeken
De database is een in vb2008 local Databse SQL
Hopelijk wil iemand mij verder helpen

Alvast bedankt
 
Code:
Public Class Form1

    Dim total As Double

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim strSQL As String = "SELECT Sum(TestTabel.Bedrag) AS MijnTotaal FROM TestTabel;"
        Dim ReadConn As New OleDb.OleDbCommand(strSQL, New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\test.mdb;"))

        ReadConn.Connection.Open()

        Dim DR As System.Data.OleDb.OleDbDataReader = ReadConn.ExecuteReader

        DR.Read()

        total = DR("MijnTotaal")

        ReadConn.Connection.Close()
        ReadConn.Connection.Dispose()

    End Sub

End Class

Je vroeg om een voorbeeld code. Nou hier is ie.
Deze code werkt.. zie ook de post van DaDevil
dus als het bij jouw niet werkt ligt het echt aan jezelf.

Hier de access tabel.

14ybd75.jpg


En hier zie je dat MijnTotaal het totaal bevat van alle items in een kolom. Belangrijk is wel dat het GEEN strings maar numerieken moeten zijn.

693vah.jpg
 
Beste Pizara

Heel hartelijk bedankt voor je reactie
Ik werk alleen niet met een Access database.
Dit werkt niet in mijn DB

Maar ik werk met Micrsoft SQL Server Compact 3.5
met een Database.sdf die in visual basic 2008 als een Local Datadase word gemaakt.


ik ben er een beetje mee aan misschien moet ik een boek of iets anders verzinnen.
om er achter te komen.
Mijn kennis is te kort om het goed uit teleggen
bedankt voor alle moeite misschien heb je een tip voor een boek.waar dit in wordt beschreven????
 
Onzin , de SQL query is en blijft hetzelfde met een sdf

zitten er soms spaties in je tabelnaam of je tabellen? dan moeten ze tussen vierkante haakjes namelijk []

[test tabel].[bedrag]
 
Beste Pizara

ik heb een testdatabase gemaakt in vb2008
met de naam Test en twee colommen ID en Bedrag.

een form met de datagritview en een textbox met de naam totaal.
je code inde form load gezet

maar bij ReadConn.Connection.Open() geefd hij de volgende Fout

Onbekende database-indeling C:\Test.sdf.
de code bij mij ziet er nu zo uit

Code:
 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the 'TestDataSet.TestTabel' table. You can move, or remove it, as needed.
        Me.TestTabelTableAdapter.Fill(Me.TestDataSet.TestTabel)
        Dim strSQL As String = "SELECT Sum(TestTabel.Bedrag) AS MijnTotaal FROM TestTabel;"
        Dim ReadConn As New OleDb.OleDbCommand(strSQL, New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\test.sdf;"))

        ReadConn.Connection.Open()

        Dim DR As System.Data.OleDb.OleDbDataReader = ReadConn.ExecuteReader

        DR.Read()

        totaal.Text = DR("MijnTotaal")

        ReadConn.Connection.Close()
        ReadConn.Connection.Dispose()

    End Sub
 
Ja dat klopt wel ja...
een sdf is heeft geen Microsoft.Jet.OLEDB.4.0; provider
maar een
Microsoft.SQLSERVER.CE.OLEDB.3.5; provider

of iets in die richting

Nog een vraag , waarom gebruik je een sdf database? Is het voor een mobile applicatie ofzo.
 
Laatst bewerkt door een moderator:
Hallo Pizara

Dit is de fout melding bij de nieuwe connectie
De SQLSERVER.CE.OLEDB.3.5-provider is niet geregistreerd op de lokale computer.
wat betreft je tweede vraag
ik gebruik deze database om dat daar van een beschrijving hoe te gebruiken in vb2008 staat.
en ik geen ervaring had en heb met database.

ik wil best met access werken maar weet niet hoe en of je dat ook met textboxen kan invullen. vandaar

nogmaals alvast bedankt
 
SDF databases worden gebruikt voor mobile applicaties en in Windows CE omgevingen.

En je moet altijd een provider (vergelijk het met een videocodec) gebruiken om een een specifieke database te lezen. Deze moet wel geinstalleerd zijn. Ik zei bovendien dat het zoiets moest zijn, niet identiek.

kijk hier maar eens, en zoek je juiste database met je connectiestring.

http://www.codemaker.co.uk/it/tips/ado_conn.htm#OLEDBProviderConnections
 
Beste Pizara

Ik vraag mij af waarom er een verbinding gemaakt moet worden met de database.
om dat die er volgens mij al is.
ook de zoek query heefd toch een verbinding nodig en deze werkt wel.

Een zoek query bij mij in de database ziet er als volgt uit
Code:
SELECT        OVFactuurdatum, OVNaam, [OVStraat ], OVPostcodePlaats, OVFactuurnummer, OVTarief, OVTotaal, OVAantalzittingen, VoldaanPer, KlantNummer, Jaar, 
                         Maand
FROM            OVData
WHERE        (OVFactuurnummer LIKE @OVFactuurnummer + '%')
ORDER BY Jaar

en in de Public Class Form1

Code:
 Private Sub ZoekStripTextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ZoekStripTextBox1.TextChanged
        'Zoek op factuur nummer
        If ZoekStripTextBox1.Text = "" Then
            Me.FacDataTableAdapter.Fill(Me.DatabaseDataSet.FacData)
        Else
            Me.FacDataTableAdapter.FillByFacnummer(Me.DatabaseDataSet.FacData, ZoekStripTextBox1.Text)
        End If

De FillBy kan je een toepasselijke naam geven.

Dus moet ik volgens mij ook met de berekening een query kunnen maken die zijn werk doet in in de database
ook de vraag bij Tantie bekeken ik vermoed na het nog maals door lezen van de voorbeelden in vb2008 dat ik met LINQ to SQL classes moet gaan werken.
Of met ADO.NET Entity Data Model
Of ik zit er helemaal naast????

Het begind mij aardig te duizelen om dat mijn Engels on voldoende is om deze materie te snappen.

Maar hoop doet leven.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan