Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

eMbedded VB Zugriff auf dBase Datenbanken

Empfohlene Antworten

Veröffentlicht

Moin,

ich möchte mit dem MS eMbedded VB eine Applikation für Pocket PCs schreiben. Über WLAN soll dann auf eine dBase Datenbank zugegriffen werden.

Hat jemand so etwas schon mal gemacht oder ein Codeschnipsel gefunden? DAO und ADO sind ja darunter etwas anders...

Im Internet findet man leider nicht allzuviel über das Thema "eMbedded VB und Datenbanken". Ich kann Dir aber längerfristig das Buch "Pocket PC Programmierung mit Visual Basic" empfehlen. ISBN 3-7723-6110-2

In diesem Buch stehen auch einige Sachen zu Datenbankzugriffen via eMbedded VB. Wenn Du konkrete Fragen hast, dann stell sie, ich kann versuchen Dir mit Hilfe meines Exemplares zu antworten.

  • Autor

Hallo LoneGunman,

danke für deinen Hinweis. Sicherlich werde ich mir das Buch mal ansehen.

Ich möchte eigentlich nur folgendes tun:

Ich möchte eine Applikation für Pocket PC schreiben welche über WLAN (oder auch lokal auf dem PDA) auf eine dBase Datenbank zugreift und über SQL Abfragen durchführt, z.B. eine Suche.

Ist ja eigentlich nicht viel. Daher bin ich mir noch nicht sicher, ob ich mir deshalb gleich das Buch kaufen sollte. Habe leider auch nicht viel im Inet gefunden.

Bräuchte ja nur einen kleinen Codeschnipsel.

Ich könnte Dir ein Beispiel einer lokalen Verbindung zu einer cdb-Datenbank (CE-Äquivalent zu einer mdb-Datenbank) posten, wenn es Dir denn hilft.

  • Autor

Leider bringt mir das in diesem Falle nichts. Es muss doch eine Möglichkeit geben auf eine dBase (IV) Datenbank zuzugreifen. Von mir aus mit ODBC... oder unterstützt das das Betriebssystem PocketPC nicht?

Meine gründlichere Recherche in Buch hat ergeben das eMbedded VB nur cdb-Datenbanken (CE-Version von mdb-Datenbanken) und SQL-Server unterstützt. Für einen Zugriff auf eine dBase-Datenbank via WLAN sehe ich leider schwarz.

  • Autor

Kann ich mir irgendwie aber nicht vorstellen. dBase Datenbanken sind ja nichts anderes als Textdateien, wobei die Datensätze mit einer bestimmten Länge getrennt sind...

Vieleicht sollte ich ja einen Treiber für VBCE schreiben :cool: :D:D

Das MUSS es irgendwo geben...

Trotzdem danke für die Mühe!

Sofern es sich bei den dBase-Datenbanken um Textdateien mit einer bestimmten Struktur handelt, kann man ja (umständlich) versuchen Datensätze aus den Dateien in datenbankabhängige Objekte in eMbedded VB zu laden und sie dann weiterverarbeiten.

just my two cents

  • Autor

Hier mal der Quellcode...


Option Explicit

Private Sub Form_Load()


  ' Add column headers

  lvwArticles.ColumnHeaders.Clear

  lvwArticles.ColumnHeaders.Add , , "Description", 1900

  lvwArticles.ColumnHeaders.Add , , "Price", 600, lvwColumnRight

  lvwArticles.ColumnHeaders.Add , , "Stock", 600, lvwColumnRight


End Sub

Private Sub cmdGet_Click()


  Dim laco As Connection

  Dim lars As Recordset

  Dim lsSQL As String

  Dim litm As ListItem


  ' Create objects

  Set laco = CreateObject("ADOCE.Connection.3.1")

  Set lars = CreateObject("ADOCE.Recordset.3.1")


  ' Open Connection

  laco.Open "Provider=Microsoft.SQLSERVER.OLEDB.CE.1.0;" & _

            "Data Source=\DBNAME.sdf"


  ' Open Recordset

  lsSQL = "SELECT * FROM Article"

  lars.Open lsSQL, laco, adOpenForwardOnly, adLockReadOnly


  ' Clear list and get item rows

  lvwArticles.ListItems.Clear

  Do While Not lars.EOF

    Set litm = lvwArticles.ListItems.Add(, , lars("Description").Value)

      litm.SubItems(1) = lars("Price").Value

      litm.SubItems(2) = lars("Stock").Value

    lars.MoveNext

  Loop


  ' Close Recordset and Connection

  lars.Close

  laco.Close


