Avatar billede the_email Nybegynder
03. juni 2004 - 18:08 Der er 17 kommentarer og
1 løsning

Vise indhold af MySQL-database

Davdav.
Hvordan får jeg Visual Basic til at vise indholdet af min MySQL-database?
Jeg har fundet ud af at få forbundet til den vha. ODBC 3.51-driveren og jeg godt sætte værdier ind i den. Men hvordan får jeg den til at vise mig hvad for nogle værdier den indholder i forvejen?
/TheEmail
Avatar billede vbcoder Nybegynder
03. juni 2004 - 18:27 #1
hvis du kan trække data ud kan du bruge

ved opdatering "insert into .....
Avatar billede helmet Nybegynder
03. juni 2004 - 18:57 #2
Du gør kan igen bruge et recordset.

Dim Conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim SQLstring As String
Dim objConn As String

Set Conn = New ADODB.Connection
Set rs = New ADODB.Recordset

objConn = "Driver={MySql}; Server=kraaer.com; Port=3306; Option=131072; Stmt=; Database=courier; uid=courier; pwd=passwordtilmysql;"

Conn.Open objConn

'Læser alle data fra tabellen users
SQLstring = "SELECT * FROM users;"
rs.Open SQLstring, Conn, adOpenStatic, adLockReadOnly

Herefter kan du løbe igennem de indlæste data i et loop
fx.
while not rs.EOF
textBox.Text = rs('feltnavn')
rs.movenext
wend
Avatar billede the_email Nybegynder
03. juni 2004 - 19:15 #3
Okay. Hvordan laver jeg et loop?
Jeg behøver ikke at kunne redigere i databasen direkte der hvor den viser hvad databasen indeholder. Bare jeg kan se indholdet.
/TheEmail
Avatar billede helmet Nybegynder
03. juni 2004 - 19:31 #4
Jeg har jo faktisk lavet et while loop nederst i eksemplet.
'Kører indtil den er ved enden af recordsættet.
while not rs.EOF
  'Gør et eller andet
  'Her læser jeg bare værdien af felt1 og felt2 ind i hver deres tekstboks, men
  'der er også mange andre muligheder
  txtfelt1.text = rs("felt1")
  txtfelt2.text = rs("felt2")
  rs.movenext 'Flytter sig frem til næsten post i recordsættet.
wend
Avatar billede the_email Nybegynder
03. juni 2004 - 20:22 #5
Fra databasen vil jeg gerne trække tabellerne: id password home
Jeg har prøvet at skrive:

While Not rs.EOF
brugernavn.Text = rs(id)
password.Text = rs(password)
home.Text = rs(home)
rs.MoveNext
Wend

hvor jeg har oprette tre tekstbokse og kaldt dem henholdsvis brugernavn password og home.
Den melder så at:
"Elementet kan ikke findes i den samling, der svarer til det anmodede navn eller ordenstal"

Og gør denne linje gul når jeg trykker Debug: brugernavn.Text = rs(id)
Jeg har også prøvet at skrive:

while not rs.EOF
textBox.brugernavn = rs(id)
osvosv...
rs.movenext
wend

Hvis jeg sætter id mellem ', så det står rs('id'), melder den compileerror.

Håber du kan hjælpe
/TheEmail
Avatar billede helmet Nybegynder
03. juni 2004 - 20:38 #6
Min fejl det er vist asp det jeg har skrevet
Prøv lige og skriv
rs!ID
rs!Password
rs!Home
i stedet for.
Avatar billede the_email Nybegynder
03. juni 2004 - 21:10 #7
Skriver jeg:
rs!id
melder dem:
Compile error: Expected: =
Erstatter jeg ! med = melder den :
Invalid use of property

/TheEmail
Avatar billede the_email Nybegynder
03. juni 2004 - 21:15 #8
Havde måske misforstået dig. Skriver nu:

While Not rs.EOF
TextBox.id = rs!id
TextBox.password = rs!password
TextBox.home = rs!home
rs.MoveNext
Wend

hvor den melder: Object required

/TheEmail
Avatar billede helmet Nybegynder
03. juni 2004 - 21:21 #9
Du har vist lige fået variabel navnene med lige for mange stedet, en tekstboks har ikke en id, password og home variable.
Går du fra at det er dem du nu får fejl ved.
Hvis du har kaldt dine tekstbokse brugernavn, password og home
skal du skrive
id.text = rs!id
password.text = rs!password
home.text = rs!home
Avatar billede the_email Nybegynder
03. juni 2004 - 21:30 #10
Yes, nu får output. Desværre kun den første linje.
Skriver:
While Not rs.EOF
id.Text = rs!id
password.Text = rs!password
home.Text = rs!home
rs.MoveNext
Wend
Men den flytter sig vidst ikke til den næste.
Har du mon også en løsning til det
/TheEmail
Avatar billede helmet Nybegynder
03. juni 2004 - 21:37 #11
Nu er problemet med tekstboksene at de kun kan vise dig den ene af rækkerne fra databasen, hver gang du kommer rundt en gang i loopet, skriver den jo oveni det fra den forrige database post.

Hvis du vil se alle sammen på en gang, er du nødt til og vælge en anden kontrol fx en listboks eller et listview.
Avatar billede the_email Nybegynder
03. juni 2004 - 21:48 #12
Oprettede ListBoxe og namede dem id password home og prøvede at kører:
While Not rs.EOF
id.ListBox = rs!id
password.ListBox = rs!password
home.ListBox = rs!home
rs.MoveNext
Wend
Der melder den: Compile error: Method or datamember not found
Avatar billede helmet Nybegynder
03. juni 2004 - 21:52 #13
De virker lidt anderledes end en tekst boks
så du skal skrive
id.additem rs!id
password.additem rs!password
home.additem rs!home
Avatar billede the_email Nybegynder
03. juni 2004 - 21:56 #14
Helmet. Jeg havde aldrig fået det til at virke uden din hjælp.
Lægger du et svar?
Avatar billede the_email Nybegynder
03. juni 2004 - 22:01 #15
Lige en sidste ting. Kan man få den til at tømme listboxene før den henter data fra databasen. Trykker jeg flere gange skriver den værdierne flere gang
Avatar billede helmet Nybegynder
03. juni 2004 - 22:08 #16
Ja lige før du kører while loopet sætter du blot
id.clear
password.clear
home.clear

Personligt synes jeg at et listview er pænere og nemmere og arbejde, i forhold til listbokse, så jeg vedlægger lige et ekspempel

Dim item As ListItem
  With ListView1
    .View = lvwReport
   
    .ColumnHeaders.Clear
    .ColumnHeaders.Add , , "ID"
    .ColumnHeaders.Add , , "Password"
    .ColumnHeaders.Add , , "Home"
   
    .ListItems.Clear
    While Not rs.EOF
      Set item = .ListItems.Add(, rs!ID)
      item.SubItems(1) = rs!Password
      item.SubItems(2) = rs!Home
      rs.movenext
    Wend
  End With
Avatar billede the_email Nybegynder
03. juni 2004 - 22:16 #17
Hvis jeg skal bruge listwiev, hvad skal jeg så oprette for nogle felter som data bliver skrevet ud i? Stadigvæk listboxe?
Avatar billede helmet Nybegynder
03. juni 2004 - 22:26 #18
Nej, med det med det eksempel jeg har vist skal du først i Visual Basic tilføje componenten Microsoft Windows Common Controls 5 eller 6 lidt afhængig af om du har en service pack installeret.
Du tilføjer den under project->Components

Så skal den blot trækkes ind på formen som fx. listbox.

Når du har gjort det så skulle det virke.
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