Avatar billede mini-me Nybegynder
03. december 2005 - 14:19 Der er 34 kommentarer og
1 løsning

Gem data i database

Hej,

Jeg sidder og roder med at lave et kørselsregnskabs program til mig selv, jeg syntes det ville være lidt sjovere end at lave et xls. ark.

Jeg er rimelig kendt med hvordan man gemmer data i ASP via ADO, men nu er turen så kommet til vb 6.0.

Jeg ønsker at gemme 4 tekstfelter i min database.

Jeg har fundet ud af at hive data ud fra min database og vise dem i en listboks med flg. kode.

Private Sub Form_Load()
  Set Conn = CreateObject("ADODB.Connection")
  Set Rs = CreateObject("ADODB.RecordSet")

  Call DB_List
End Sub

Private Sub Form_Unload(Cancel As Integer)
  Set Rs = Nothing
  Set Conn = Nothing
End Sub

Public Function DB_List()
    Dim strDSN As String
    Dim strSQL As String
    Dim DataPath As String
    Dim DataPass As String
   
      DataPath = "C:\korsel.mdb" '<- Database file
      DataPass = "********"        '<- Password
   
      strSQL = "SELECT * FROM KorselTabel"
      strDSN = "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & DataPath & ";PWD=" & DataPass & ";"
   
      With Rs
        .open strSQL, strDSN, 3
   
          If Not (.BOF Or .EOF) Then
   
            List1.Clear
            Do While Not .EOF
              'Tilføjer i en ListBox (List1)
              List1.AddItem CStr(Rs("ID") & " - " & Rs("Fra"))
              .MoveNext
            Loop
   
          End If
   
        .Close
      End With
End Function

------------------------------

Men hvis jeg nu ønsker at gemme data fra mine tekstbokse når jeg klikker på min "command" knap hvad skal jeg så gøre?
Avatar billede mini-me Nybegynder
03. december 2005 - 16:54 #1
Er der ingen der kan hjælpe med dette??
Avatar billede joern Nybegynder
03. december 2005 - 17:22 #2
Hej.

Jeg bruger ascii-filer som databaser og kender ikke den syntaks, du anvender.  Men har du prøvet at søge på Eksperten?  Der har gennem tiden været mange, mange spørgsmål om det emne.

http://exp.dk/spm/Programmering/Visual-Basic/?sort=&order=DESC&status_3=on&spm_creator=&spm_part=&spm_answer=&find=database&engine=exp

/jørn
Avatar billede mvhansen Nybegynder
03. december 2005 - 21:05 #3
Hej jeg er nybegynder
men jeg tror det er dette her du søger

Dim MyDb As Database
Dim SQLQuery, FilName As String


Private Sub Insert_Click()
    FileName = "T:\PRIVAT\Michael's vb6\Adresse_database\db\PersonTabel.mdb"
    Set MyDb = DBEngine.Workspaces(0).OpenDatabase(FileName)
    SQLQuery = "INSERT INTO PersonTabel VALUES ("
    SQLQuery = SQLQuery & txtKundenummer.Text
    SQLQuery = SQLQuery & ",'" & txtKundenavn.Text & "'"
    SQLQuery = SQLQuery & ",'" & txtAdresse.Text & "'"
    SQLQuery = SQLQuery & "," & txtPostnummer.Text
    SQLQuery = SQLQuery & ",'" & txtBy.Text & "'"
    SQLQuery = SQLQuery & ",'" & txtEmail.Text & "')"
    MyDb.Execute SQLQuery
    MyDb.Close
   
End Sub

mvh
mvhansen
Avatar billede sjh Nybegynder
03. december 2005 - 22:52 #4
' -------------------------- Form1 --------------------------
' Som du ser så er det faktis det samme som ASP.. dog uden
' Server.Create... og Server.MapPath(...)
'
' ASP Mode : http://www.html.dk/tutorials/asp/lektion20.asp
' Her under kan du se hvordan det gøres i Visual Basic..
' -----------------------------------------------------------
Option Explicit

