Har följande problem: Vet du om koden körs alls? Testa att lägga en MsgBox överst för att se att det körs. Ouuups... Hade råkat byta namn på knappen! ÄR inte name en sträng? Name är en sträng, är det detta som är problemet? Name är en sträng, är det detta som är problemet? Att fela är mänskligt... Men för att verkligen röra till det behövs en dator!!! Varför behöver du den alls? Jag tror den inte fyller någon funktion. Testa att plocka bort den: Jag har markerat så att den hoppar över båda två... Du får göra det med kod. Tanken som företaget ville ha var nämligen att den skulle bara fungera med en valuta. Förra veckan kom de och önskade att de ville att den skulle fungera med flera valutor. PROBLEM i och med detta... Jag har ca. fem veckor kvar på mitt exjobb och jag räknar med att fyra går åt till dokumentering! I stort sett är alla sql frågor, formulär osv. klara, men detta innebär att jag får ändra i stort sett allt, pga att kraven ser annorlunda ut idag en vad de var för två månader sedan när jag startade... Då det rör sig om ett fleranvändarsystem skulle jag inte rekomendera att välja valuta genom en tabell. Tack för all hjälp du har gett mig men jag beslutade mig för att bygga om databasen. Hittills har jag lyckats skapa ca 20% av det totala jobbet, för att jag lärt mig mycket av lösningarna tidigare under arbetets gång. Med detta som bakgrund har jag bestämt mig för att börja om från början.Problem med VBA kod, Uppdatera tabell
När man trycker på en knapp i ett formulär skall tabellen Currency uppdateras. Just när man trycker på denna knapp skall ChoosenCurrency ändras till True istället för false (man väljer vilken valuta man vill använda) när man väljer Svenska kronor.
Sedan skall detta formulär stängas och nästa formulär som heter "test Sales" öppnas.
Just i detta fallet händer INGENTING! Databasen uppdateras inte överhuvudtaget. Detta innebär att jag inte heller transporteras till nästa formulär...
Private Sub OpenSales_Click()
On Error GoTo Err_OpenSales_Click
Dim cmd As ADODB.Command
On Error GoTo Err_OpenSales_Click
Set cmd = New ADODB.Command
Set cmd.ActiveConnection = CurrentProject.Connection
cmd.CommandText = "UPDATE Currency SET ChoosenCurrency = True WHERE Name = SEK"
cmd.Parameters.Append cmd.CreateParameter("SEK", adInteger, adParamInput, , "SEK")
cmd.Execute
Me.Requery
Dim stDocName As String
Dim stLinkCriteria As String
DoCmd.Close
stDocName = "test Sales"
DoCmd.OpenForm stDocName, , , stLinkCriteria
MsgBox Err.Description, vbCritical
Exit_OpenSales_Click:
Exit Sub
Err_OpenSales_Click:
MsgBox Err.Description
Resume Exit_OpenSales_Click
End Sub
Tacksam för all hjälp /Anders
Sv: Problem med VBA kod, Uppdatera tabell
/JohanSv:Problem med VBA kod, Uppdatera tabell
MEN nu kommer nästa felmmeddelande: "Programmet använder ett värde av felaktig typ för den aktuella åtgärden".
Kan misstänka att det har att göra med SEK
cmd.CommandText = "UPDATE Currency SET ChoosenCurrency = True WHERE Name = SEK"
cmd.Parameters.Append cmd.CreateParameter("SEK", adInteger, adParamInput, , "SEK")
När jag vill hitta SEK i namn och sedan uppdatera ChoosenCurrency. Är inte helt hundra på att jag skrivit rätt på dessa två rader.
/Anders
Sv: Problem med VBA kod, Uppdatera tabell
Testa med:
Private Sub OpenSales_Click()
Dim cmd As ADODB.Command
On Error GoTo Err_OpenSales_Click
Set cmd = New ADODB.Command
Set cmd.ActiveConnection = CurrentProject.Connection
cmd.CommandText = "UPDATE [Currency] SET [ChoosenCurrency] = True WHERE [Name] = [@Currency]"
cmd.Parameters.Append cmd.CreateParameter("@Currency", adVarChar, adParamInput, 20, "SEK")
cmd.Execute
Me.Requery
Dim stDocName As String
Dim stLinkCriteria As String
DoCmd.Close
stDocName = "test Sales"
DoCmd.OpenForm stDocName, , , stLinkCriteria
MsgBox Err.Description, vbCritical
Exit_OpenSales_Click:
Exit Sub
Err_OpenSales_Click:
MsgBox Err.Description
Resume Exit_OpenSales_Click
End Sub
Borde du inte avmarkera de andra valutorna samtidigt? Om det är så att bara en kan vara vald sammtidigt.
Sv:Problem med VBA kod, Uppdatera tabell
Det skall jag göra, tanken finns där redan, men jag vill först få det att fungera så att jag kan välja valuta innan jag går vidare.
Tyvärr kommer fortfarande felmmeddelande: "Programmet använder ett värde av felaktig typ för den aktuella åtgärden".
Den stoppar på raden: " cmd.Parameters.Append cmd.CreateParameter("@Currency", adVarChar, adParamInput, 20, "SEK")"
Fråga för starkt intresses skull!
Varför skriver du [@Currency], "@Currency", 20 och "SEK". SEK förstår jag är värdet, men de andra tre:
<code vba>
cmd.CommandText = "UPDATE [Currency] SET [ChoosenCurrency] = True WHERE [Name] = [@Currency]"
cmd.Parameters.Append cmd.CreateParameter("@Currency", adVarChar, adParamInput, 20, "SEK")
<code>
/Anders
Ps. Vet inte varför svaret ser mycket myskout??? Letar vidare på nätet samtidigt för att kunna hitta vad som kan vara fel... Ds.Sv: Problem med VBA kod, Uppdatera tabell
Det skall jag göra, tanken finns där redan, men jag vill först få det att fungera så att jag kan välja valuta innan jag går vidare.
Tyvärr kommer fortfarande felmmeddelande: "Programmet använder ett värde av felaktig typ för den aktuella åtgärden".
Den stoppar på raden: " cmd.Parameters.Append cmd.CreateParameter("@Currency", adVarChar, adParamInput, 20, "SEK")"
Fråga för starkt intresses skull!
Varför skriver du [@Currency], "@Currency", 20 och "SEK". SEK förstår jag är värdet, men de andra tre:
<code vba>
cmd.CommandText = "UPDATE [Currency] SET [ChoosenCurrency] = True WHERE [Name] = [@Currency]"
cmd.Parameters.Append cmd.CreateParameter("@Currency", adVarChar, adParamInput, 20, "SEK")
<code>
/Anders
Ps. Vet inte varför det tidigare svaret ser mycket myskout??? Letar vidare på nätet samtidigt för att kunna hitta vad som kan vara fel... Ds.Sv: Problem med VBA kod, Uppdatera tabell
Min kod såg exakt ut som den du har skrivit - Fungerade ej!
Kopierade din kod till raden under - Exakt likadan FUNGERADE?!?!? Vet ej varför.
Nu kom tyvärr nästa lilla felmeddelande:
Raden: MsgBox Err.Description, vbCritical
Ger ett felmeddelande med en varning, men det står inte varför den varnar utan bara en OK knapp...???
Markerar jag att raden inte skall köras fungerar det klockrent, men varför varnar den? Någon som vet.
En litet, men kraftigt irriterande fel...
Går det att få fram vilken rad den varnar den på? För att hitta felet...
Tack så mycket för all hjälp
Mvh AndesrSv:Problem med VBA kod, Uppdatera tabell
Private Sub OpenSales_Click()
Dim cmd As ADODB.Command
On Error GoTo Err_OpenSales_Click
Set cmd = New ADODB.Command
Set cmd.ActiveConnection = CurrentProject.Connection
cmd.CommandText = "UPDATE [Currency] SET [ChoosenCurrency] = True WHERE [Name] = [@Currency]"
cmd.Parameters.Append cmd.CreateParameter("@Currency", adVarChar, adParamInput, 20, "SEK")
cmd.Execute
Me.Requery
Dim stDocName As String
Dim stLinkCriteria As String
DoCmd.Close
stDocName = "test Sales"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_OpenSales_Click:
Exit Sub
Err_OpenSales_Click:
MsgBox Err.Description, vbCritical
Resume Exit_OpenSales_Click
End Sub
Sedan är frågan om du behöver göra en Me.Requery om du ändå stänger fönstret. Borde bara ta onödiga resurser.
Sv: Problem med VBA kod, Uppdatera tabell
Undrar bara varför den varnade... Utan ett meddelande av vad som var fel.
Nu kommer jag till nästa problem. Jag vet vilket land (valuta) jag valt.
Min tabell med listpriser ser ut på följande sätt
ListPrice
----------
KitName SEK NOK DKK EEK LTL LVL
Jag får fram vilken valuta jag valt med:
(SELECT [Currency].Name FROM [Currency] WHERE [Currency].ChoosenCurrency=TRUE) AS Country
Hur gör jag för att välja rätt kolumn med rätt listpris? Exempelvis om det är norska kronor som jag valt (NOK). Denna typ av fråga har jag inte lyckats lista ut ännu...
Går det att använda svaret i första frågan, vilket jag hoppas på eller måste jag bygga om mina tabeller från grunden, vilket jag inte hoppas för det tar troligtvis alldeles för lång tid för mig...
Mvh Anders
Sv:Problem med VBA kod, Uppdatera tabell
Jag tycker det är "Skumt" att markera vilket pris du vill se med en tabell. Skall man bara se ett pris eller flera?
Din struktur är inte dynamisk. Om mna vill lägga till ytterligare en valuta måste man förändra datastrukturen.
Du kan annars strukturerar det:
Table: ListPrice
Field: KitName
Field: Currency
Field: Price
På så sätt kan du lägga till och ta bort valutor. Samt att data lagras bara för de poster som det angivits.Sv: Problem med VBA kod, Uppdatera tabell
Jag hoppades att det fanns en hyfsat enkel men kanske lite "ful" lösning på problemet. Inte bra att göra så men kanske skulle lösa problemet.
Mvh AndersSv:Problem med VBA kod, Uppdatera tabell
Använd istället en global variabel och en funktion i frågan.
Detta är ett exempel på en sådan fullösning:
Placera följande kod i en modul:
Option Compare Database
Option Explicit
Public Enum CurrencyEnum
ceUninitiliezed
ceSEK
ceEURO
End Enum
Private mCurrentCurrency As CurrencyEnum
Public Property Get CurrentCurrency() As CurrencyEnum
If mCurrentCurrency = ceUninitiliezed Then
mCurrentCurrency = GetSetting("MyApplication", "Settings", "Currency", ceSEK)
End If
CurrentCurrency = mCurrentCurrency
End Property
Public Property Let CurrentCurrency(Value As CurrencyEnum)
SaveSetting "MyApplication", "Settings", "Currency", Value
mCurrentCurrency = Value
End Property
Function SelectCurrency(ValueSEK, ValueEURO)
Select Case mCurrentCurrency
Case ceSEK
SelectCurrency = ValueSEK
Case ceEURO
SelectCurrency = ValueEURO
End Select
End Function
Fråga:
SELECT Products.Product, SelectCurrency(Products.SEK, Products.EURO) AS Price
FROM Products;
Du får själv anpassa kodenen från detta exempel.
Sv: Problem med VBA kod, Uppdatera tabell
Detta innebär att jag förhoppningsvis i slutet på denna vecka har en BRA version att visa för dem, samt att jag gör en rätt och riktig grund att stå på. Inte kul att visa lite "fula" saker för handledaren sedan. Jag kanske är dum, men detta känns som ett rätt beslut.
Dock kan det innebära att jag fortfarande stöter på problem, men troligtvis inte av samma art som tidigare eller lika ofta...
Om du har lust får du gärna titta på min nästa fråga om Listbox som jag inte förstår meddelandet på.
Mvh Anders