Avatar billede terra Nybegynder
13. januar 2003 - 22:23 Der er 21 kommentarer og
1 løsning

Hente fra *.mdb via ComboBox

Hei,
Er det noen som kan hjelpe?

Jeg har en database med ProgPath & "\usr.mdb"
Ska overføre fra dbFields -> til txtBoxer

Hente med ComboBox fra FeltUsername
Fra  -> Nickname til txtNickname for FeltUsername
Fra -> Status til txtStatus for FeltUsername

'Uten Data Controler
(?)Terra
Avatar billede knico Nybegynder
13. januar 2003 - 22:43 #1
Jeg er ikke helt sikker på hvad du mener, men her er lidt om hvordan du kan lave en connection til din DB:

Public Sub Initialiser()
    Set dbWorkspace = DBEngine.Workspaces(0)
    Set dbDatabase = dbWorkspace.OpenDatabase(App.Path & "\usr.mdb")

End Sub

Husk at projektet skal have en reference til 'Microsoft DAO Library'
Avatar billede terra Nybegynder
13. januar 2003 - 23:20 #2
Bruker:

Private Sub Form_Load()
Dim ws As Workspace
Dim db As Database
Dim rs As Recordset

Set ws = Workspaces(0)
Set db = ws.OpenDatabase(App.Path & "\usr.mdb")
Set rs = db.OpenRecordset("SELECT * FROM tblClient")
If Not rs.EOF Then
    rs.MoveFirst
    Do While Not rs.EOF
        Combo1.AddItem rs!CompanyName
        rs.MoveNext
    Loop
End If

End Sub

'Men..., den gir bare alle CompanyName's
Vil knytte den sammen med txtBoxer sådan at Boxer oppdateres når jeg velger fra ComboBoxen

Tak:)...
Avatar billede terra Nybegynder
13. januar 2003 - 23:22 #3
FeltUsername = CompanyName
Avatar billede knico Nybegynder
14. januar 2003 - 19:24 #4
OK...der skød jeg vist noget under målet. Hvis jeg har forstået dig ret vil du have oplysninger fra tilhørende felter i tabellen i noge tekstboxe. Jeg har omskrevet din kode en anelse:

Private ws As Workspace
Private db As Database
Private rs As Recordset

Private Sub Combo1_Click()
Set rs = db.OpenRecordset("SELECT * FROM tblClient WHERE companyname='" & Combo1.Text & "'")
    Text1.Text = rs!employees
    Text2.Text = rs!address
    Text3.Text = rs!Type

End Sub

Private Sub Form_Load()

Set ws = Workspaces(0)
Set db = ws.OpenDatabase("f:\usr.mdb")
Set rs = db.OpenRecordset("SELECT * FROM tblClient")
If Not rs.EOF Then
    rs.MoveFirst
    Do While Not rs.EOF
        Combo1.AddItem rs!CompanyName
        rs.MoveNext
    Loop
End If

End Sub
Avatar billede terra Nybegynder
14. januar 2003 - 20:40 #5
Mange Tak for hjelpen -> Knico.
Det virker nu:)

Skal vi gjøre et 'Dael' før jeg deler ud points?
Jeg har et par spørgsmål til først når vi er inne på samme bølgelengden.
Du kan få 20 points ekstra for hver svar.
Andre som kan hjelpe med er velkommen :)

Vi bygger på svar fra Knico 14/01-2003 19:24:29

---
Jeg skal lave tre knapper sådan:

Private Sub Command1_Click()
'Oppdaterer endringer i:
Text1.Text = rs!employees
    Text2.Text = rs!address
    Text3.Text = rs!Type
End Sub

Private Sub Command2_Click()
Sletter:
rs = db.OpenRecordset("SELECT * FROM tblClient WHERE companyname='" & Combo1.Text & "'")

End Sub

Private Sub Command3_Click()
Filtrere:
'Vise bare CompanyName's i:
Combo1.AddItem rs!CompanyName
Med
Text3.Text = rs!Type = 2 '/bruger tal fra 1 til 3 i felten

End Sub

(?)Terra
Avatar billede terra Nybegynder
14. januar 2003 - 20:42 #6
Setter opp points fra 30 To 90
Avatar billede knico Nybegynder
14. januar 2003 - 21:16 #7
Her er Command1 og 2 som jeg har forstået dem:

Private Sub Command1_Click()
db.Execute ("UPDATE tblClient SET employees=" & Val(Text1.Text) _
            & ", address='" & Text2.Text & "', type=" & Val(Text3.Text) _
            & " where companyname='" & Combo1.Text & "'")
End Sub

Private Sub Command2_Click()
db.Execute ("DELETE FROM tblClient where companyname='" & Combo1.Text & "'")

Combo1.Clear
Text1 = ""
Text2 = ""
Text3 = ""
Set rs = db.OpenRecordset("SELECT * FROM tblClient")
If Not rs.EOF Then
    rs.MoveFirst
    Do While Not rs.EOF
        Combo1.AddItem rs!CompanyName
        rs.MoveNext
    Loop
End If
End Sub

Command3 er jeg ikke helt sikker på hvad du mener med.
Avatar billede zembla Nybegynder
15. januar 2003 - 13:57 #8
Command3 er jeg også lidt sikker på. Lyder til at du vil begrænse / filtrere ud for en type. Fx

