Zum Inhalt springen

eMbedded VB Zugriff auf dBase Datenbanken


Empfohlene Beiträge

Geschrieben

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...

Geschrieben

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.

Geschrieben

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.

Geschrieben

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.

Geschrieben

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?

Geschrieben

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.

Geschrieben

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!

Geschrieben

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

Geschrieben

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

Geschrieben

Danke für den Quellcode.

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

Geschrieben

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

Geschrieben
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.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...