Avatar billede midcom Nybegynder
28. juni 2002 - 14:26 Der er 6 kommentarer og
1 løsning

Forspørgelse

Hej Freaks.
Jeg har lavet en form med nogle txtboks, hvor jeg gerne vil have info fra x.antal poster hentet op i txtboksene men posterne ligger i to/tre forskellige tabeller
Hvor der så er relationer imellem.
Det skal så være sådan at nå jeg vælger næste post skal alle txtbokse opdateres efter relationerene.
Avatar billede itbjarne Nybegynder
28. juni 2002 - 18:17 #1
Hej.
du skal anvende objektet ADODB (mener jeg det hedder). Med dette object kan du lave et recordset som du så "binder" til de forskellige textboxes. Når du navigerer mellem posterne vil det underliggende recordset sørge for at de rigtige poster vises i textboxerne.
Dette er næsten det tætteste jeg kan beskrive hvilken metode du kan anvende uden præcist at vide hvad du spørger om. Giv nogle flere detaljer om hvad du er i tvivl om: Den SQL du skal anvende - så bliver du nødt til at skrive hvilke tabeller og felter i tabellerne du har relationer mellem, hvordan du anvender et recordset og hvordan du binder textboxe til dem ?
Avatar billede midcom Nybegynder
28. juni 2002 - 19:07 #2
Hej itbjarne.
Ja jeg ved godt at jeg skal bruge ADO.Men nå jeg navigerer mellem posterne er det kun de txtbokse til den tabel jeg naviger imellem der ændre sig.hvad så med de txtboks der referer til en anden tabel..
Avatar billede midcom Nybegynder
28. juni 2002 - 21:56 #3
Har selv fundet ud af det.
Avatar billede itbjarne Nybegynder
29. juni 2002 - 11:09 #4
Interessant. Hvad var din egen løsning ?
Avatar billede midcom Nybegynder
29. juni 2002 - 12:08 #5
Dim ws As Workspace
Dim db As Database
Dim rs As Recordset
Dim rs1 As Recordset
Dim Mnr As Double
********************************
Private Sub cmdHent_Click()
Mnr = InputBox("Nr ", "Hent Nr")
rs.MoveFirst
Do While rs.EOF = False
    If rs!ProductionNumber = Mnr Then
    GoTo Ok
    End If
rs.MoveNext
Loop
MsgBox ("Nr findes ikke i Databasen "), vbCritical, "FEJL"
Exit Sub
Ok:
ComboProd.Text = Mnr
ComboProd_Click
End Sub
***********************************
Private Sub ComboProd_Click()
rs.MoveFirst
Do While rs.EOF = False
    If rs!ProductionNumber = ComboProd.Text Then
            txtParkID = rs!ParkId
            If IsNull(rs!GarantiProduktion) = True Then
                Text2.Text = "0"
            Else
            Text2.Text = Format(rs!GarantiProduktion, "###,##0")
            End If
            If rs!Rapport = True Then
                Chkrap.Value = 1
                Else
                Chkrap = 0
            End If
    End If
rs.MoveNext
Loop
rs1.MoveFirst
Do While rs1.EOF = False
            If rs1!ParkId = txtParkID.Text Then
                TxtParkName.Text = rs1!ParkName
                If IsNull(rs1!Address) = True Then
                    TxtAddress.Text = ""
                    Else
                    TxtAddress.Text = rs1!Address
                End If
                If IsNull(rs1!ZipCode) = True Then
                    TxtZipCode.Text = ""
                    Else
                    TxtZipCode.Text = rs1!ZipCode
                End If
                If IsNull(rs1!Town) = True Then
                    TxtTown.Text = ""
                    Else
                    TxtTown.Text = rs1!Town
                End If
                If IsNull(rs1!Country) = True Then
                    TxtCountry.Text = ""
                    Else
                    TxtCountry.Text = rs1!Country
                End If
                If rs1!AutoCall = True Then
                    ChkAutoCall.Value = 1
                Else
                    ChkAutoCall = 0
                End If
            End If
rs1.MoveNext
Loop
End Sub
*********************************
Private Sub Form_Load()
Set ws = Workspaces(0)
Set db = ws.OpenDatabase(App.Path & "\ClientDB_Overv_Aktuel.mdb")
Set rs = db.OpenRecordset("SELECT * From tblTurbDef Where (((tblTurbDef.ProductionNumber) > 1000))ORDER BY tblTurbDef.ProductionNumber")
Set rs1 = db.OpenRecordset("SELECT * From tblParkDef")
If Not rs.EOF Then
    rs.MoveFirst
    Do While Not rs.EOF
        If rs!ProductionNumber > 1000 Then
            ComboProd.AddItem rs!ProductionNumber
        End If
            rs.MoveNext
    Loop
End If
End Sub
Avatar billede midcom Nybegynder
29. juni 2002 - 12:10 #6
Hej Itbjarne
Her er min løsning.
Hvis du har en anden metode, er du velkommen med svar
Avatar billede itbjarne Nybegynder
30. juni 2002 - 19:06 #7
Det har jeg:
1. Lav et ADODC object på din form - giv den navnet dbHosts.
2. Lav en text box også - giv den navnet txtHostName
3. Kopier nedenstående code ind i form open event og start programmet.
Feltet txtHostName vil nu være BUNDET til det underliggende recordset. Som du har lavet det er det ikke bundet. Når det er bundet, kan du bruge ADODC til at navigere mellem forskellige records, og txtHostName vil automatisk indeholde de rigtige informationer fra den aktuelle record. Også når du retter i txtHostName feltet og gemmer recordsettet vil informationen fra feltet automatisk blive gemt i DB-en.

dbhosts.UserName = brugernavn (f.eks. admin)
dbhosts.Password = password (f.eks. admin)
(Kommende linie er een lang linie)
dbhosts.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\AccessDB.mdb;Persist Security Info=False;Jet OLEDB:System database=\system.mdw

dbhosts.RecordSource = "SELECT * FROM tabelnavn ORDER BY ID;"
Set txtHostName.DataSource = dbhosts
txtHostName.DataField = "hostname"
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