sub filtrer(type)
  if not isnumeric(type) then exit sub
    Set rs = db.OpenRecordset("SELECT * FROM tblClient where type=" & type)
    While Not rs.EOF
      Combo1.AddItem rs!CompanyName
      'Hvis du fx har et autonummer i din tabel, kan du med
      'fordel gemme dette i comboboxens itemdata. Herved optimerer du
      'din applikation, hvis du altså anvender dette id i senere selects.
      Combo1.Itemdata(Combo1.Newindex) = rs!id
      rs.MoveNext
  Wend
end sub
Avatar billede terra Nybegynder
15. januar 2003 - 18:01 #9
knico -> Mange tak.
zembla ->Tak for det, du er narme +/-,. Jeg skal teste det nu.

k & z -> Jeg skal prøve at smin det sammen og se hva det blir til.
Jeg bruger ikke autonummer men nummer fra 1 til 3 i rs!Type som jeg gemmer. Felt rs!Type settes ind avhengig av brugertype: 1 eller 2 eller 3. I Comboboxen skal jeg ha fx alle med nummer 2.
Avatar billede terra Nybegynder
16. januar 2003 - 19:34 #10
knico -> Command3 ble forkert
Med andre ord se: '''kommentar:

Private Sub Form_Load()

Set ws = Workspaces(0)
Set db = ws.OpenDatabase("f:\usr.mdb")
Set rs = db.OpenRecordset("SELECT * FROM tblClient")
''' jeg vil ha alle rs!CompanyName med Type=2 fra tblClient'''
If Not rs.EOF Then
    rs.MoveFirst
    Do While Not rs.EOF
        Combo1.AddItem rs!CompanyName
        rs.MoveNext
    Loop
End If

End Sub
Avatar billede terra Nybegynder
16. januar 2003 - 19:44 #11
knico ->
Any ideas?
Avatar billede knico Nybegynder
16. januar 2003 - 20:52 #12
Måske sådan:

Private Sub Command3_Click()

    Set rs = db.OpenRecordset("SELECT * FROM tblClient WHERE type=" & Val(Text3.Text))
    If Not rs.EOF Then
    Combo1.Clear
    Text1 = ""
    Text2 = ""
    Text3 = ""
    rs.MoveFirst
    Do While Not rs.EOF
        Combo1.AddItem rs!CompanyName
        rs.MoveNext
    Loop
    End If
End Sub
Avatar billede terra Nybegynder
17. januar 2003 - 18:30 #13
knico ->
Run-time error '3464':
Data type mismatch in criteria expression.
(?)...
Avatar billede knico Nybegynder
17. januar 2003 - 19:03 #14
Er type i din database ikke et numerisk felt? hvis ikke skal du blot have apostroffer omkring:

Set rs = db.OpenRecordset("SELECT * FROM tblClient WHERE type='" & Val(Text3.Text) & "'")
Avatar billede terra Nybegynder
17. januar 2003 - 19:37 #15
Mange tak for hjelpen -> knico
Du er min store helt, du save my life, du ...
Ha en fin kveld
Terra :)
Avatar billede knico Nybegynder
17. januar 2003 - 20:03 #16
Selv tak og god aften til dig også.
Avatar billede terra Nybegynder
21. januar 2003 - 01:43 #17
knico -> Any ideas? //-->
http://www.eksperten.dk/spm/307043

(?) Terra
Avatar billede kryster Nybegynder
07. juli 2003 - 11:41 #18
hej, ved i om funktionen med Combo1.Itemdata(Combo1.Newindex) = rs!id er fjernet fra Office XP, hvis jeg insætter den linie får jeg fejl.
  Set rs = Db.Execute("SELECT * FROM owners")
  If Not rs.BOF Then
    Do Until rs.EOF
      cboOwner.AddItem rs("name")
      cboOwner.i.itemdata(cboOwner.NewIndex) = rs("id")
      rs.MoveNext
    Loop
  End If

giver fejl når jeg prøver at Run i VB.
Compile error:
Method or data member not found
Avatar billede zembla Nybegynder
07. juli 2003 - 12:20 #19
Nej, ItemData er ikke fjernet ... derimod er der sneget en fejl ind i dit program:

Erstat linjen:
cboOwner.i.itemdata(cboOwner.NewIndex) = rs("id")
med
cboOwner.itemdata(cboOwner.NewIndex) = rs("id")

Nu skulle det fungere.
Avatar billede kryster Nybegynder
07. juli 2003 - 12:23 #20
Jeg det opdagede jeg, men det er ikke den der gør det.
Fejlen er der endnu.
Har prøvet at oprette et nyt userform med kun en listbox og kopieret en eksempel fra microsoft ind og får samme fejl.
Avatar billede zembla Nybegynder
07. juli 2003 - 12:28 #21
Lyder mystisk, hvis det er standard-comboboxen du anvender ...

Når indtaster 'punktum' efter 'cboOwner' kommer 'ItemData' så ikke med på listen?
Avatar billede kryster Nybegynder
07. juli 2003 - 12:33 #22
Nej og heller ikke NewIndex.
Det er fra VB editoren i Excel jeg prøver at lave det, Microsoft Visual Basic 6.3
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