Benutzer mit den meisten Antworten
VB-Express-2008, Autor = STZ

Frage
-
Beim Programieren eines OPEN für eine existierend MS-Access-Datenbank mit VB-Express-2008 bekomme ich zur Laufzeit eine Exception "installierbares ISAM nicht gefunden." Soweit so gut, der ISAM-Treiber ist wirklich nicht installiert.
Aber: Wenn ich die Datenbank mit dem Wizard öffne dann wird sie auch geöffnet. Ich kann in der Vorschau meine Daten in der Datenbank ansehen. Wo ist da der ISAM-Treiber? Kann ich ihn im Programm auch nutzen? Es kann doch nicht sein, dass ich auf jedem Rechner, auf dem ich mein Programm installieren möchte, auch MS-Access (oder Teile daraus) installieren muss.
Falls es schon Antworten auf diese Frage in diesem Forum gibt, bitte auch um Hinweise.
Bitte die falsche Autor-Angabe zu entschuldigen, ich habe die Frage beim ertsmaligen Einstieg "Anzeige" (oder so ähnlich) nicht richtig verstanden.
Autor ist STZ.
Danke für eventuelle Hilfe, mit freudlichen Grüssen
Stz.
Antworten
-
Hallo VB-Express-2008,
Der Fehler liegt in den Connection String. Du musst anstatt „datasource“ das Wort „Data Source“ schreiben.'//Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.jet.oledb.4.0;datasource=|DataDirectory|\Telreg.mdb") --> Could not find installable ISAM. Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.jet.oledb.4.0;Data Source=|DataDirectory|\Telreg.mdb")
Grüße,Robert
- Als Antwort vorgeschlagen Robert Breitenhofer Montag, 2. November 2009 09:42
- Als Antwort markiert Robert Breitenhofer Mittwoch, 4. November 2009 21:25
Alle Antworten
-
Du hast aber nicht zufällig ein x64 OS, oder?
Wenn doch, dann sieh: http://blog.kalmbachnet.de/?postid=61
-
Hier mein Code:
-------------------------------------------------------------------------------------
Imports System.Data
Imports System.Data.OleDb
Public Class T_Form
Public Sub T_Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' Public Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.jet.oledb.4.0;datasource=|DataDirectory|\Telreg.mdb")
Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM Table", con)
Try
con.Open()
Catch ee As OleDbException
' do Nothing
End Try
Dim myDA As OleDbDataAdapter = New OleDbDataAdapter(cmd)
Dim myDataSet As DataSet = New DataSet()
myDA.Fill(myDataSet, "MyTable")
Dim myDataGridView As New DataGridView()
myDataGridView.DataSource = myDataSet.Tables("MyTable").DefaultView
con.Close()
con = Nothing
End Sub
End Class
-----------------------------------------------------------------------------
Beim con.Open() tritt die Exception mit "Installierbares ISAM nicht gefunden" auf .
Gibt es möglicherweise ein Distribution-Pack für diesen ISAM-Treiber?
Vielen dank für den Hilfeversuch und Entschuldigung dafür, dass ich mich jetzt erst wieder melde.
Mit freundlichen Grüssen
Stz. -
nun ich hab mir mal deinen Quellcode angesehen, und ich finde dort keinen Fehler, also muss das an VB oder an MS-Access liegen. Nun ich hab mal schnell eine Virtuel Machine erstellt, und dort VB ohne MS-Access installiert, jedoch haben all meine alten Projekte mit VS 2005, die Datenbanken enthalten, funktioniert. Jedoch hab ich nicht probiert ein neues Projekt mit einer Datenbank in dieser Virtuel Machine zu programmieren. Kann es sein, dass du auf deinem PC, auf dem du das Programm schreibst, kein MS-Access hast? Wenn nein, installier es.
-
Genau so ist es. Das VB2008-Express (die Gratisversion vom Microsoft) ist allein auf einer Partition, mit WinXP-Prof. +SP1 bis 3.und allen Updates , .NET-Framework 2(3), sowie die SQL-Server-Teile (lt. Install-DVD) installiert. Keine sonstigen Installationen ausser eines Texteditors. Darauf versuche ich mein Telefonbuch, bisher als MS-Acces-Anwendung, zu portieren. Ich habe ein Version in VB6 ohne Access-Installation entwickelt (damals war ich noch berufstätig). Das hat funktioniert, das Programm lässt sich auch überall (Win98 bis WinXP) installieren und es läuft klaglos. Das Portieren der Source'n von VB6 auf VB2008-Express geht auch nicht, da ich dazu VB6 installieren müsste (es werden einige DLL's daraus verlangt).
Nun habe ich keinen Zugriff mehr auf lizenzpflichtige Entwicklungstools und war daher froh über die gratis VS2008-Express-Versionen. Und damit habe plötzlich Probleme schon bei der Entwicklung des Programms.
Ich kann doch nicht von jedem meiner Bekannten, die mein Telefonbuch haben, verlangen ein MS-Access zu kaufen.Und nochmals der Hinweis: Der Wizard im VB2008-Express kann die Dantenbank ohne einen extra installierten ISAM-Treiber öffnen, und in der Vorschau alle Daten im Telefonbuch zeigen. Auch zeigt das Programm dann den ersten Datensatz zur Lauzeit korrekt an. Wie funktioniert das? Ich konnte die Codesequenz für diesen Vorgang nicht finden um sie zu analysieren.
Vielen Dank für Hilfe, vielleicht finden wir doch noch einen Weg.
Mit freundlichen Grüssen.
STZ. -
Es bedarf ja nicht direkt Access um mit diesen Datenbanken zu arbeiten.
Du benötigst lediglich die Microsoft JET Datenbank Engine.
Die kannst ud meineswissens auch mit der Anwendung als Komponente ausliefern - genau wie es mit dem .net Framework beim Setup passiert, wenn es nicht drauf ist, dann wird es Installiert. -
seltsam. setzt mal neu auf, kann oft hilfreich sein. Bei mir hat VB mit all seinen extras auch mal gesponnen, nur weil so ein blödes Programm beim deinstallieren Fonts und .net-Framework Datein auf meinem PC gelöscht hat. Ich glaube das ist nur ein Problem das auf deinem PC so ist. Hab jetzt schon viel unter Vista mit Datenbanken gearbeitet und noch keine schwierigkeiten gehabt
-
Hallo VB-Express-2008,
Der Fehler liegt in den Connection String. Du musst anstatt „datasource“ das Wort „Data Source“ schreiben.'//Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.jet.oledb.4.0;datasource=|DataDirectory|\Telreg.mdb") --> Could not find installable ISAM. Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.jet.oledb.4.0;Data Source=|DataDirectory|\Telreg.mdb")
Grüße,Robert
- Als Antwort vorgeschlagen Robert Breitenhofer Montag, 2. November 2009 09:42
- Als Antwort markiert Robert Breitenhofer Mittwoch, 4. November 2009 21:25