Avatar billede -l_jogge_l- Nybegynder
21. januar 2004 - 10:50 Der er 15 kommentarer og
2 løsninger

Hent og Skriv data fra MySQL til VB

Jeg har lige fået en MySQL database op at køre... der i ligger der
Database: test
Tabel: kunder
Felter: Kunde
        adresse
        by
        postnummer

MEN hvordan henter og skriver jeg I denne database med VB???

Jeg har kørt lidt MS SQL før det og der ser min kode sådan her ud:
-----------------------------------------------------------------
Set rsSQLKundeInfo = New ADODB.Recordset
sql = "SELECT * FROM kunder"
rsSQLKundeInfo.Open sql, "PROVIDER=SQLOLEDB; SERVER=localhost; DATABASE=test; USER ID=XXXX; PASSWORD=XXXXXXX;"

Nogen der lige vil hjælpe lidt her????
Avatar billede martin_moth Mester
21. januar 2004 - 11:47 #1
Du connecter til din database, og bruger derefter SQL-udtryk til at hente data til recordset, skrive til databasen osv....

Har du oprettet forbindelse til databasen?
Hvis ja, kan du få resten at vide her: http://www.w3schools.com/sql/default.asp
Avatar billede -l_jogge_l- Nybegynder
21. januar 2004 - 12:47 #2
Ja.. jeg kan godt hente data sådan her:
---------------------------------------------------------------------------------------
Set rsSQLKundeInfo = New ADODB.Recordset
sql = "SELECT * FROM kunder"
rsSQLKundeInfo.Open sql, "DRIVER={MySQL ODBC 3.51 Driver};" & "SERVER=localhost;" & "DATABASE=test;" & "UID=XXX;" & "PASSWORD=XXX;"

lst_SQL.Clear
Do Until rsSQLKundeInfo.EOF
    lst_SQL.AddItem rsSQLKundeInfo("kunde")
    rsSQLKundeInfo.MoveNext
Loop

rsSQLKundeInfo.Close
-------------------------------------------------------------------------------------
Men jeg kan ikke så lov til at skrive til den....

Jeg prøver med denne kode her:
-------------------------------------------------------------------------------------
Set rsSQLKundeGem = New ADODB.Recordset
sql = "SELECT * FROM kunder where kunde ='" & lst_SQL.Text & "'"
rsSQLKundeGem.Open sql, "DRIVER={MySQL ODBC 3.51 Driver};" & "SERVER=localhost;" & "DATABASE=test;" & "UID=XXX;" & "PASSWORD=XXX;"

rsSQLKundeGem.addnew
rsSQLKundeGem.Fields("adresse").Value = txtAdresse.Text
rsSQLKundeGem.Fields("by").Value = txtBy.Text
rsSQLKundeGem.Fields("kunde").Value = txtNavn.Text
rsSQLKundeGem.Fields("postnummer").Value = txtPostnummer.Text
rsSQLKundeGem.Update
rsSQLKundeGem.Close
Avatar billede -l_jogge_l- Nybegynder
21. januar 2004 - 12:54 #3
Har prøvet med denne her:
---------------------------------------------------------------------------------------Set rsSQLKundeGem = New ADODB.Recordset
   
    sql = "SELECT * FROM kunder where kunde ='" & lst_SQL.Text & "'"
    rsSQLKundeGem.Open sql, "DRIVER={MySQL ODBC 3.51 Driver};" & "SERVER=localhost;" & "DATABASE=test;" & "UID=XXX;" & "PASSWORD=XXX;"
   
    rsSQLKundeGem.CursorType = adOpenStatic
    rsSQLKundeGem.LockType = adLockReadOnly
    rsSQLKundeGem.CursorLocation = adUseClient

    rsSQLKundeGem.Fields("adresse").Value = txtAdresse.Text
    rsSQLKundeGem.Fields("by").Value = txtBy.Text
    rsSQLKundeGem.Fields("kunde").Value = txtNavn.Text
    rsSQLKundeGem.Fields("postnummer").Value = txtPostnummer.Text
    rsSQLKundeGem.Update
    rsSQLKundeGem.Close

-------------------------------------------------------------------------------------
men den kommer bare og siger:

"Operation is not allowed when the object is open"
Avatar billede -l_jogge_l- Nybegynder
21. januar 2004 - 13:02 #4
Kan man forresten ikke æændre ens SERVER navn, så den måske hedder "MySQLDB" eller noget....

Jeg kan vel ikke komme på min database fra andre Computere, hvis den hedder localhost????
Avatar billede helmet Nybegynder
21. januar 2004 - 13:15 #5
Du kan ikke ændre i database, da du åbner recordsættet som read only, hvis du ændrer rsSQLKundeGem.LockType = adLockReadOnly til
rsSQLKundeGem.LockType = adLockOptimistic
skulle det virke.
Avatar billede -l_jogge_l- Nybegynder
21. januar 2004 - 13:19 #6
Den kommer bare og siger:
"Operation is not allowed when the object is open"

Og så stopper den her:
rsSQLKundeGem.LockType = adLockOptimistic
Avatar billede helmet Nybegynder
21. januar 2004 - 13:26 #7
De 3 linier skal også ligge før open... CursorType, LockType og CursorLocation
Avatar billede -l_jogge_l- Nybegynder
21. januar 2004 - 13:32 #8
Ja... nu kommer den da videre....

