Jag sitter och klurar lite på vad det där numret 48 har för uppgift i nedanstående formel. ...när jag trodde inget hände vid en andra inmatning med samma namn så insåg jag att det inmatade namnet faktiskt LÄGGS TILL i databasen. Hej Igen Hej Hej, Jag skrev till något inatt (!) som ju faktiskt fungerar, men när du nu säger sådär om SQL-frågan så blir jag osäker. Vill säga tack för denna upplysning. Nu har jag lärt mig något nytt IGEN (åhhh vad det känns skönt). Hej Tack för detta allihop, som hjälpt mig!!!Message Box (MsgBox)
Någonting betyder det ju, men vad? Och finns det någon förteckning någonstans som talar om vad olika nummer där då kan betyda.
MsgBoxen kommer upp vid första försöket när jag skriver in ett namn som inte existerar i databasen - men gör jag om det med samma namn så händer ingenting. jag vill ju att detta meddelande ska komma upp varje gång det inte finns någon match i databasen, oavsett hur många gånger jag skriver "fel namn".
'om input i dialogrutan inte matchar i databasen, visa meddelande:
If Not rs.EOF Then
MsgBox "Det du skrev in finns ej att hitta i databasen.", 48, "Matchningsfel"
End IfSv: Message Box (MsgBox)
Detta är inte bra. Kanske jag inte ska ha den här formeln - utan något annat, hmmm nu får jag klura lite till tror jag.Sv: Message Box (MsgBox)
48 betyder nummer på den icon som visas ! (utropsrecken)
Testa 16 Stop , 32 ? (frågetecken) , 64 I (info)
Sen kan du addera till denna siffra + 1 blir Ok och Cancel button
testa 32 +1 dvs 33 testa 16 + 4 dvs 20 Yes No button
Det finns 1- 5 som du kan testa att addera.
mvh
SvenSv: Message Box (MsgBox)
Kolla denna sida
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsconMsgBox.asp
mvh
SvenSv: Message Box (MsgBox)
Hur ser din SQL sats ut eftersom det läggs till till databasen?
Sen är väl inte kollen den rätta heller eftersom du kollar om
Not rs.EOF vilket betyder att du har fått en post till svar, hade posten varit tom så skulle rs ha returnerat EOF dvs End OF File.
Så här skulle jag göra min SQL sats.
strSQL="SELECT * FROM Tabell WHERE något = '" & sNågot & "'
Set rst = con.Execute(strSQL)
If rst.EOF Then
MsgBox "Det du skrev in finns ej att hitta i databasen.", 48, "Matchningsfel"
Else
' Vi fick en träff visa det
End If
Anna-KarinTill Cougarina
Skulle du vilja titta på det och säga om den är "farlig/felaktig" eller om den duger.
Jag är ju nybörjare så jag tror inte själv att jag skrivit den smidigaste/snyggaste koden - men jag är än så länge nöjd OM den inte innehåller något direkt fel utan funkar som jag tänkt mig (för ögat när jag kollar resultat i Access-databasen så funkar det som jag vill).
Det är sektionen om MsgBox jag undrar över: Har skrivit "COUGARINA HÄÄÄR...." inne i koden så att du enkelt hittar var jag menar.
HÄR ÄR HELA KODEN (om du orkar)
'Exporterar data från det AKTIVA worksheet
'till en tabell i en Access-databas som jag definierar
Private Sub ADOFromExcelToAccess()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim MittNamn As String, skrivEt As String, titel As String
Dim r As Long
'Ange hämtrad i excel-dokumentet
r = 2 'Här hämtas värdet ifrån.
'repetera tills den första tomma cellen i kolumn A träffas.
'Hämtar värdet i Kolumn A och r. Kastar in detta värdet som specificerat nedan
Do Until Len(Range("A" & r).Formula) ' "A" är kolumnen i Excel
r = r + 1
Loop
'Ange namn som ska letas upp i Accessdatabasens tabell
MittNamn = InputBox("Skriv in vilket du vill uppdatera.", "Uppdatera Databasen?")
'Anslut till Access-databasen. Efter Source anges exakt sökväg till databasen
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\exacc\db1.mdb;"
'Öppna ett recordset. OBS! Accesstabeller får ej innehålla å,ä,ö i namnet
'FirstaBladet är tabellnamnet i Accessdatabasen.
Set rs = New ADODB.Recordset
rs.Open "SELECT * FROM FirstaBladet WHERE Namn=" & SQLText(MittNamn), cn, adOpenKeyset, adLockOptimistic
If rs.EOF Then
'Skapa ett nytt record (.AddNew)
rs.AddNew
rs("Namn") = MittNamn
'COUGARINA HÄÄÄÄÄR ...om input i dialogrutan inte matchar i databasen, visa meddelande.
' om ej Exit Sub skrivs så: vid inmatning av samma namn en gång till så läggs det till i databasen!!!!
If Not rs.EOF Then
MsgBox "Det du skrev in finns ej att hitta i databasen.", 48, "Matchningsfel"
Exit Sub
End If
End If
'lägg till värden till varje fält i record'et (hämtar här från Excel)
rs("As Built") = Range("A" & r).Value ' "A" är kolumnen i Excel
'sparar det nya record'et
rs.Update
'stänger kopplingen till recordset och filconnection.
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
-----------------------------------------------------------------------------------
'Mottager värdet MittNamn och letar upp det för matchning i FirstaBladet
Function SQLText(Value As String) As String
'Om (Value As String) ändras till (Value As Variant)så uppdateras Access med ny post om den ej hittar det sökta MittNamn.
If Len(Value) > 0 Then
SQLText = "'" & Replace(Value, "'", "''") & "'"
Else
SQLText = "Null"
End If
End FunctionTack Sven Pon
Ha en FIN dag!
önskar EthárSv: Till Cougarina
Jag ser ett fel och det är att om ditt RS är tomt så lägger du till det som du ville söka efter.
If rs.EOF Then
'Skapa ett nytt record (.AddNew)
rs.AddNew <== Lägger till post till databasen.
rs("Namn") = MittNamn
Vill du inte lägga till så ta bort dessa två kodrader + kommentaren.
Jag vet inte om min förra kod löste problemet eller inte, du får säga till om du vill ha mer hjälp.
Anna-KarinDå var allt löst och klart.
Cougarina: Jag tog bort de två raderna (addNew osv...) som du föreslog och nu fungerar det ypperligt.
Jag känner mig så glad och nöjd för nu är hela saken löst.