Private Sub Command1_Click()
Dim Rs  As Object
Dim Conn As Object

Dim DSN  As String
Dim strSQL  As String

  ' Databaseforbindelse - husk at angive sti til din database
  Set Conn = CreateObject("ADODB.Connection")
  DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
  DSN = DSN & "DBQ=" & App.Path & "\database.mdb"
  Conn.Open DSN

  ' SQL sætning opbygges
  strSQL = "Insert into personer ("

  strSQL = strSQL & "Fornavn, "
  strSQL = strSQL & "Efternavn, "
  strSQL = strSQL & "Telefon, "
  strSQL = strSQL & "Foedselsdato) "

  strSQL = strSQL & "values( "
 
  strSQL = strSQL & "'" & Text1.Text & "', "
  strSQL = strSQL & "'" & Text2.Text & "', "
  strSQL = strSQL & "'" & Text3.Text & "', "
  strSQL = strSQL & "'" & Text4.Text & "')"

  ' SQL sætning eksekveres
  Conn.Execute (strSQL)

  ' Luk databaseforbindelse
  Conn.Close
  Set Conn = Nothing
End Sub
' -------------------------- Form1 --------------------------
Avatar billede sjh Nybegynder
03. december 2005 - 23:09 #5
' -------------------------- Form1 --------------------------
' Her kan du så se det smarte ved Visual Basic.. Du kan nøjes
' med at åbne din database Én gang når du starter programmet
' og så først lukke den når programmet afsluttes..
' -----------------------------------------------------------
Option Explicit

Private Rs  As Object
Private Conn As Object

Private DSN  As String
Private strSQL As String

Private Sub Form_Load()
  ' Databaseforbindelse - husk at angive sti til din database
  Set Conn = CreateObject("ADODB.Connection")
  DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
  DSN = DSN & "DBQ=" & App.Path & "\database.mdb"
End Sub

Private Sub Form_Unload(Cancel As Integer)
  Set Conn = Nothing
End Sub

Private Sub Command1_Click() ' Gemmer i databasen
  Conn.Open DSN

  ' SQL sætning opbygges
  strSQL = "Insert into personer ("

  strSQL = strSQL & "Fornavn, "
  strSQL = strSQL & "Efternavn, "
  strSQL = strSQL & "Telefon, "
  strSQL = strSQL & "Foedselsdato) "

  strSQL = strSQL & "values( "
 
  strSQL = strSQL & "'" & Text1.Text & "', "
  strSQL = strSQL & "'" & Text2.Text & "', "
  strSQL = strSQL & "'" & Text3.Text & "', "
  strSQL = strSQL & "'" & Text4.Text & "')"

  ' SQL sætning eksekveres
  Conn.Execute (strSQL)

  ' Luk databaseforbindelse
  Conn.Close
End Sub

Private Sub Command2_Click() ' Hente data fra database
  ' SQL forespørgsel
  strSQL = "Select * from personer"
  ' Udfør forespørgsel (rs indeholder nu resultatet)
  Set Rs = Conn.Execute(strSQL)

  ' Gennemløb Recordset (rs) med en løkke
  Do

    ' Udskriv værdien af kolonnen Fornavn
    List1.AddItem Rs("Fornavn")

    ' Gå til næste Record i rs
    Rs.MoveNext

  ' Fortsæt indtil rs er gennemløbet (EOF = End Of File)
  Loop While Not Rs.EOF

  ' Luk databaseforbindelse
  Conn.Close
  Set Rs = Nothing
End Sub
' -------------------------- Form1 --------------------------
Avatar billede mvhansen Nybegynder
03. december 2005 - 23:13 #6
Hej sjh

Jeg har prøvet koderne foroven og kan ikke få dem til at virke

jeg har lavet en Form og sat en listebox på

