Avatar billede thr Nybegynder
25. februar 2002 - 18:17 Der er 15 kommentarer og
1 løsning

SQL og VB

Hej. Jeg arbejder i øjeblikket med access databaser i VB, og nu vil jeg gerne igang med SQL i VB. Jeg har prøvet lidt, men jeg kan ikke finde ud af hvordan jeg fortæller VB at nu er det et SQL udtryk den skal behandle.

Er der ikke en der kan lave en lille sub som opretter en tabel, og en sub der søger i den tabel
Avatar billede joeblack Nybegynder
25. februar 2002 - 20:48 #1
hvorfor vil du først oprette en tabel. Findes den ikke allerede ?
Avatar billede joeblack Nybegynder
25. februar 2002 - 20:55 #2
For at behandle et SQL udtryk, indsætter du f.eks. flg.:

Dim DB as dao.database
Set DB = CurrentDB
Db.Execute "INSERT INTO tabelnavn (feltnavn1, feltnavn2) values ('værdi1', 'værdi2')"

Hvis det er et tal du vil indsætte, skal du ikke bruge plinger omkring værdien.

OK??
Avatar billede thr Nybegynder
25. februar 2002 - 21:14 #3
Kan man også oprette databasen (.mdb filen)
Avatar billede joeblack Nybegynder
25. februar 2002 - 21:24 #4
Først point for spørgsmål 1. Så kikker vi på at oprette en .mdb.
Avatar billede joeblack Nybegynder
25. februar 2002 - 21:30 #5
I forventning om point, for du løsningen til spg 2:

Dim appAccess As Access.Application

Sub NewAccessDatabase()
    Dim dbs As Object, tdf As Object, fld As Variant
    Dim strDB As String
    Const DB_Text As Long = 10
    Const FldLen As Integer = 40

    ' Initialize string to database path.
    strDB = "C:\My Documents\Newdb.mdb"
    ' Create new instance of Microsoft Access.
    Set appAccess = _
        CreateObject("Access.Application.9")
    ' Open database in Microsoft Access window.
    appAccess.NewCurrentDatabase strDB
    ' Get Database object variable.
    Set dbs = appAccess.CurrentDb
    ' Create new table.
    Set tdf = dbs.CreateTableDef("Contacts")
    ' Create field in new table.
    Set fld = tdf. _
        CreateField("CompanyName", DB_Text, FldLen)
    ' Append Field and TableDef objects.
    tdf.Fields.Append fld
    dbs.TableDefs.Append tdf
    Set appAccess = Nothing
End Sub

Husk at Set DB = XXXXXX til den nyoprettede db.

OK ???
Avatar billede thr Nybegynder
25. februar 2002 - 21:36 #6
Det var lige det jeg søgte, nu kan jeg selv komme i gang med at leje. mange tak
Avatar billede thr Nybegynder
25. februar 2002 - 21:55 #7
Problem!!  Jeg har lavet følgende program.

Option Explicit
Dim appAccess As Access.Application

Private Sub Command1_Click()
    NewAccessDatabase
End Sub

Sub NewAccessDatabase()
    Dim dbs As Object, tdf As Object, fld As Variant
    Dim strDB As String
    Const DB_Text As Long = 10
    Const FldLen As Integer = 40

    strDB = "C:\temp\Newdb.mdb"
    Set appAccess = CreateObject("Access.Application.9")
    appAccess.NewCurrentDatabase strDB
    Set dbs = appAccess.CurrentDb
    Set tdf = dbs.CreateTableDef("Contacts")
    Set fld = tdf.CreateField("CompanyName", DB_Text, FldLen)
    tdf.Fields.Append fld
    dbs.TableDefs.Append tdf
    Set appAccess = Nothing
End Sub

men det giver følgende fejl.
"User-defined type not defined"
Jeg ved ikke hvorfor.
Avatar billede thr Nybegynder
25. februar 2002 - 21:56 #8
Fejlen komme når jeg starter programmet med F5 (Play)
Avatar billede joeblack Nybegynder
25. februar 2002 - 22:05 #9
er det Access 2000 ?
Avatar billede joeblack Nybegynder
25. februar 2002 - 22:07 #10
Prøv lige det her:

Option Explicit

Private Sub Command1_Click()
    NewAccessDatabase
End Sub

Sub NewAccessDatabase()

Dim appAccess As Access.Application

    Dim dbs As Object, tdf As Object, fld As Variant
    Dim strDB As String
    Const DB_Text As Long = 10
    Const FldLen As Integer = 40

    strDB = "C:\temp\Newdb.mdb"
    Set appAccess = CreateObject("Access.Application.9")
    appAccess.NewCurrentDatabase strDB
    Set dbs = appAccess.CurrentDb
    Set tdf = dbs.CreateTableDef("Contacts")
    Set fld = tdf.CreateField("CompanyName", DB_Text, FldLen)
    tdf.Fields.Append fld
    dbs.TableDefs.Append tdf
    Set appAccess = Nothing
End Sub
Avatar billede thr Nybegynder
25. februar 2002 - 22:15 #11
Jeg har kun Access2000 installeret, men jeg bruger Access 7.0 databaser, da det er det eneste jeg kan få vb til at leje med.

Efter du flyttede den erklæring kommer fejlen først ved click på Command1

For mig virker det som om den ikke kender den type variabel, og den er hellerikke på den oversigt VB kommer med.

Kan det være pga. jeg ikke har Access 97 installeret??
Avatar billede joeblack Nybegynder
25. februar 2002 - 22:18 #12
Jeg har koden fra Access 2000 og jeg har ingen problemer. Så måske er det lokalt hos dig den er gal. Sorry...
Avatar billede thr Nybegynder
25. februar 2002 - 22:25 #13
Det er muligt.. :-(

Når du skriver : "Dim appAccess As Acc.." foreslår den så denne variabel type i VB's DropDown menu?
Avatar billede thr Nybegynder
25. februar 2002 - 22:31 #14
Det er ikke kode til en VBA app. vel?? hvis det betyder noget.
Avatar billede jennemaan Nybegynder
26. februar 2002 - 11:07 #15
Hmmm...
Dim appAccess As Access.Application 'Betyder at du har en reference til Access 9.0 Object Model?

Efterfølgende bruger du:
Set appAccess = CreateObject("Access.Application.9") 'Late binding

Måske skulle du skrive:
Set appAccess = New Access.Application 'istedet   

/Jennemaan
Avatar billede thr Nybegynder
26. februar 2002 - 15:18 #16
Problemet med eksemplet er at VB ikke kender det access objekt. ?? kan det skyldet at Access/VB ikke er installeret rigtigt?? - Evt. manglende dll/elementer.??
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