21. maj 2006 - 23:44Der er
135 kommentarer og 1 løsning
VB6 Med MDB ?
HeeJ Derude ..
jeg tænkte på om det var muligt i VB6 at lave en App som kan forbinde til en MDB fil og åbne den, fx. t en bruger liste, hvor man så med nogen afkrydsning felter kan aktivere, deaktivere, slette osv .. Uden at åbne en Browser .. er det muligt at lave en sådan Aplikation ? i så fald. Hvordan ?
Du kan ikke oprette forbindelse fra dit program, og direkte til en MDB fil der ligger på en server (domæne).
Hvis du har et script på servere, kan du lave en forbindelse til scriptet, som klarer alt "opret, redigere, slette"-arbejdet, og udskriver resultat (hvis du ønsker det).
Ellers skal du download MDB filen, fra serveren og til din harddisk, og derefter arbejder med filen.
Ang "Ukendt Database Format": Enten er det ikke en Access fil (enhver fil kan jo blive kaldt ".mdb"), eller også er der noget galt med filen. Forbindelsen skal også være iorden, og skal være af den type man angiver.. ellers er den jo "Ukendt Database Format"..
har hentet den til min hd, men den siger det forkert, der er ingen problemer med at åbne den i Access 2000, men den vil ikk i VB6, kun hvis jeg exportere den som dBase5 fil, så kan den godt ? :S Gosh, det ser sQ indviklet ud :s er mega forvirret .. heeh .. altså hvor den sender det videre til fx. test.asp?type=new&navn=inctor&pw=test123 osv osv osv. ?
Funktionaliteten i visdata er lidt begrænset, forstået på den måde, at der er ting man ikke kan gøre lige så nemt, som i Access
Hvis du f.eks. opretter nogle kolonner, og kommer i tanke om at det skal være med omvendt rækkefølge, skal du slette kolonnerne og oprette dem i rigtige rækkefølge.. I Access kan man bare flytte dem..
Kunne jeg oSs se da jeg ville åbne den database jeg lavede i VB6, med Access .. der brokkede den sig osse .. :) heeh .. men kan jeg lave en "forside" hvor jeg har nogen valag muligheder, fx: Skriv Nyhed, Ny artikel, Ny bruger, Slet bruger osv osv osv.. og fx, når jeg så trykker på Ny Artikel, sendes jeg videre til en anden App hvor jeg kan indtaste Forfatter, Titel, og så selve artiklen, og når jeg så trykker Send afsted eller noge lignende skal alle dataerne sendes til: 'artikel.asp?forfatter=mads&titel=Artikel skrever fra VB6&artikel=Dette er hele min artikel, den blir mege længere' ... Hvis du forstår ?
Dataene skal "postes" til din hjemmeside. Jeg husker ikke helt hvordan, fordi jeg ikke rigtig har haft brug for det, så jeg har ikke arbejdet særligt meget med det.
Det nemmeste er nok at bruge Winsock-controllen.. der kan man gøre ene masse ting, der ikke er så kompliceret.. eller også er det Inet-controllen.. jeg kan aldrig huske det :-)
Jeg mener faktisk at Inet er den nemme af dem.. Winsock kan bruges til mange forskellige ting..
Kan ikk finde Inet, kun WInsock, hvorn fungere Winsock ? Fandt ud af det var sån her:
Www.Navigate "test.asp?signonid=" + Text1.Text, til at poste Text1's værdi, men nu har jeg jo hele 3 felter's værdier som skal "postes", og det skal gøres med Winsock .. How To Do ?
Øhhm .. ??? heeh .. Forstod jeg sQ ikk så meget af .. har kigge lidt på søgeresultaterne, men kunne ikk finde noget som kunne sende data til en asp side ? Det skal lige siges at jeg er Newb til VB6 ..
'HUSK at lave adressen om til din egen :-) strUrl = "http://servernavn.dk/dir/search.asp" & _ "?find=" & URLEncode(Trim(txtFind.Text)) & "&felt=" & intFelt
Har du uploadet det som ligger under "upload til server"??
NeeJ, min idé var jo at lave et program så jeg kan redigere i brugere, tilføje brugere, slette dem osv osv osv .. har kunnet finde ud af det, men kan kun få den til at poste en enkelt værdi .. :S
Kan godt bruge den der funk til at få en liste over alle brugere, kan jeg så gøre så jeg kan markere et navn, trykke på en Redigér knap og så kan jeg ændre navn, kode, alder osv .. ?
Følgende felter skal den hente og vise i nogen Text felte: Email, Alder, beboelse, hnavn, pw, køn, status .. og så fritext i et større felt, nogen lignende et Textarea .. :S og så skal jeg kunne trykke på en knapd er hedder Gem .. og så skal den opdatere databasen med de infoer jeg har ændret ..
<% Public Function Get_Search(strSearch, intFelt) Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & DataPath
Set rs = Conn.Execute(Get_SQL_String(strSearch, intFelt)) txtOut = ""
If Not rs.EOF Then Do txtOut = txtOut & rs("id") & vbTab & _ rs("navn") & vbTab & _ rs("hhnavn") & vbTab & _ rs("alder") & vbTab & _ rs("køn") & vbTab & _ rs("status") & vbTab & _ rs("hejmor") & vbCrLf rs.MoveNext Loop While Not rs.EOF Else txtOut = "Not found." & vbCrLf End If
Conn.Close Set Conn = Nothing Set rs = Nothing
Get_Search = txtOut End Function %>
<% Public Function Get_SQL_String(strSearch, intFelt) Select Case CInt(intFelt) Case 2 strSQL = "id" Case 3 strSQL = "navn" Case 4 strSQL = "hhnavn" Case 5 strSQL = "alder" Case 6 strSQL = "køn" Case 7 strSQL = "status" Case Else strSQL = "hejmor" End Select Get_SQL_String = "SELECT * FROM nyheder WHERE " & strSQL & " = '" & strSearch & "'" End Function %>
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
<% Public Function Get_Search(strSearch, intFelt) Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & DataPath
Set rs = Conn.Execute(Get_SQL_String(strSearch, intFelt)) txtOut = ""
If Not rs.EOF Then Do txtOut = txtOut & rs("id") & vbTab & _ rs("navn") & vbTab & _ rs("hhnavn") & vbTab & _ rs("alder") & vbTab & _ rs("email") & vbTab & _ rs("bg") & vbTab & _ rs("ting") & vbCrLf rs.MoveNext Loop While Not rs.EOF Else txtOut = "Not found." & vbCrLf End If
Conn.Close Set Conn = Nothing Set rs = Nothing
Get_Search = txtOut End Function %>
<% Public Function Get_SQL_String(strSearch, intFelt) Select Case CInt(intFelt) Case 2 strSQL = "id" Case 3 strSQL = "navn" Case 4 strSQL = "hhnavn" Case 5 strSQL = "alder" Case 6 strSQL = "email" Case 7 strSQL = "bg" Case Else strSQL = "ting" End Select Get_SQL_String = "SELECT * FROM nyheder WHERE " & strSQL & " = '" & strSearch & "'" End Function %>
Sorry, det var fordi jeg lige prøvede og skifte db for at se om det db'en som der var noget galt med .. men samme problem opstår .. den jeg bruger for resten af tiden er: database/system.mdb
<% Public Function Get_Search(strSearch, intFelt) Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & DataPath
Set rs = Conn.Execute(Get_SQL_String(strSearch, intFelt)) txtOut = ""
If Not rs.EOF Then Do txtOut = txtOut & rs("id") & vbTab & _ rs("navn") & vbTab & _ rs("hhnavn") & vbTab & _ rs("alder") & vbTab & _ rs("email") & vbTab & _ rs("bg") & vbTab & _ rs("ting") & vbCrLf rs.MoveNext Loop While Not rs.EOF Else txtOut = "Not found." & vbCrLf End If
Conn.Close Set Conn = Nothing Set rs = Nothing
Get_Search = txtOut End Function %>
<% Public Function Get_SQL_String(strSearch, intFelt) Select Case CInt(intFelt) Case 2 strSQL = "id" Case 3 strSQL = "navn" Case 4 strSQL = "hhnavn" Case 5 strSQL = "alder" Case 6 strSQL = "email" Case 7 strSQL = "bg" Case Else strSQL = "ting" End Select Get_SQL_String = "SELECT * FROM nyheder WHERE " & strSQL & " = '" & strSearch & "'" End Function %>
Er lidt forvirret nu .. Har prøvet at vende tilbage til den gamle kode: <% Response.expires = 0 Response.expiresabsolute = Now() - 1 Response.addHeader "pragma", "no-cache" Response.addHeader "cache-control", "private" Response.CacheControl = "no-cache" Response.Buffer = True Response.ContentType = "text/html" %>
<% Public Function Get_Search(strSearch, intFelt) Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & DataPath
Set rs = Conn.Execute(Get_SQL_String(strSearch, intFelt)) txtOut = ""
If Not rs.EOF Then Do txtOut = txtOut & rs("id") & vbTab & _ rs("navn") & vbTab & _ rs("hhnavn") & vbTab & _ rs("alder") & vbTab & _ rs("email") & vbTab & _ rs("bg") & vbTab & _ rs("ting") & vbCrLf rs.MoveNext Loop While Not rs.EOF Else txtOut = "Not found." & vbCrLf End If
Conn.Close Set Conn = Nothing Set rs = Nothing
Get_Search = txtOut End Function %>
<% Public Function Get_SQL_String(strSearch, intFelt) Select Case CInt(intFelt) Case 2 strSQL = "id" Case 3 strSQL = "navn" Case 4 strSQL = "hhnavn" Case 5 strSQL = "alder" Case 6 strSQL = "email" Case 7 strSQL = "bg" Case Else strSQL = "ting" End Select Get_SQL_String = "SELECT * FROM nyheder WHERE " & strSQL & " = '" & strSearch & "'" End Function %>
Hvis jeg så vælger id i comboboxen finder den dem alle sammen, men indtaster jeg et id i søge feltet som passer til en bruger så finder den ikke nogen ?
Nu kom der noget frem .. heeh .. :) de oplysninger som er på det ID .. :) nu skal den passe til så den kommer over til programmet, med de forskellige søge kriterier..
Select Case intFelt Case 2 strFelt = "id" Case 3 strFelt = "navn" Case 4 strFelt = "hhnavn" Case 5 strFelt = "alder" Case 6 strFelt = "email" Case 7 strFelt = "bg" Case Else strFelt = "ting" End Select
strSQL = "SELECT * FROM nyheder WHERE " & strFelt & "='" & strFind & "';"
Select Case intFelt Case 2 strFelt = "id" Case 3 strFelt = "navn" Case 4 strFelt = "hhnavn" Case 5 strFelt = "alder" Case 6 strFelt = "email" Case 7 strFelt = "bg" Case Else strFelt = "ting" End Select
If IsNumeric(strFind) Then strSQL = "SELECT * FROM nyheder WHERE " & strFelt & "=" & strFind & ";" Else strSQL = "SELECT * FROM nyheder WHERE " & strFelt & "='" & strFind & "';" End If
Select Case intFelt Case 2 strFelt = "id" Case 3 strFelt = "navn" Case 4 strFelt = "hhnavn" Case 5 strFelt = "alder" Case 6 strFelt = "email" Case 7 strFelt = "bg" Case Else strFelt = "ting" End Select
Select Case intFelt Case 2 strFelt = "id" Case 3 strFelt = "navn" Case 4 strFelt = "hhnavn" Case 5 strFelt = "alder" Case 6 strFelt = "email" Case 7 strFelt = "status" Case Else strFelt = "køn" End Select
Men kan ikk søge på ID i Vb6, kun hvis jeg vælger den som hedder navn . skal bare ændre Case til nummeret mindre ?
Så nu virker den skam som det skal .. Nu har jeg et andet spm .. Kan jeg lave en knap som heder Rediger, og så når jeg har markeret et navn, åbner den en ny form hvor jeg kan ændre alle indstillinger for brugeren ? og så trykke på Gem bagefter ..
Fixede det selv lige .. heeh .. Kan jeg lave en knap som heder Rediger, og så når jeg har markeret et navn, åbner den en ny form hvor jeg kan ændre alle indstillinger for brugeren ? og så trykke på Gem bagefter ..
If Len(strFind) = 0 Then strSQL = "SELECT * FROM nyheder;" Else If IsNumeric(strFind) Then strSQL = "SELECT * FROM nyheder WHERE " & strFelt & "=" & strFind & ";" Else strSQL = "SELECT * FROM nyheder WHERE " & strFelt & "='" & strFind & "';" End If End If
Hmm .. I dit program: Search3 er der denne kode: '---------------------------------------------------------- ' Dette projekt er bruge på: ' ' http//www.eksperten.dk/spm/304504 ' ' ' ' Hvis ud finder en fejl eller bare har en kommater er du ' ' velkommen til at skrive det til mig på e-mail: ' ' sjh.multimedia@get2net.dk ' ' Hilsen sjh eksperten :o) ' '----------------------------------------------------------
Option Explicit
Private Sub cmdFind_Click() Dim intCount As Integer Dim intFelt As Integer Dim strUrl As String Dim strComplete As String Dim arrSplitLine As Variant
'HUSK at lave adressen om til din egen :-) strUrl = "http://www.2cool4you.dk/search2.asp" & _ "?find=" & URLEncode(Trim(txtFind.Text)) & "&felt=" & intFelt
'--------------------------->Url, "user agent navn til asp-siden" strComplete = DownloadString(strUrl, App.Title)
lstFound.Clear COL_Clear
If InStr(1, strComplete, vbTab) Then
arrSplitLine = Split(strComplete, vbCrLf)
For intCount = 1 To UBound(arrSplitLine) - 1 strComplete = CStr(arrSplitLine(intCount)) Call COL_Add(strComplete) lstFound.AddItem AddFornavn(strComplete) Next intCount
Else
lstFound.AddItem "Not found."
End If cmdFind.Enabled = True End Sub
Private Sub Form_Load()
With cmbFelt .AddItem "Fornavn" .ItemData(.NewIndex) = 1
.AddItem "Efternavn" .ItemData(.NewIndex) = 2
.AddItem "Gade" .ItemData(.NewIndex) = 3
.AddItem "By" .ItemData(.NewIndex) = 4
.AddItem "Postnr" .ItemData(.NewIndex) = 5
.AddItem "Land" .ItemData(.NewIndex) = 6
.AddItem "Telefon" .ItemData(.NewIndex) = 7
.ListIndex = 2 End With
End Sub
Private Sub lstFound_Click() If COL_View(lstFound.ListIndex) Then With ASPInfo txtData(0) = .Navn
End With End If End Sub
Hvorfor melder den fejl i mit eget program ? den gør jo det samme som den fra Search1, bortset fra at når man trykker på et navn udfylder den nogen felter .. :S
Private Type ASP_INFO id As String navn As String hhnavn As String alder As String køn As String status As String email As String End Type
Private colSearch As New Collection Public ASPInfo As ASP_INFO
Public Sub COL_Clear() Do While Not colSearch.Count = 0 Call colSearch.Remove(1) Loop End Sub
Public Sub COL_Add(ByVal vNewValue As Variant) colSearch.Add CStr(vNewValue) End Sub
Public Function COL_View(Index As Integer) As Boolean Dim i As Integer Dim arrSplitTab As Variant Dim strComplete As String
If colSearch.Count > 0 And colSearch.Count >= (Index + 1) Then strComplete = CStr(colSearch.Item(Index + 1)) arrSplitTab = Split(strComplete, vbTab)
If Not Len(Trim(strComplete)) = 0 Then With ASPInfo .id = arrSplitTab(1) .navn = arrSplitTab(2) .hhnavn = arrSplitTab(3) .alder = arrSplitTab(4) .køn = arrSplitTab(6) .status = arrSplitTab(5) .email = arrSplitTab(7) End With COL_View = True Else COL_View = False End If Else COL_View = False End If End Function
Public Function Addnavn(ByVal strText As String) As String Dim i As Integer For i = 1 To Len(strText) If Mid(strText, i, 1) = vbTab Then Addnavn = Left$(strText, i) Exit For End If Next i End Function
Min form ser således ud: Option Explicit
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Sub cmdFind_Click() Dim intCount As Integer Dim intFelt As Integer Dim strUrl As String Dim strComplete As String
intFelt = cmbFelt.ItemData(cmbFelt.ListIndex)
'HUSK at lave adressen om til din egen :-) strUrl = "http://highrisetime.dk/search.asp" & _ "?find=" & URLEncode(Trim(txtFind.Text)) & "&felt=" & intFelt
strComplete = DownloadString(strUrl)
lstFound.Clear
If InStr(1, strComplete, vbTab) Then
arrSplitLine = Split(strComplete, vbCrLf)
For intCount = 1 To UBound(arrSplitLine) lstFound.AddItem CStr(arrSplitLine(intCount)) Next intCount
Else
lstFound.AddItem "Desværre."
End If
End Sub
Private Sub Form_Load() Dim TabStop(6) As Long TabStop(0) = 30 TabStop(1) = 60 TabStop(2) = 90 TabStop(3) = 120 TabStop(4) = 150 TabStop(5) = 180
With cmbFelt .AddItem "id" .ItemData(.NewIndex) = 1
.AddItem "navn" .ItemData(.NewIndex) = 2
.AddItem "hhnavn" .ItemData(.NewIndex) = 3
.AddItem "alder" .ItemData(.NewIndex) = 4
.AddItem "køn" .ItemData(.NewIndex) = 5
.AddItem "status" .ItemData(.NewIndex) = 6
.AddItem "email" .ItemData(.NewIndex) = 7
.ListIndex = 2 End With End Sub Private Sub lstFound_Click() If COL_View(lstFound.ListIndex) Then With ASPInfo txtData(0) = .id txtData(1) = .navn txtData(2) = .hhnavn txtData(3) = .alder txtData(4) = .køn txtData(5) = .status txtData(6) = .email End With End If End Sub
men når jeg trykker på et navn fra søgningen så sker der ingen ting ?
Ja som du ser så her du en fejl i din asp-side http://highrisetime.dk/search.asp (HTTP 500 - Intern serverfejl) Jeg mener man skulle kunne se hvad linje det er i.. men kan sq ikke huske hvordan man slår det til..
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key 'Temporary (volatile) Jet DSN for process 0xa54 Thread 0xbf8 DBC 0x1c14b6cc Jet'.
Ang "Internfejl": Man skal slå "vis uskadelige fejlmeddelelser" (eller ligende) fra/til, under indstillinger (Funktioner > Internetindstillinger > Avanceret).
Ang fejlmeddelelsen: Stien og/eller filnavnet til database-filen er forkert.
NeeJ, fejlen opstår pga at vi havde en brist i vores sikkerher, man kunne gøre sån: www.highrisetime.dk/database/system.mdb og så hente den database .. :S Hvorn kan jeg sikre databasen best ? med kode ?
skal man så oSs skrive kode inde i ASP siden ? før man kan læse den ? ellers kan man jo bare hente den, ligge den op på egen side, lave et script som åbner Mdb filen og printer alt indholdet ud, og så kan det jo være ligegyldigt jo .. heeh .. Hvorn Password beskytter jeg den ? og skal ejg tilføje noget i ASp filen ?
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.