End Sub

Private Sub cmdAdd_Click()


  Dim laco As Connection

  Dim lars As Recordset


  ' Create objects

  Set laco = CreateObject("ADOCE.Connection.3.1")

  Set lars = CreateObject("ADOCE.Recordset.3.1")


  ' Open Connection

  laco.Open "Provider=Microsoft.SQLSERVER.OLEDB.CE.1.0;" & _

            "Data Source=\DBNAME.sdf"


  ' Open Recordset

  lars.Open "Article", laco, adOpenDynamic, adLockOptimistic, adCmdTableDirect


  ' Add new Article

  lars.AddNew

  lars("Description").Value = "Test"

  lars("Price").Value = 50

  lars("Stock").Value = 100

  lars.Update


  ' Close Recordset and Connection

  lars.Close

  laco.Close


End Sub

Private Sub cmdChange_Click()


  Dim laco As Connection

  Dim lars As Recordset


  ' Create objects

  Set laco = CreateObject("ADOCE.Connection.3.1")

  Set lars = CreateObject("ADOCE.Recordset.3.1")


  ' Open Connection

  laco.Open "Provider=Microsoft.SQLSERVER.OLEDB.CE.1.0;" & _

            "Data Source=\DBNAME.sdf"


  ' Open Recordset

  lars.Open "Article", laco, adOpenDynamic, adLockOptimistic, adCmdTableDirect

  lars.Find "Description='Test'"


  ' Update Article

  If Not lars.EOF Then

    lars("Price").Value = 200

    lars.Update

  End If


  ' Close Recordset and Connection

  lars.Close

  laco.Close


End Sub

Private Sub cmdDelete_Click()


  Dim laco As Connection

  Dim lars As Recordset


  ' Create objects

  Set laco = CreateObject("ADOCE.Connection.3.1")

  Set lars = CreateObject("ADOCE.Recordset.3.1")


  ' Open Connection

  laco.Open "Provider=Microsoft.SQLSERVER.OLEDB.CE.1.0;" & _

            "Data Source=\DBNAME.sdf"


  ' Open Recordset

  lars.Open "Article", laco, adOpenDynamic, adLockOptimistic, adCmdTableDirect

  lars.Find "Description='Test'"


  ' Delete Article

  If Not lars.EOF Then lars.Delete


  ' Close Recordset and Connection

  lars.Close

  laco.Close


End Sub

Private Sub Form_OKClick()

    App.End

End Sub

Danke für den Quellcode.

Werde ihn mal am Wochenende mit meinen Quellen vergleichen. :)

Hmm, der Quellcode (bzw. das Verfahren) stimmt in etwa mit meinen Quellen überein. Konntest Du denn auf die Datenbank via WLAN zugreifen?

  • Autor
Konntest Du denn auf die Datenbank via WLAN zugreifen?

Das wird sich erst noch zeigen müssen, da mein PDA kein eingebautes WLAN hat. Der von meinem Chef hat auch nur Bluetooth.

Das einzige "Problem" sollte allerdings nur der Zugriffspfad sein, denke ich. Ich hoffe ich kann den über das VB so setzen, dass er ein (z.B. gemapptes) WLAN LAufwerk als Pfadangabe akzeptiert. WEnn nicht müsste ich über eine Dateisynchronisation gehen, also alle n Minuten die Dateien über Hotsync abgleichen.

Habe sogar ein kleines Freeware-Programm gefunden mit dem du auf dbf Dateien zugreifen kannst. Leider ist nur der komplette Table anzeigbar und keine Selektionen möglich. Aber das will ich ja eh selbst programmieren.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.