Avatar billede choco Nybegynder
04. april 2005 - 10:45 Der 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...
Avatar billede alister_crowley Nybegynder
04. april 2005 - 10:48 #1
kan du SQL ?
Avatar billede choco Nybegynder
04. april 2005 - 10:49 #2
egentlig ikk... men det skal jeg vel bruge for at kunne???

ellers må jeg da se at komme igang med at få et lille indblik i hvordan det virker...

men det havde jeg da håbet jeg kunne under det her spørgsmål...
Avatar billede alister_crowley Nybegynder
04. april 2005 - 10:50 #3
Så kan det anbefales at starte med at læse SQL.
Her er en god tutorial: www.w3schools.com/sql/

Finder lige connection kommandoerne imellemtiden
Avatar billede choco Nybegynder
04. april 2005 - 11:01 #5
jaaa... det ser skam nemt nok ud sådan lige nu da:P

men kunne ikk rigtig finde nogen steder hvor man får forbindelse til acces...
Avatar billede choco Nybegynder
04. april 2005 - 11:17 #6
men jeg er så ikk kommet længer ved at kigge der inde...
Avatar billede martin_moth Mester
04. april 2005 - 11:32 #7
Prøv at søg på eksperten i denne kategori

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...
Avatar billede choco Nybegynder
04. april 2005 - 11:44 #8
jooo tak der er pænt mange eksempler...

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...

jeg har riglig af dem :D
Avatar billede martin_moth Mester
04. april 2005 - 12:16 #9
Når der nu er så mange besvarede sp. så gider jeg ikke rigtig gentage :o)
Find et godt et, copy-paste og du er kørende
Avatar billede choco Nybegynder
04. april 2005 - 12:22 #10
jamen det må jeg jo så prøve... man kan jo ikk rigtig tvinge dig:D

men jeg tænkte på sådan en adodc knap/box eller hvad man lige kalder den...

hvad har jeg gjordt forkert i den siden den ikk vil vise navne???

jeg kan godt bladre i den så der bliver vist hvad der skal i alle de andre boxe men den vil bare ikk vise navn i den adodc box???
Avatar billede martin_moth Mester
04. april 2005 - 12:54 #11
Nu skal du vælge om du vil bruge VB's databasekomponenter, eller bruge SQL og recordsets. Det er to forskellige måder at bruge en database på i VB...
Avatar billede choco Nybegynder
04. april 2005 - 13:04 #12
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...
Avatar billede choco Nybegynder
04. april 2005 - 14:10 #13
nu har jeg squ søgt over alt...

og nu har jeg fundet noget som skulle kunne connect til acces...

og så noget som skulle kunne skrive det til en listbox...

men tror i det virker??? ikk det der liner... jeg er virkelig ikk med....

kan jeg ikk få lidt hjælp eller skal jeg bare selv fortsætte med at prøve mig frem???
Avatar billede martin_moth Mester
04. april 2005 - 14:48 #14
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.

Det er der vist et - skal jeg selv sige det - glimrende eksempel på her:
www.eksperten.dk/spm/219643
Avatar billede martin_moth Mester
04. april 2005 - 14:50 #15
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.
Avatar billede choco Nybegynder
04. april 2005 - 15:10 #16
her er en kode jeg har prøvet at leje lidt med...

Dim Conn As New Connection
    Dim rs As Recordset
    Dim strSQL As String
   
  Function Connection()
      Conn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & App.Path & "\DB.mdb"
  End Function

'** Udskrivning **
    Connection
    strSQL = "SELECT * FROM film navn"
    Set rs = Conn.Execute(strSQL)

  While Not rs.EOF
    lsttabel.AddItem rs("film navn")
  rs.MoveNext (lsttabel)
  Wend

    Conn.Close

og så har jeg en listbox som jeg har kaldt lsttabel...
men den viser ikk noget i den listbox???
Avatar billede martin_moth Mester
04. april 2005 - 16:55 #17
Har du sat reference til Reference: Microsoft ActiveX Data Objects xx Library

Tror ikke du må have mellemrum i dit tabelnavn - så kald det "filmnavn" i stedet for "film navn"

Din kode ser lidt rodet ud, med en function midt i det hele, som ikke returener noget. Drop "Function connection" og "End Function"
Avatar billede choco Nybegynder
04. april 2005 - 17:36 #18
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å???
Avatar billede choco Nybegynder
05. april 2005 - 13:09 #19
hmmm hvad pokker gøre jeg forkert???

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???
Avatar billede martin_moth Mester
05. april 2005 - 13:22 #20
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!

Ellers kan du jo skrive

form1.list1.additem "bla bla"

eller

module1.myvariable = "Hej"
Avatar billede choco Nybegynder
05. april 2005 - 13:57 #21
hvis du bare skal være flabet gider du så ikk bare pis af...

jeg har lavet det her spørgsmål for at få hjælp ikk for at få taget min selvtilid...
Avatar billede martin_moth Mester
05. april 2005 - 15:18 #22
?
Hvor er det lige præcis jeg er "flabet"?
Prøv nu at læs hvad jeg skriver - det er rent faktisk for at hjælpe dig...
Avatar billede choco Nybegynder
05. april 2005 - 16:11 #23
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...
Avatar billede martin_moth Mester
05. april 2005 - 16:43 #24
Ja, det skrev jeg.
Det troede jeg ikke var flabet...

:o)

Det næste var for at vise princippet - at du angiver navnet på formen/modulet foran variabelnavnet/kontrolnavnet.

Men du kan jo spørge din far hvordan man gør, nu det er hans ide. Det virkede åbenbart før du fulgte hans råd.

Desuden er det meget svært at give hjælp, når du ikke har vist noget af din kode, eller fortæller hvad der går galt, og hvad fejlmeddelsen er...
Avatar billede choco Nybegynder
06. april 2005 - 11:46 #25
nu har jeg fundet ud af det.

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å???
Avatar billede martin_moth Mester
06. april 2005 - 13:01 #26
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
Avatar billede choco Nybegynder
06. april 2005 - 14:18 #27
vi har vist hver vores mening om godt forklaret... for jeg syntes det ikk...

jeg har været der inde og kigge der er derfra jeg ved der skal stå delete men det virker ikk helt som jeg gerne vil have den til...
Avatar billede choco Nybegynder
06. april 2005 - 14:54 #28
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)
Avatar billede martin_moth Mester
06. april 2005 - 17:33 #29
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.
Avatar billede choco Nybegynder
08. april 2005 - 15:04 #30
nå martin moth...

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???
Avatar billede martin_moth Mester
09. april 2005 - 14:05 #31
svar
Avatar billede unva Nybegynder
18. januar 2007 - 21:24 #32
Hvad er conn for et modul ?
Avatar billede mcgoat Nybegynder
18. januar 2007 - 21:26 #33
2 år for sent? *g*
Avatar billede unva Nybegynder
18. januar 2007 - 21:42 #34
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?
Avatar billede martin_moth Mester
19. januar 2007 - 09:30 #35
prøv med en ny tråd :o)
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