Avatar billede pfp Nybegynder
19. juni 2002 - 16:01 Der er 23 kommentarer og
2 løsninger

Database i VB (begynder)

Hej,

Jeg arbejder normalt med VBscript i forbindelse med ASP. Men nu vil jeg gerne prøve at lege lidt med databaser i Visual Basic så søger derfor lidt begynderhjælp.

Kan jeg bruge følgende til at oprette forbindelse til min database og lave en forespørgsel:

Private Sub Form_Load()
Set Conn = CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & App.Path & "\database.mdb"

SQL = "Select * FROM Kunder"
Set rs = Conn.Execute(SQL)
End Sub

Nu i tænker i nok at det kan jeg da bare teste, men det har jeg også gjort og det giver ingen fejl. Men jeg ved ikke rigtig om jeg er connectet for jeg aner ikke hvordan jeg trækker resultater ud af min database.

Hvordan gør jeg f.eks. hvis jeg gerne vil have feltet "Navn" trukket ud i en tekstboks?

I ASP ville jeg jo blot bruge følgende i værdi-feltet:
<%=rs("Navn")%>

Men det virker jo ligesom ikke rigtig her...

/peter
Avatar billede terry Ekspert
19. juni 2002 - 16:47 #1
debug.print rs("Navn")

will show the contents of the Navn field in the DEBUG window

(CTRL+G)
Avatar billede terry Ekspert
19. juni 2002 - 16:48 #2
If you have a field on a form then

TheFieldName = rs("Navn")
Avatar billede pfp Nybegynder
19. juni 2002 - 17:00 #3
Hi Terry,

Do you prefer me writing english to you as well?

I have got this code:

Private Sub Form_Load()
Set Conn = CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & App.Path & "\database.mdb"

SQL = "Select * FROM Kunder"
Set rs = Conn.Execute(SQL)
End Sub

Private Sub Command1_Click()
Text1.Text = rs("Navn")
End Sub

But when I click the button I get the following error message:
Compile error: Sub or function not defined.

What does that mean?

Pleaser bear with me....I'm completely new to the Visual Basic universe.

/peter
Avatar billede terry Ekspert
19. juni 2002 - 17:16 #4
No you can write in Danish, I understand it almost 100% :o)
Here is a good link to ADO examples in Visual Basic

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmscadocodeexamplesinvisualbasic.asp

where are you getting an error?
In VB you need to DIM your variables (or it is best to)

for example:
Dim rs as Recordset
Avatar billede martin_moth Mester
19. juni 2002 - 18:04 #5
Når VB kommer med fejl som du skriver, vil den markere den linie hvor det går galt... Det kan jo fortælle en hel masse godt :o)

Desuden kan du sætte breakpoints ved at klikke i venstre margin i dit kodevindue (og fjerne dem på samme måde)

Desuden er

  MsgBox MinVariabel

altid en nem måde at få vist indholdet af MinVariabel på vigtige steder i din kode.

Bare et par hints...



PS: En lidt anderledes måde at lave database på i VB, hvis du kan bruge det:

Dim rec As Recordset
Dim DB as Database 
Dim i as integer

Set DB = Workspaces(0).OpenDatabase("C:\database.mdb")
Set rec = DB.OpenRecordset _
    ("SELECT Række1, Række2, Række3 FROM Tabel ORDER BY Række1", dbOpenSnapshot)
'Række1,. og Tabel er navne angivet i din database

i=0
Do While Not rec.EOF
  i=i+1
  Msgbox "Post " & i & "i række 1 er : & rec!Række1
  rec.MoveNext
Loop
     
rec.Close
set DB = nothing
Avatar billede pfp Nybegynder
19. juni 2002 - 18:22 #6
Hej Martin,

Jeg har prøvet følgende:

Private Sub Form_Load()
Dim rec As Recordset
Dim DB As Database
Dim i As Integer

Set DB = Workspaces(0).OpenDatabase("C:\Kartotek\database.mdb")
Set rec = DB.OpenRecordset _
    ("SELECT * FROM Kunder", dbOpenSnapshot)

End Sub

