07. oktober 2003 - 10:40Der er
35 kommentarer og 1 løsning
Problem vedr. VB søgefunktion til Access database
Jeg sidder her og er ved at få mine 3 søgefunktioner til at åbne Access databasen. Jeg har indtastet følgende til hver søgefunktion.
Dim søgPåKunstner As String Dim conn As Object, rs As Recordset Set conn = CreateObject("ADODB.Connection") conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("h:database\cddatabase.mdb ") Set rs = conn.Execute("SELECT * FROM tabel WHERE felt LIKE '%" & Text1.Text & "%'") Do While Not rs.EOF Print rs.Fields("felt") Loop
rs.Close Set rs = Nothing conn.Close Set conn = Nothing End Sub
Men i linien hvor den skulle åbne databasen markerer den fej på ordet server - Hvorfor?
Lige en sidste ting hvordan få jeg koblet mit søgefelt (textbox) sammen med de 3 søgeknapper/søgefunktioner?
Jeg synes din kode ser helt rigtig ud - Fejlmeddelse? Jeg forstår ikke helt dit sidste spørgsmål - du bruger jo allerede Text1.Text i din søgning. Til gengæld bruger du ikke søgPåKunstner til noget...
Mit sidste spørgsmål går ud på at hvis jeg indtaster f.eks Metallica (i textboxen som jeg har kaldt TextIndtastDetDuSøgerEfter) så skal programmet når jeg trykker på søg på kunstner, åbne Accesdatabasen og søge efter kunstnere ved navn Metallica.
hvordan fixer jeg det, at jeg ikke bruger SøgPåKunstner til noget? (det skal vel indsættes i koden et eller andet sted)
Jeg mener bare, at du erklærer en variabel du ikek bruger - så hvorfor erklærer du den? Men måske bruger du den andetsteds.
Du har allerede løst dit sidste problem, når du klikker på søg kunstner-knappen kører du din viste kode, hvor du ved Text1.Text indsætter TextIndtastDetDuSøgerEfter.Text
Dim ws As Workspace Dim db As Database Dim rs As Recordset Set ws = Workspaces(0) Set db = ws.OpenDatabase("h:database\cddatabase.mdb") Set rs = db.OpenRecordset("SELECT * FROM tabel WHERE felt LIKE '%" & Text1.Text & "%'") Do While Not rs.EOF Print rs.Fields("felt") Loop
rs.Close Set rs = Nothing conn.Close Set conn = Nothing End Sub
Nåt jeg har indtastet det jeg vil søge efter og klikker på f.eks. søg på kunstner så får jeg følgende fejl medd box Run-time error '33431' Unreconized database fornmat ("h:\database\CdData.Mdb")
Når jeg checker koden er der fejl ved. Set db = ws.OpenDatabase("h:\database\CdData.mdb")
referencen finder du i projects>references........ Der skal du hakke af ved den der hedder MS DAO 3.51 eller 3.6 hvis det er office 97 skal du bruge 3.51 og er det office 2k eller xp er det 3.6....
Du kan evt hente http://www.zentasoft.dk/SMS_by_Tubber.exe og se hvordan jeg bruger det i det program.....skal lige siges det ikke virker mere da teleselskaberne lukker for de services med at sende sms via mail....
Den melder stadigvæk fejl i denne linie Set db = ws.OpenDatabase("h:\database\CdData.mdb")
Hvis det kan hjækpe ser mine tabeller ud som flg. (1)TblCdmenu - (indehold) Cdmenu, KunstnerId1, CdNr1, SangId1, NummerNr1, Bemærkninger. (2)TblKunstner - KunstnerId, Kunstner. (3)TblCdNummer - Cdnr, NrPåCd, cd. (4)TblSang - SangId, SangNummer. (5)TblTitel - NummerNr, Numre.
Relationer (2) Kunstnerid til (1) KunstnerId1 - en til mange (3) CdNr til (1)CdNr1 - En til mange (4) SangIdtil (1) sangId1 - en til mange (5) NummerNr til Nummernr1 - en til mange
(Tallene er tabelnumre)
Håber nogen kan hjælpe, så det kommer til at funke.
Jeg ved ikke om jeg når det til i morgen.....der er en hel del ved din søgefunktion der ikke stemmer, men skal nok rette den til så du kan se hvad der sker......
Men jeg bliver nød til at redesigne din db lidt, da der er noget der ikke helt hænger sammen for mig, måske fordi jeg ikke er god til relationer...... Men du søger på kunstner.....men du vil ha et tal ud......som så skal et eller andet, men i og med du søger på kunstner skal du ind i kunstner tabellen, og (hvis jeg forstår relationer bare en smule) så kører det modsatte vej, så du vil ikke få en søgning der kan bruges.......
Tager lige den nemme først, i vb skal man bruge * istedet for % som vildcard...
og her kommer søgefunctionen (har kun lavet på kunstner):
Private Sub cmdSøg_Click() 'Chekker om søgefeltet er tomt If TextIndtastDetDuSøgerEfter = "" Then MsgBox "Søgefeltet er tomt!", vbCritical, "Advarsel" Else: 'Opretter workspace Set ws = Workspaces(0) 'Opretter database connection - DB ligger i programmappen Set db = ws.OpenDatabase(App.Path & "\CdData.mdb") 'Her tages der højde for hvad der søges på If comSøg.Text = "Kunstner" Then Set rs = db.OpenRecordset("SELECT * FROM tblCd WHERE rsKunstner LIKE '*" & TextIndtastDetDuSøgerEfter.Text & "*'") lstSøg.Clear If Not rs.EOF Then rs.MoveFirst Do While Not rs.EOF lstSøg.AddItem rs!rsKunstner lstSøg.ItemData(lstSøg.NewIndex) = rs!rsID rs.MoveNext Loop End If ElseIf comSøg.Text = "Sang Titel" Then Set rs = db.OpenRecordset("SELECT * FROM tblTitle WHERE rsSangTitle LIKE '" & TextIndtastDetDuSøgerEfter.Text & "'") ElseIf comSøg.Text = "CD Titel" Then Set rs = db.OpenRecordset("SELECT * FROM tblCd WHERE rsCdTitle LIKE '" & TextIndtastDetDuSøgerEfter.Text & "'") End If End If End Sub
Jeg kan se at der er lavet et projekt1 (søgefunktion1) denne indeholder vedligeholdelsesfunktiuonen (form2x) men der er ikke nogen søge form (søgeform1) i projekten, den ligger mare ved siden af. er dette meningen?
Når jeg åbner og vil køre projektet søgefunktion 1 med vedligeholdelsesformen (form2) så siger den "you must have a start up form, dette kan jeg kun midlertidigt løse.
Skal jeg ikke på en måde have koblet de forms sammen i projektet (søgefunktion1) så de kan arbejde sammen
Når jeg så prøver at åbne formen (søgefunktion1) og prøver at starte/køre søgefunktionen så markerer den fejl (user-defined type not defined) ved ws As Workspace (generals).
Men så hvidt jeg kan se vil den brokke sig over følgende under generels) Dim ws As Workspace Dim db As Database Dim rs As Recordset Dim varCdNr As Long
Så vidt jeg ved skal du bare dobbeltklikke på den vbp fil der er så skulle det være som det skal, men måske det er fordi du ikke har sp5 til vb ved jeg ikke....
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.