på formen har jeg sat koderne på

Private Sub Form2_Load()
  Set Conn = CreateObject("ADODB.Connection")
  Set Rs = CreateObject("ADODB.RecordSet")

  Call DB_List
End Sub
Public Function DB_List()
    Dim strDSN As String
    Dim strSQL As String
    Dim DataPath As String
    Dim DataPass As String
   
      DataPath = "T:\PRIVAT\Kopi af Michael's vb6\Adresse_database\db\PersonTabel.mdb" '<- Database file
      DataPass = ""  '<- Password
   
      strSQL = "SELECT * FROM PersonTabel"
      strDSN = "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & DataPath & ";PWD=" & DataPass & ";"
   
      With Rs
        .open strSQL, strDSN, 3
   
          If Not (.BOF Or .EOF) Then
   
            List1.Clear
            Do While Not .EOF
              'Tilføjer i en ListBox (List1)
              List1.AddItem CStr(Rs("ID") & " - " & Rs("Fra"))
              .MoveNext
            Loop
   
          End If
   
        .Close
      End With
End Function

Private Sub Form2_Unload(Cancel As Integer)
  Set Rs = Nothing
  Set Conn = Nothing
End Sub

hvad gør jeg fejl

mvh
mvhansen
Avatar billede sjh Nybegynder
03. december 2005 - 23:34 #7
Ja.. hvad kommer der af fejl..

ellers prøv den her:
Public Function DB_List()
Dim Rs  As Object
Dim Conn As Object

Dim DSN  As String
Dim strSQL  As String

  Set Conn = CreateObject("ADODB.Connection")
  DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
  DSN = DSN & "DBQ=" & "T:\PRIVAT\Kopi af Michael's vb6\Adresse_database\db\PersonTabel.mdb"
  Conn.Open DSN

  strSQL = "Select * from personer"
  Set Rs = Conn.Execute(strSQL)

  Do
    List1.AddItem Rs("Fornavn")
    Rs.MoveNext
  Loop While Not Rs.EOF

  Conn.Close
  Set Rs = Nothing
  Set Conn = Nothing

End Function
Avatar billede sjh Nybegynder
03. december 2005 - 23:35 #8
du skal lige rette:
strSQL = "Select * from personer"

til:
strSQL = "SELECT * FROM PersonTabel"
Avatar billede sjh Nybegynder
03. december 2005 - 23:35 #9
og Rs("Fornavn") til -> Rs("Fra")
Avatar billede mvhansen Nybegynder
03. december 2005 - 23:59 #10
Hej jeg har prøvet

Public Function DB_List()
Dim Rs  As Object
Dim Conn As Object

Dim DSN  As String
Dim strSQL  As String

  Set Conn = CreateObject("ADODB.Connection")
  DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
  DSN = DSN & "DBQ=" & "T:\PRIVAT\Kopi af Michael's vb6\Adresse_database\db\PersonTabel.mdb"
  Conn.Open DSN

strSQL = "SELECT * FROM PersonTabel"
  Set Rs = Conn.Execute(strSQL)

  Do
    List1.AddItem Rs("Fra")
    Rs.MoveNext
  Loop While Not Rs.EOF

  Conn.Close
  Set Rs = Nothing
  Set Conn = Nothing

End Function

der kommer ingen data fra databasen

jeg har en form1 hvor der er forskellig txtbokser
hvor jeg kan indtaste forskellig ting
så har jeg en Command1 til at gemme i databasen det virker også
så har jeg en Command2 hvor jeg henter form2 med listeboks på på form2 har jeg sat din kode på men der kommer ikke noget og heller ikke nogle fejl

mvh
mvhansen
Avatar billede sjh Nybegynder
04. december 2005 - 02:08 #11
1) Er du sikker på at din database ligger her : T:\PRIVAT\Kopi af Michael's vb6\Adresse_database\db\PersonTabel.mdb ??
2) Er du sikker på at din sqlstring svare til det som er i databasen ??
3) Og du er helt sikker på at der er data i din database ?? (Kan se den ligger under noge "Kopi" af Michael's vb6)
Avatar billede mini-me Nybegynder
04. december 2005 - 02:37 #12
TAkker fik det til at virke men kigger lige på jeres svar i morgen :)

roger over and out!
Avatar billede mvhansen Nybegynder
04. december 2005 - 09:25 #13
Hej sjh

Ja der er en database i  T:\PRIVAT\Kopi af Michael's vb6\Adresse_database\db\PersonTabel.mdb

men jeg er ikke sikker på at min sqlstring svare til det som er i databasen

i min database PersonTabel.mdb er der feltnavne.

txtKundenummer
txtKundenavn
txtAdresse
txtPostnummer
txtBy
txtEmail

der er skrevet en adresse ind i databaseb

mvh
mvhansen
Avatar billede sjh Nybegynder
04. december 2005 - 09:31 #14
så er det her :
List1.AddItem Rs("txtKundenavn") ' osv.. IKKE -> Rs("Fra")
Avatar billede mvhansen Nybegynder
04. december 2005 - 09:49 #15
Hej sjh

ja så lister den txtKundenavn

List1.AddItem Rs("txtKundenavn") ' osv.. IKKE -> Rs("Fra")

hvordan får jeg de andre med

mvh
nvhansen
Avatar billede sjh Nybegynder
04. december 2005 - 09:50 #16
List1.AddItem Rs("txtKundenummer")
List1.AddItem Rs("txtKundenavn")
List1.AddItem Rs("txtAdresse")
osv..
Avatar billede mvhansen Nybegynder
04. december 2005 - 10:16 #17
Hej sjh
ja nu virker det
Hvis jeg oprette et spørsmål så du kan få nogle point
gider du så hjælpe mig med at lave 3 fungsioner mere

kan man dele op for vær
txtKundenummer
txtKundenavn
txtAdresse
txtPostnummer
txtBy
txtEmail
i listeboks

og så vil jeg godt have så man kan søge efter en bestemt post nr så den lister alle
de post nr der har den jeg taster ind

også så man kan slette i databasen

det var meget

håber du gider

mvh
mvhansen
Avatar billede sjh Nybegynder
04. december 2005 - 10:30 #18
' Går ud fra at der også er et ID i din tabel..
  List1.AddItem Rs("ID") & " " & _
                Rs("txtKundenummer") & " " & _
                Rs("txtKundenavn") & " " & _
                Rs("txtAdresse") & " " & _
                Rs("txtPostnummer") & " " & _
                Rs("txtBy") & " " & _
                Rs("txtEmail")

Dim intID As Integer
Dim intPostnummer As Integer

  ' Søg efter postnummer 2000
  intPostnummer = 200
  strSQL = "SELECT * FROM PersonTabel WHERE txtPostnummer = " & intPostnummer & ";"

  ' Sletter ID 25
  intID = 25
  strSQL = "DELETE FORM PersonTabel WHERE ID = " & intID & ";"
Avatar billede mvhansen Nybegynder
04. december 2005 - 10:31 #19
nej det er der ikke
Avatar billede sjh Nybegynder
04. december 2005 - 10:31 #20
det kan være at der skal være ' på her:

strSQL = "SELECT * FROM PersonTabel WHERE txtPostnummer = '" & intPostnummer & "';"
Avatar billede mvhansen Nybegynder
04. december 2005 - 10:33 #21
Private Sub Insert_Click()
    FileName = "T:\PRIVAT\Michael_1\Adresse_database\db\PersonTabel.mdb"
    Set MyDb = DBEngine.Workspaces(0).OpenDatabase(FileName)
    SQLQuery = "INSERT INTO PersonTabel VALUES ("
    SQLQuery = SQLQuery & txtKundenummer.Text
    SQLQuery = SQLQuery & ",'" & txtKundenavn.Text & "'"
    SQLQuery = SQLQuery & ",'" & txtAdresse.Text & "'"
    SQLQuery = SQLQuery & "," & txtPostnummer.Text
    SQLQuery = SQLQuery & ",'" & txtBy.Text & "'"
    SQLQuery = SQLQuery & ",'" & txtEmail.Text & "')"
    MyDb.Execute SQLQuery
    MyDb.Close
   