Men når jeg så loader den form så siger den User-defined type not defined? Og så går den ud til koden igen og markerer
Avatar billede pfp Nybegynder
19. juni 2002 - 18:23 #7
Men når jeg så loader den form så siger den User-defined type not defined? Og så går den ud til koden igen og markerer Private Sub Form_Load() med gult og rec As Recordset med blåt??
Avatar billede terry Ekspert
19. juni 2002 - 19:23 #8
make sure that you have a reference to ADO. You can do this in the project + references menu!
Avatar billede pfp Nybegynder
19. juni 2002 - 19:36 #9
Det kunne det måske godt tyde på at jeg ikke har. Hvis den står listet som ADO, så tror jeg ikke jeg har. Se evt. her: http://votus.dk/ref.gif

Hvordan kan det være at jeg ikke har det og hvad kan jeg gøre?
Avatar billede terry Ekspert
19. juni 2002 - 19:47 #10
You will mor ethan likley be able to find it further down the list under Microsoft ADO 2.x or soemthing like that.
Avatar billede pfp Nybegynder
19. juni 2002 - 19:51 #11
Kan det være den der hedder Microsoft ADO Ext. 2.7 for DDL and Security?
Avatar billede pfp Nybegynder
19. juni 2002 - 19:58 #12
Nu har jeg krydset den af og jeg kan se at der i Add-ins menuen nu også er kommet et punkt der hedder Data Form Wizard. Kan jeg bruge det til at oprette forbindelse til min db?
Avatar billede terry Ekspert
19. juni 2002 - 19:59 #13
No! Something like Microsoft Activex Data Objects
Avatar billede terry Ekspert
19. juni 2002 - 20:05 #14
You can use the data form wizard to create a link to a database. You could actually try this as I think it willmake a reference for you, also you will see some code examples you can maybe get some help from!
Avatar billede pfp Nybegynder
19. juni 2002 - 20:07 #15
Ok tak for nu. Jeg ville lige prøve at lege lidt med det så kan det godt være at jeg vender tilbage senere :-)
Avatar billede martin_moth Mester
19. juni 2002 - 21:40 #16
Project -> References

Find og tilføj Microsoft DAO 3.6 object library - så virker det. (Nummeret kan godt være lidt lavere f.eks. 3.51, det gør ikke noget.)
Avatar billede pfp Nybegynder
19. juni 2002 - 22:42 #17
Hej Martin. Tak det vil jeg forsøge. Ikke fordi det har nogen speciel betydning for mig nu, men er det muligt at have en database liggende på en server på internettet og så koble op imod den fra sit lokale vb-program.

/peter
Avatar billede terry Ekspert
20. juni 2002 - 08:42 #18
martin if you look at the question you will see "ADODB"!
Microsoft DAO 3.6 object library  is for DAO!
pfp>No to your last question! (Access)
Avatar billede martin_moth Mester
20. juni 2002 - 08:46 #19
terry > OK. Men jeg startede også med at skrive, at det var en _alternativ_ løsning at connecte til en Access databasemåde på, og den virker ;o)
Avatar billede terry Ekspert
20. juni 2002 - 09:00 #20
Yes yor right Martin it is an alternative. I use DAO almost all the time but pfp has alreasy used ADO so I would not suggest he learn another "language" but yes its there to be used :o)
Avatar billede pfp Nybegynder
20. juni 2002 - 19:10 #21
Tak for Jeres indlæg begge to - der er point til Jer begge.

Jeg har lige et lille ekstra spørgsmål. Jeg har fundet ud af at jeg kan indsætte data i min database ved at bruge følgende kode:

strSQL = "Insert into personer ("

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

strSQL = strSQL & "values( "

strSQL = strSQL & "'Fætter', "
strSQL = strSQL & "'Guf', "
strSQL = strSQL & "'99887766', "
strSQL = strSQL & "'20-04-1964')"

Conn.Execute(strSQL)

Men kan en af jer ikke vise mig, hvordan jeg gør hvis jeg bruge nogle værdier fra textfelter i stedet for data som er defineret i koden på forhånd.

På forhånd tak,

/peter
Avatar billede terry Ekspert
20. juni 2002 - 19:36 #22
... Values( '" & SomeTextFiled & "', '" & AnotherTextField & "', " & NumberField & ", " ......

Note: Text fields (in the database) MUST NOT be in '' text fields MUST
Avatar billede terry Ekspert
21. juni 2002 - 19:38 #23
pfp>hows it going here?
Avatar billede pfp Nybegynder
21. juni 2002 - 20:02 #24
Hej igen,

Undskyld jeg havde helt glemt det hele. Men nå nu virker det fint også med det sidste med value.

Tak for hjælpen.

/peter
Avatar billede terry Ekspert
21. juni 2002 - 20:12 #25
tahnks Peter and a good weekend :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