Men hvis jeg så ændre noget i en af mine textboxe, og vil gemme det på serveren, hvordan skal kommandoen så se ud???
Avatar billede -l_jogge_l- Nybegynder
21. januar 2004 - 13:34 #9
Jeg kan nemt få den til at indsætte et nyt recordset sådan her:

    Set rsSQLKundeGem = New ADODB.Recordset
   
    rsSQLKundeGem.LockType = adLockOptimistic
    rsSQLKundeGem.CursorType = adOpenStatic
    rsSQLKundeGem.CursorLocation = adUseClient
   
    sql = "SELECT * FROM kunder where kunde ='" & lst_SQL.Text & "'"
    rsSQLKundeGem.Open sql, SQL_STRING
   
        rsSQLKundeGem.AddNew
        rsSQLKundeGem.Fields("adresse").Value = txtAdresse.Text
        rsSQLKundeGem.Fields("by").Value = txtBy.Text
        rsSQLKundeGem.Fields("kunde").Value = txtNavn.Text
        rsSQLKundeGem.Fields("postnummer").Value = txtPostnummer.Text
        rsSQLKundeGem.Update
        rsSQLKundeGem.Close

Men ved ikke hvordan jeg "EDIT" den????
Avatar billede helmet Nybegynder
21. januar 2004 - 13:37 #10
Stort set på samme måde som du lige har gjort, der skal bare ikke være nogen addnew først.
Avatar billede -l_jogge_l- Nybegynder
21. januar 2004 - 13:38 #11
har jeg prøvet.... den siger bare:
"Multiple-step operation generated errors. Check each value.
Avatar billede -l_jogge_l- Nybegynder
21. januar 2004 - 13:44 #12
Her er hele min kode hvis det hjælper lidt på det:
Avatar billede -l_jogge_l- Nybegynder
21. januar 2004 - 13:44 #13
Dim sql As String
Dim SQL_STRING As String
Dim rsSQLKundeInfo As ADODB.Recordset
Dim rsSQLKundeopslag As ADODB.Recordset
Dim rsSQLKundeGem As ADODB.Recordset

Private Sub Form_Load()

    SQL_STRING = "DRIVER={MySQL ODBC 3.51 Driver};" & "SERVER=localhost;" & "DATABASE=test;" & "UID=kdb;" & "PASSWORD=domino;"
   
    UpdateForm

End Sub

Private Sub UpdateForm()

    txtAdresse.Text = ""
    txtBy.Text = ""
    txtNavn.Text = ""
    txtPostnummer.Text = ""

    Set rsSQLKundeInfo = New ADODB.Recordset
    sql = "SELECT * FROM kunder"
    rsSQLKundeInfo.Open sql, SQL_STRING

    lst_SQL.Clear
   
    Do Until rsSQLKundeInfo.EOF
        lst_SQL.AddItem rsSQLKundeInfo("kunde")
        rsSQLKundeInfo.MoveNext
    Loop

    rsSQLKundeInfo.Close
    Set rsSQLKundeInfo = Nothing
   
End Sub

Private Sub cmdGEM_Click()

    Set rsSQLKundeGem = New ADODB.Recordset
   
    rsSQLKundeGem.LockType = adLockOptimistic
    rsSQLKundeGem.CursorType = adOpenStatic
    rsSQLKundeGem.CursorLocation = adUseClient
   
    sql = "SELECT * FROM kunder where kunde ='" & lst_SQL.Text & "'"
    rsSQLKundeGem.Open sql, SQL_STRING
   
        'rsSQLKundeGem.AddNew
        rsSQLKundeGem.Fields("adresse").Value = txtAdresse.Text
        rsSQLKundeGem.Fields("by").Value = txtBy.Text
        rsSQLKundeGem.Fields("kunde").Value = txtNavn.Text
        rsSQLKundeGem.Fields("postnummer").Value = txtPostnummer.Text
        'rsSQLKundeGem.Update
        'rsSQLKundeGem.Close
   
    UpdateForm

End Sub

Private Sub lst_SQL_Click()
   
    Set rsSQLKundeopslag = New ADODB.Recordset

    sql = "SELECT * FROM kunder where kunde ='" & lst_SQL.Text & "'"
    rsSQLKundeopslag.Open sql, SQL_STRING

        txtAdresse = rsSQLKundeopslag("adresse")
        txtBy = rsSQLKundeopslag("by")
        txtNavn = rsSQLKundeopslag("kunde")
        txtPostnummer = rsSQLKundeopslag("postnummer")

    rsSQLKundeopslag.Close

    Set rsSQLKundeopslag = Nothing

End Sub
Avatar billede -l_jogge_l- Nybegynder
21. januar 2004 - 14:04 #14
Ingen gode ideer????
Avatar billede helmet Nybegynder
21. januar 2004 - 14:18 #15
Næh ikke rigtigt, måske er de i et forkert format de data du fylder ind, men så burde din opret jo heller ikke virke.
Det er vel et uheld at du har en ' foran update??
Avatar billede -l_jogge_l- Nybegynder
21. januar 2004 - 14:37 #16
Nej... den er remmet ud...
Avatar billede -l_jogge_l- Nybegynder
21. januar 2004 - 15:45 #17
Det kan være at en af jer kan svarer mig på, hvordan jeg får en MySQL til at kører LOKALT i en netværk så jeg kan kontakte den fra alle computere????

Se dette Link: http://www.eksperten.dk/spm/454881
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester