Unterstützung bei VB.NET


daPanic

Grünschnabel
Tachchen.

Ich bin noch etwas neu auf dem Gebiet, aber ich habe schon einige Vorerfahrungen mit VB5.
Der Umsteig nach VB.NET ist etwas schwieriger als gedacht. Ich habe mir nun ein kleines Porjekt entwickelt, das ich nun irgendwie vervollständigen möchte. Dazu fehlen mir jedoch noch einige Grundstrukturen.

Ist hier vielleicht jemand, der mir abseits des Forums einige Hilfe geben kann.

Möglichkeiten wären Skype oder ICQ oder sowas.

Skype wäre optimal! ;)

mein Nick da genau wie hier.
 
Zuletzt bearbeitet:

daPanic

Grünschnabel
Also in diesem Moment geht es darum, das ich die Daten in eine Access Datenbank schreiben will, die ich vorher aus einer HTML Datei gesammelt habe.
Geht auch alles, nur die Verbindung mit der Datenbank und das einfügen klappt nicht.
Ich finde zwar viele Freddys, die mir zeigen, wie ich daraus lesen kann, aber nicht wie schreiben, lustiger weise.
Und daher hänge ich atm an diesem Problem.
Und alles weitere wird sich dann wohl eher nach einiger Zeit ergeben, wenn ich an meine Grenzen stoße, wie jetzt bei Access! :)=
 

Julian Maicher

Erfahrenes Mitglied
Der Unterschied zwischen schreiben und lesen ist minimal. Im Prinzip brauchst du ja fast nur das SQL-Statement zu ändern.
Code:
Public Sub InsertMyData(myConnString As String)
    Dim mySelectQuery As String = "INSERT INTO table(a,b,c) VALUES('a','b','c')"
    Dim myConnection As New OdbcConnection(myConnString)
    Dim myCommand As New OdbcCommand(mySelectQuery, myConnection)
    Try
        myConnection.Open()
        myCommand.ExecuteNonQuery()
    Finally
        myConnection.Close()
    End Try
End Sub
That`s it!
 

Julian Maicher

Erfahrenes Mitglied
Einziger Unterschied sollte die ExecuteNonQuery Methode des ODBC-Commands sein. Damit schickt man SQL-Statements ohne Rückgabewerte (also hauptsächlich DELETE und INSERT) an die Datenbank.
 

daPanic

Grünschnabel
Hat sich schonmal alles recht gut angehört. Hab versucht es auf meine Bedürfnisse anzupasssen.

Eine nicht behandelte Ausnahme des Typs 'System.ArgumentException' ist in system.data.dll aufgetreten.

Zusätzliche Informationen: Das Format der Initialisierungszeichenfolge stimmt nicht mit der Spezifikation überein, die bei Index '0' beginnt.

War das Produkt. Schade!
 

daPanic

Grünschnabel
Nun ja, ein bisschen wurschteln.

Frage: Wie kann ich in deinem Code das MyCommand noch benutzen , ohne die INstanz direkt zu DIMMEN ohne INSERT_String und Connection?

Muss leider meinen Arbeitsplatz verlassen. Ich schaue hier morgen nochmal rein!
 
Zuletzt bearbeitet:

Julian Maicher

Erfahrenes Mitglied
Garnicht. Du brauchst eine aktive Datenbankconnection um einen Command ausführen zu können.
Du kannst ja auch nicht umschalten wenn der Fernseher aus ist :)
Was du aber sicherlich vergessen hast, ist einen Verweis auf die Microsoft Access Object Libary zu setzen. Findest du unter Verweise -> Verweis hinzufügen -> COM

Folgenden Code habe ich gerade getestet und der geht auf jeden Fall:
Code:
Dim conStr As String = "Driver={Microsoft Access Driver (*.mdb)};Dbq=D:\test.mdb;"
Dim query As String = "INSERT INTO test VALUES('test')"
Dim conn As New System.Data.Odbc.OdbcConnection(conStr)
Dim com As New System.Data.Odbc.OdbcCommand(query, conn)

Try
    conn.Open()
    com.ExecuteNonQuery()
Catch ex As Exception
    MsgBox(ex.ToString)
Finally
    conn.Close()
End Try
 

daPanic

Grünschnabel
So, ich versuche mal mein Problem jetzt zu erklären!

1. Die Datenbankverbindung wird schon aufgebaut, das geht also


'Mark1 Hier macht du den Verbindungstring'
Dim conStr As String = "Driver={Microsoft Access Driver (*.mdb)};Dbq=D:\test.mdb;"

'Mark2 Hier macht du den Command
Dim query As String = "INSERT INTO test VALUES('test')"

'Mark3 Hier setzt du die Connection'
Dim conn As New System.Data.Odbc.OdbcConnection(conStr)

'Mark4 Hier setzt du DIESEN EINEN Befehl'
Dim com As New System.Data.Odbc.OdbcCommand(query, conn)

'Mark5 Hier führst du das alles aus'
Try
conn.Open()
com.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.ToString)
Finally
conn.Close()
End Try



Bei mir sollte das dann so aussehen (ich arbeite jetzt mit meinem Marks)

Mark1
Mark3

Dann conn.open()

Dann etwas an Code, der den Command generiert

dann
Mark2
Mark4
com.ExecuteNonQuery()


BLA BLA


conn.close()




Einigermassen hintergestiegen?

Der Query, den du oben erzeugst, soll dynamisch und mehrere hundert male in meinem Code erzeugt werden, daher kann ich den da oben nicht setzten!
 
Zuletzt bearbeitet:

Julian Maicher

Erfahrenes Mitglied
Ja dann erstell sie doch dynamisch. Ich hab doch keine Ahnung wie dein(e) Queries hinterher aufgebaut sein sollen. Nimm dir halt eine Schleife oder wie du auch immer diese hunderte von Queries erzeugen willst und führe für jedes Query com.ExecuteNonQuery() aus.
Macht doch keinen Unterschied wo ich das Query definiere. Es ging in meinem Beispiel auch nur um das Prinzip und nicht um eine 1:1 Lösung für dich.
Ein bisschen Eigenleistung ist schon nötig.
 

daPanic

Grünschnabel
Ich versuche ja auch das gesamte zu verstehen und nicht nur eine Lösung für mein Problem. Ich glaube du hast mein Problem noch nicht so genau verstanden. Nochmal kurz:

In deiner Struktur deklariert du den Comand mit einem Querystring und der Connection.

Das soll bei mir nicht der Fall sein, ich deklariere nun nur den Comand, ohne Query und String. Danach setzte ich mit .Connection die Verbindung und in der Schleife dann mit .Comand den neuen Query.

Aber du hast mir schon sehr gut weitergeholfe, weil ich das Problem schon einigermasen gelöst habe. Ging halt nur darum, das ich den Query beim DIM des COmands noch nicht erzeugt hatte.

Aber soweit so gut eigentlich.

Ist schonmal eine gute Hilfe gewesen. Jetzt meckert er während des Einfügens anhand eines "Systemfehlers". Mal sehen, wie mein Rechner mir das wieder erklären will! ;)