annabell Skrevet 20. juni 2011 Del Skrevet 20. juni 2011 Hei! Jeg er ganske ny i Visual Basic, så sliter med endring og sletting av innhold i en mySQL database. Jeg har opprettet tilkobling, og får fint til å legge til rader i databasen, søke etter navn, og å se på alle radene. Denne sistnevnte gjør jeg med en ListBox. Men jeg skulle gjerne fått hjelp til: 1. Hvordan jeg overfører all informasjon i ListBox i hver sin TextBox, (slik at navn, alder og dato kommer i hver sin TextBox) på den raden jeg klikker på i ListBoxen. Deretter vil jeg endre informasjonen i TextBoxene, og oppdatere informasjonen i databasen. 2. Hvordan jeg får slettet et element i databasen, når jeg har klikket på det i ListBoxen. Jeg får slettet elementet fra ListBox, men da blir det ikke slettet i databasen, og det dukker opp i listboxen nestegang jeg kjører programmet. KODE: Private Sub btnSlett_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSlett.Click Dim intResponse As Integer intResponse = MsgBox("Er du sikker på at du vil slette", _ vbYesNo + vbQuestion, _ "Slett") If intResponse = vbYes Then ListBox1.Items.Remove(ListBox1.SelectedItem) ElseIf intResponse = vbNo Then End If End Sub 3. En enkel kode for å legge til overskrifter for hver "kategori" i ListBox når jeg viser informasjon om alle radene fra databasen. KODE: Try 'Lager sentrale objekter Dim sql As New MySqlCommand("SELECT * FROM ansatt", tilkobling) Dim da As New MySqlDataAdapter Dim interntabell As New DataTable 'Objektet "da" utfører spørringen og legger resultatet i "interntabell" da.SelectCommand = sql da.Fill(interntabell) 'Har ikke lenger bruk for å tilkobling.Close() 'En tabell har mange rader. DataRow-objektet kan lagre 1 rad om gangen Dim rad As DataRow Dim ansattid, fødselsnummer, navn, adresse, postnummer, poststed, mobilnummer, epostadresse, bilde, datoansettelse, timelonn, skatteprosent, kontonummer, kommentar As String 'hjelpevariabler være tilkoblet til databasen 'Fyller listeboksen med ønsket informasjon ListBox1.Items.Clear() 'fjerner først eventuell gammel tekst For Each rad In interntabell.Rows ansattid = rad("id") fødselsnummer = rad("fodselsnummer") navn = rad("navn") adresse = rad("adresse") postnummer = rad("postnummer") poststed = rad("poststed") mobilnummer = rad("mobilnummer") epostadresse = rad("epost") bilde = rad("bilde") timelonn = rad("timelonn") skatteprosent = rad("skatt") kontonummer = rad("kontonummer") kommentar = rad("kommentar") ListBox1.Items.Add(ansattid & " | " & fødselsnummer & " | " & navn & " | " & adresse & " | " & postnummer & " | " & poststed & " | " & mobilnummer & " | " & epostadresse & " | " & bilde & " | " & timelonn & " | " & skatteprosent & " | " & kontonummer & " | " & kommentar) Next rad Catch feilmelding As MySqlException MsgBox("Feil ved tilkobling til databasen: " & _ feilmelding.Message) Finally tilkobling.Dispose() End Try Håper noen kan hjelpe meg Lenke til kommentar
GeirGrusom Skrevet 21. juni 2011 Del Skrevet 21. juni 2011 I Form designeren, så er det egenskaper som heter DataBindings. Disse brukes til å binde egenskaper til databaser ved å bruke BindingSource og DataSet. Da skal du slippe å lese all data fra databasen manuelt. Lenke til kommentar
annabell Skrevet 21. juni 2011 Forfatter Del Skrevet 21. juni 2011 I Form designeren, så er det egenskaper som heter DataBindings. Disse brukes til å binde egenskaper til databaser ved å bruke BindingSource og DataSet. Da skal du slippe å lese all data fra databasen manuelt. Okei.. Jeg la inn dette, men da må jeg velge typed eller untyped dataset, også koble bindingsource til denne.. hvordan får jeg koblet til min MYSQL database som ligger på nettet til dette? Lenke til kommentar
annabell Skrevet 27. juni 2011 Forfatter Del Skrevet 27. juni 2011 Noen som vet en løsning? Lenke til kommentar
GeirGrusom Skrevet 28. juni 2011 Del Skrevet 28. juni 2011 Du kan jo gjøre alle disse tingene manuelt med SQL også. UPDATE MyTable SET Col1='abc123' WHERE TableID=4 DELETE FROM MyTable WHERE TableID = 4 Lenke til kommentar
annabell Skrevet 28. juni 2011 Forfatter Del Skrevet 28. juni 2011 Du kan jo gjøre alle disse tingene manuelt med SQL også. UPDATE MyTable SET Col1='abc123' WHERE TableID=4 DELETE FROM MyTable WHERE TableID = 4 Det vet jeg.. Men problemet er at jeg ikke vet hvilken ID jeg skal Endre/Slette. Dette er noe brukeren skal velge i en i ListBox. Hadde absolutt vært greiest å gjøre det slik du sier, men har du en kode som jeg kan skrive istedet for tableID = 4 ? Altså TableID = Hovered eller noe? Lenke til kommentar
GeirGrusom Skrevet 28. juni 2011 Del Skrevet 28. juni 2011 Dim sql As String = String.Format("UPDATE MyTable SET MyField={0} WHERE TableID = {1}", FieldValue, Id) ID får du fra SELECT-en du dytter inn i listboxen. Lenke til kommentar
annabell Skrevet 30. juni 2011 Forfatter Del Skrevet 30. juni 2011 Dim sql As String = String.Format("UPDATE MyTable SET MyField={0} WHERE TableID = {1}", FieldValue, Id) ID får du fra SELECT-en du dytter inn i listboxen. Jeg gjorde som du sa først, for å teste om det funket å slette. Koden ble myCommand = New MySqlCommand("DELETE FROM ansatt WHERE ansatt.id = '9'", tilkobling) Men raden med id 9 blir ikke slettet i databasen :S Hvorfor det? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå