Avatar billede clausnilsson Mester
29. august 2007 - 22:37 Der er 7 kommentarer og
1 løsning

Findes der en enkel metode til at gemme data i en database

Hej,

Jeg vil gerne gemme data i en database (mdb). Findes der en enkel og letforståelig rutine til det, som en amatør måske endda kan forstå? Jeg opretter filen på forhånd og skal bare kunne skrive til den og læse fra den - jeg bruger vb 5.0. Jeg har hørt det skulle være så nemt ;-)
Avatar billede sjh Nybegynder
30. august 2007 - 13:56 #1
Ved ikke hvor meget du kan, men hvis du kan lidt ASP så er du godt på vej..

her er nogle eksempler fra noget asp
http://www.html.dk/tutorials/asp/lektion19.asp

det virker også i vb 5,6 dog unden (Response.Write, Server.MapPath, Server.CreateObject) men det er ikke noget problem.

her er en stump som jeg har lavet ud fra lektion 19:


Private Sub Form_Load()
Dim rs As Object
Dim Conn As Object
Dim DNS As String
Dim strSQL As String

  ' (Server.CreateObject(...) virker ikke i vb 5,6, men brug : CreateObject(...))
  ' Set Conn = Server.CreateObject("ADODB.Connection")

  Set Conn = CreateObject("ADODB.Connection")

  DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
 
  ' (Server.MapPath) virker ikke i vb 5,6
  ' DSN = DSN & "DBQ=" & Server.MapPath("/cgi-bin/database.mdb")
  DSN = DSN & "DBQ=" & "C:\database.mdb"
 
  Conn.Open DSN

  ' 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

    ' (Response.Write) virker ikke i vb 5,6, men brug : Print eller List1.AddItem
    ' Response.Write rs("Fornavn")
    Print 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 Conn = Nothing

End Sub
Avatar billede clausnilsson Mester
30. august 2007 - 14:40 #2
kan slet ingen asp :-( Giver det mening at kopiere din kode ind i min vb5.0 kode, kan det virke?
Avatar billede sjh Nybegynder
30. august 2007 - 14:59 #3
Ja bare du ændre :

"C:\database.mdb"
strSQL = "Select * from personer"
"Print rs("Fornavn")"

Så det passer til din database.. så skulle det virke
Avatar billede fizz Nybegynder
06. september 2007 - 21:22 #4
fået det til at virke??
hvis nej har jeg også et forslag ;)
Avatar billede fizz Nybegynder
06. september 2007 - 22:01 #5
'------ ind i et modul ------------

Private DBFileName As String
Private DBPassWord As String
 
Public Sub StartDB(ByVal Filename As String, Optional ByVal PassWord As String = "")
    DBFileName = Filename
    DBPassWord = PassWord
End Sub
 
Sub SqlExecute(ByVal SqlString As String)
    Dim DBconn As String
    DBconn = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & DBFileName & ";Password=" & DBPassWord

    Dim oConn As ADODB.Connection
    Set oConn = New ADODB.Connection
    oConn.Open DBconn

    oConn.Execute (SqlString)

    oConn.Close
    Set oConn = Nothing
End Sub

Function SqlSelect(ByVal SqlString As String) As String()
    Dim GetData() As String
    Dim DBconn As String
    Dim Records As Long
    DBconn = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & DBFileName & ";Password=" & DBPassWord

    Dim oConn As ADODB.Connection
    Set oConn = New ADODB.Connection
    oConn.Open DBconn
   
    Dim rs As ADODB.Recordset
    Set rs = oConn.Execute(SqlString)
   
    Dim Cols As Integer
    Cols = rs.Fields.Count
   
    Dim RowNr As Long
    RowNr = 0
    While Not rs.EOF
        RowNr = RowNr + 1
        rs.MoveNext
    Wend
   
    Records = RowNr - 1
   
    If RowNr > 0 Then
        ReDim GetData(Records, Cols)
       
        rs.MoveFirst
        RowNr = 0
        For j = 0 To Records
            For i = 0 To Cols - 1
                If IsNull(rs(i).Value) Then
                    GetData(RowNr, i) = " "
                Else
                    GetData(RowNr, i) = rs(i).Value
                End If
            Next i
            RowNr = RowNr + 1
            rs.MoveNext
        Next j
       
        rs.Close
        Set rs = Nothing
       
        oConn.Close
        Set oConn = Nothing
    Else
        ReDim GetData(0, Cols)
        For i = 0 To Cols
            GetData(0, i) = "0"
        Next i
    End If
    SqlSelect = GetData
End Function
Avatar billede fizz Nybegynder
06. september 2007 - 22:02 #6
så kræver det bare at du selv kan SQL kommandoer ;)
Avatar billede fizz Nybegynder
08. september 2007 - 22:38 #7
tak ;o)
Avatar billede fizz Nybegynder
08. september 2007 - 22:39 #8
husk at tilføje references:
microsoft DAO 3.51 object library
microsoft activex data objects 2.0 library
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