28. juni 2002 - 14:26Der 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.
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 ?
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..
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
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"
Synes godt om
Ny brugerNybegynder
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.