Du bist nicht angemeldet.

SAR-71

Programmierer aus Leidenschaft

  • »SAR-71« ist männlich
  • »SAR-71« ist der Autor dieses Themas

Beiträge: 429

Dabei seit: 11. März 2009

Wohnort: Hamburg

Hilfreich-Bewertungen: 65

  • Private Nachricht senden

1

Montag, 6. September 2010, 21:54

MS Acces 2007 + VB = Fehler

Moin,

ich hab mir eine größere Datenbank mit Acces 2007 erstellt (~100 Datensätze, steigend)
Ich möchte nun über VB gewisse Werte auslesen und dem enstprechend verarbeiten

Aber leider kommt ein Fehler wenn ich versuche die DB auszulesen und zwar: "Nicht erkennbares Datenbankformat"
Hab auch schon googlelt, aber ich komm auf ältere Themen, was da so mitbekommen habe, ist meine Datenbank beschädigt oder einfach zu neu


Meine Frage: Wie kann ich diesen Fehler beheben (Meinetwegen auch, am besten automatisch, durch formatieren der Tabelle)?







Mfg.
SAR

picoflop

Böse und gemein!

Beiträge: 5 843

Dabei seit: 19. März 2009

Hilfreich-Bewertungen: 546

  • Private Nachricht senden

2

Dienstag, 7. September 2010, 08:44

Access 2007 will nicht mehr JET, sondern ACE ...
http://www.connectionstrings.com/access-2007
Von Hilfeanfragen via PN ist ABZUSEHEN!


GUI - Threading Best Of - Async - x64 Excp

SAR-71

Programmierer aus Leidenschaft

  • »SAR-71« ist männlich
  • »SAR-71« ist der Autor dieses Themas

Beiträge: 429

Dabei seit: 11. März 2009

Wohnort: Hamburg

Hilfreich-Bewertungen: 65

  • Private Nachricht senden

3

Dienstag, 7. September 2010, 11:45

Ok, jetzt funktoniert alles
Aber die Verarbeitung braucht fast 10s, kann ich das irgendwie beschleunigen? (Es wird schon in seperaten Threads verabeitet)





Mfg.
SAR

picoflop

Böse und gemein!

Beiträge: 5 843

Dabei seit: 19. März 2009

Hilfreich-Bewertungen: 546

  • Private Nachricht senden

4

Dienstag, 7. September 2010, 12:06

Aber die Verarbeitung braucht fast 10s,

Das hängt von verschiedenen Faktoren ab: Anzahl Datensätze, Code zur Bearbeitung, Lagerort der .mdb Datei (im Netzwerk ist Access nämlich Mist)
Von Hilfeanfragen via PN ist ABZUSEHEN!


GUI - Threading Best Of - Async - x64 Excp

SAR-71

Programmierer aus Leidenschaft

  • »SAR-71« ist männlich
  • »SAR-71« ist der Autor dieses Themas

Beiträge: 429

Dabei seit: 11. März 2009

Wohnort: Hamburg

Hilfreich-Bewertungen: 65

  • Private Nachricht senden

5

Dienstag, 7. September 2010, 12:40

Das hängt von verschiedenen Faktoren ab: Anzahl Datensätze, Code zur Bearbeitung, Lagerort der .mdb Datei (im Netzwerk ist Access nämlich Mist)



Code:
 Hier klicken für weitere Informationen

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    Public Shared Function get_all_id()
        Dim con As New OleDb.OleDbConnection
        Dim cmd As New OleDb.OleDbCommand

        Dim reader As OleDb.OleDbDataReader

        Dim data As String = ""

        con.ConnectionString = _
           "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=list.accdb;Persist Security Info=False;"
        cmd.Connection = con
        cmd.CommandText = "select * from list"

        Try
            con.Open()
            reader = cmd.ExecuteReader()
            Do While reader.Read()
                data &= reader("id-name") & "," & reader("bezeichung") & "," & reader("wert") & "," & reader("beschreibung") & "#"
            Loop
            reader.Close()
            con.Close()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

        Return data
    End Function


Anzahl Datensätze:
aktuell fast 100, es werden mit der Zeit immer mehr Datensätze

Lageort:
Im gleichen Pfad, wo sich die .exe (besser gesagt, dll) auch ist


Kann ich die Leistung noch irgendwie erhöhen?






Mfg.
SAR

picoflop

Böse und gemein!

Beiträge: 5 843

Dabei seit: 19. März 2009

Hilfreich-Bewertungen: 546

  • Private Nachricht senden

6

Dienstag, 7. September 2010, 13:07

Schmeiß mal die string-verkettung raus, die ist nämlich auch ein Performance-Killer!
Du möchtest nämlich den "System.Text.Stringbuilder" verwenden ...

Außerdem kann man die Felder auch schon im SQL-Befehl miteinander verknüpfen. Dann ist jeder Datensatz genau ein String - und zwar der gesuchte.


EDIT:

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Dim s As String = ""
        Dim sb As New System.Text.StringBuilder
        Dim stp As New Stopwatch

        stp.Start()
        For i = 1 To 10000
            s &= i.ToString
        Next
        stp.Stop()
        Debug.Print(stp.ElapsedMilliseconds)

        stp.Reset()
        stp.Start()
        For i = 1 To 10000
            sb.Append(i.ToString)
        Next
        stp.Stop()
        Debug.Print(stp.ElapsedMilliseconds)


Das erste braucht >500ms, das zweite <10ms !
Von Hilfeanfragen via PN ist ABZUSEHEN!


GUI - Threading Best Of - Async - x64 Excp

SAR-71

Programmierer aus Leidenschaft

  • »SAR-71« ist männlich
  • »SAR-71« ist der Autor dieses Themas

Beiträge: 429

Dabei seit: 11. März 2009

Wohnort: Hamburg

Hilfreich-Bewertungen: 65

  • Private Nachricht senden

7

Dienstag, 7. September 2010, 14:59

Ok, habs jetzt mit dem Stringbuilder gemacht
Und dadurch satte 5s gespart

Die 5s sind wohl dann noch ein eingender Fehler, da ich die Funtion sehr häufig aufrufe (Muss ich noch etwas "zusammenfassen", aber wird schon)


Danke für die Hilfe







Mfg.
SAR

picoflop

Böse und gemein!

Beiträge: 5 843

Dabei seit: 19. März 2009

Hilfreich-Bewertungen: 546

  • Private Nachricht senden

8

Dienstag, 7. September 2010, 15:26

Mess mal mit der Stopwatch aus, wie lange es dauert, die Verbdindung zu öffnen, wie lange es dauert den SQL Befehl auszuführen und wie lange die Schleife dauert. Dann siehst du sofort, wo du ansetzen musst!
Von Hilfeanfragen via PN ist ABZUSEHEN!


GUI - Threading Best Of - Async - x64 Excp

SAR-71

Programmierer aus Leidenschaft

  • »SAR-71« ist männlich
  • »SAR-71« ist der Autor dieses Themas

Beiträge: 429

Dabei seit: 11. März 2009

Wohnort: Hamburg

Hilfreich-Bewertungen: 65

  • Private Nachricht senden

9

Dienstag, 7. September 2010, 15:45

Die Klasse, die die Daten ausließt wird ca. 20 mal hintereinader aufgerufen
Das lässt durchaus perfomanter lösen, wenn ich dann die "Lösung" habe, guck ich mal wie lange er braucht





Mfg.
SAR

Social Bookmarks