04. april 2005 - 10:45Der er
34 kommentarer og 1 løsning
skriv, rediger, hent og slet fra acces database
et let spørgsmål for jer som kan:D
som det fremgår i titel vil jeg gerne kunne gøre det...
men jeg tror lige jeg starter med at kunne skrive og hente så det ikk bliver for uoverskuligt for mig:D
jeg har forgæves søgt her på eks.dk efter noget som jeg kunne bruge... men det var noget være rod i mit hovede... så håber der er en som kan hjælpe mig igang...
Søg på Access, SQL, connection, connectionstring, ADO, DAO osv.
Princippet er, at du opretter en variabel i dit program af typen recordset. Derefter opretter du forbindelse til databasen ved fx. en ADO forbindelse. Når forbindelsen er oprettet, fyrer du en SQL-sætning afsted (SELECT xxx FROM yyy WHERE bla bla) og får derved læst resultatet af SQL-forespørgslen over i din variabel.
Herefter kan du på normal VB-vis ændre i data, og derefter opdatere din database med et nyt SQL udtryk
Der er en milliard million eksempler her på eksperten...
men jeg har endnu ikk fundet noget som jeg kunne bruge/hitte u a...
men det skulle vel ikk være muligt at der var en som kunne hjælpe mig her i stedet for at jeg skal smides rundt på hele siden og på andre sider som jeg heller ikk kan hitte u a???
og vil i have flere point for at hjælpe jamen så får i da bare det...
tjaaa hvad ved jeg... jeg er bare ved at prøve mig lidt frem og eftersom jeg ikk rigtig kan finde noget her inde som jeg kan finde rundt i må jeg jo bare prøve mig frem...
Nu skal du først forstå, at der er to måder at gøre tingene på.
Enten connecter du til en database og læser/skriver via. SQL, som, jeg forklarede 04/04-2005 11:32:14. Altså læser data fra din DB ind i en variabel, og bruger det på den måde.
Den anden måde er at binde de enkelte kontroller direkte til databasen via deres properties. Mange kontroller har f.eks. "'.DataSource'
Så enten før du det ene, eller så gør du det andet. Det første - med SQL - foretrækker jeg, da det giver mest flexibilitet.
Prøv at bruge ovenstående eksempel, og ret det til så det passer med hvad du vil. Virker det ikke, så vis din kode, sig hvad fejlen er, evt. fejlmeddelse, og hvornår den opstår.
Jeg har selv fundet fejlen... jeg havde skrevet noget de forkerte steder...
men inde i min database har jeg en som hedder film navn som jeg henter over i en listbox og det virker som det skal og så har jeg en text box hvor der skal stå kategori i... hvordan henter jeg det ind i en text box det som svare til det navn man trykker på???
jeg prøver at lave db i et module men syntes bare ikk det vil det som jeg vil???
sætter jeg det ind i selve den form hvor det skal bruges virker det som det skal bare ikk når jeg smider det over i et module...
jeg har ændret de små ting så som at den skal finde listbox over i den form hvor den ligger... kan der være en eller anden lille dum kode som gøre at den vil bruge module???
Du kan jo ikke bare kaste din kode rundt hvor du vil. Hvis det ikke virker fra dit module, så er det sikkert fordi du har nogle variable, der ikke kan ses fra din form i dit modul - og omvendt.
Hvis du har krævet variabel-declaration (tools > options > require variable declaration) vil du få en fejlmeddelse hvor denne fejl optræder!
Du kan jo ikke bare kaste din kode rundt hvor du vil... Det var det du skrev...
jeg er squ godt klar over at jeg ikk kan kaste rundt med det som jeg vil... men jeg havde set noget af det min far havde lavet og han sagde at det ville være det smarteste at lave sådan noget i et module...
og så skrev jeg det ind der...
og det her : form1.list1.additem "bla bla" det har jeg prøvet at skrive og det hjalp ikk noget...
og nu har jeg da fået den til at læse det hele ind i en lstbox...
men jeg vil jo også gerne have den til at slette og det er jo så et være problem fandt jeg ud af...
den her kode har jeg så brugt til at hente fra database og smide det der passer den det jeg klikker på over i et tekst felt...
Function Connection() conn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & App.Path & "\acces\dvd-film.mdb" End Function
Public Function dvd2()
'** Udskrivning ** DVD.txtkategori = "" Connection strsql = "SELECT * FROM dvd" Set rs = conn.Execute(strsql)
While Not DVD.Lsttabel = rs("film navn")
rs.MoveNext Wend DVD.txtkategori = rs("kategori") DVD.txtCD = rs("cd antal") DVD.txtbem = rs("bemærkning") conn.Close End Function
kan jeg ikk bruge noget af det samme for at slette??? det jeg lidt tænkte på var at udskifte denne sætning til en anden strsql = "SELECT * FROM dvd" til strsql = "delete * FROM dvd"
er det ca at være på rette vej eller er jeg helt ude i det blå???
Helt rigtigt. Du sletter i databasen ved at sende en passende SQL-sæting afsted. Hvordan den skal se ud kan du se på www.w3schools.com/sql/ Tag og læs alle afsnit, det er godt forklaret
Connection strsql = "delete * FROM dvd where" & ("film navn") = DVD.Lsttabel Set rs = conn.Execute(strsql)
conn.Close
efter hvad jeg har læst mig frem til vil det her være mit forslag til hvordan man skulle slette men jeg får en fejl i denne sætning : Set rs = conn.Execute(strsql)
Jeg tror ikek du finder det mere udførligt forklaret nogen andre steder...
Men den melder fejl - altså er der sikkert noget i vejen med din SQL sætning. Prøv at kik på den - hvad skulle ("film navn") være for noget? mangler du ikek et "rs" foran?
Prøv at skriv din SQL-sætning ud i en msgbox, og se om den nu også indeholder det du tror den gør. Tror fejlen ligger der.
det har ikk helt ville det som jeg ville så jeg har lavet om på det så nu virker det på den måde jeg har lavet det på nu..
men du har nu alligevel hjulpet mig en del så jeg fik noget indblik database programering så hvis du smider et svar så får du squ de her point som tak for hjælpen...
men hvis det er kunne jeg godt tænke mig at vide om der er en simpel formel til at når du vælge noget i en gridbox at den så smider en kolonde ned i et text felt???
ja ja, men findes det der conn modul ikke mere? Det er fordi jeg selv skal til at lave det, og syntes ikke godt om den der Data ting der er indbygget! Man kunne da skrive sql sætninger med conn modulet ikk?
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.