End Sub
Avatar billede sjh Nybegynder
04. december 2005 - 10:35 #22
Så må du ha sådan et på.. ellers kan du resiker at du sletter flere persioner end der var meningen..
Avatar billede sjh Nybegynder
04. december 2005 - 10:39 #23
Du skriver "Jeg er rimelig kendt med hvordan man gemmer data i ASP via ADO" ?? så ved du vel også hvordan man læser, skriver, sletter og updater..
Avatar billede mvhansen Nybegynder
04. december 2005 - 10:46 #24
det er ikke mig jeg heder mvhansen

det er ikke mig der har oprettet spørsmåler
det er  mini-me

mvh
mvhansen
Avatar billede sjh Nybegynder
04. december 2005 - 10:49 #25
Ja skulle også lige til at skrive: "hov.. Opretter: mini-me men det ser mere ud til at det er mvhansen jeg hjælper"

men mvhansen du må oprette dit eget spørgsmål og ikke sådan over tage andres :D
Avatar billede mvhansen Nybegynder
04. december 2005 - 10:55 #26
hej sjh

det var også det jeg skrev


-------------------------------------------
Hej sjh
ja nu virker det
Hvis jeg oprette et spørsmål så du kan få nogle point
gider du så hjælpe mig med at lave 3 fungsioner mere

kan man dele op for vær
txtKundenummer
txtKundenavn
txtAdresse
txtPostnummer
txtBy
txtEmail
i listeboks

og så vil jeg godt have så man kan søge efter en bestemt post nr så den lister alle
de post nr der har den jeg taster ind

også så man kan slette i databasen

det var meget

håber du gider

mvh
mvhansen

--------------------------------------------
længer oppe

mvh
mvhansen
Avatar billede mvhansen Nybegynder
04. december 2005 - 10:58 #27
Jeg prøver at finde ud af hvordan jeg vil have det at virke
og prøver om jeg kan lave der, vis ikke oprette jeg et spørgsmål

mvh
mvhansen
Avatar billede sjh Nybegynder
04. december 2005 - 10:58 #28
Hvis du nu ser på mit Svar: 04/12-2005 10:30:32 og Kommentar: 04/12-2005 10:31:52 så har jeg jo lavet det til dig "mvhansen"
Avatar billede mvhansen Nybegynder
04. december 2005 - 11:03 #29
jeg opretter et spørsmål og ligger nogle point hvor mange skal jeg ligge til dig
mvh
mvhansen
Avatar billede sjh Nybegynder
04. december 2005 - 11:05 #30
Nej.. det går nok.. :D
Avatar billede mvhansen Nybegynder
04. december 2005 - 11:06 #31
hej sjh
det er venlig ment da jeg har fået hjælp

mvh
mvhansen
Avatar billede sjh Nybegynder
04. december 2005 - 11:09 #32
Ja ik.. Jeg har point nok til et par år.. men det er du ikke derfor jeg hjælper ;)
Avatar billede mvhansen Nybegynder
04. december 2005 - 11:10 #33
ok tak skal du have

mvh
mvhansen
Avatar billede sjh Nybegynder
04. december 2005 - 11:12 #34
men nu må vi bare håbe at mini-me kan bruge noget af det her :D
Avatar billede mvhansen Nybegynder
04. december 2005 - 11:15 #35
ja
han har da skrevet at han har fået det til at funger

mvh
mvhansen
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