Vad jag vill göra, är att flytta över en person ifrån ett loggnummer till ett annat. Vänta nu lite. Jag var för het på gröten. Jo, det var det första som jag försökte med, men den ville inte uppdatera. > När jag kolla sSQL-strängen, så ser den riktig ut, men jag får ett error Det som är problemet är att det är i en Accessdatabas som jag har på jobbet. Där har jag inte tillgång till QA. OK, men som sagt, skriv ut SQL-satsen och klistra in den i ett inlägg här så kan vi se om den är korrekt. Tack Cristoffer. Hej. Jo loggNr 401 finns. Du kan kanske testa med att vrida runt queryn lite. Jag ser inget fel i den sql-satsen, möjligen att Access kan bråka (SQL Server gör det ej) för att du inte har ett mellanslag mellan '' och WHERE. Dvs, testa nedanstående. Om det inte fungerar har jag ingen aning, måste bara säga som tidigare sa, är du helt säker att det redan finns en rad med loggnr = 401? När jag gjorde som du beskrev, så fick jag inte ens 0 till svar. Den utelämnade helt enkelt någon siffra. Hej igen. Att db-designen ser ut som den gör är: Hej igen.Fel i sSQL vid INSERT
LoggNr är en nyckel(tal), och för sorteringen så är det viktigt att kunna flytta ifrån ett loggnr till ett annat.
jag försöker så här:
<code>
sSql = "INSERT INTO t_PersonData
( Förnamn,Efternamn, PersonNr,Adress,
PostNr,Bostadsort,TelefonNummer,Mobil) "
sSql = sSql & "Value('" & Me![Förnamn] & "',
'" & Me![Efternamn] & "',
'" & Me![PersonNr] & "',
'" & Me![Adress] & "',
'" & Me![PostNr] & "',
'" & Me![Bostadsort] & "',
'" & Me![TelefonNummer] & "',
'" & Me![Mobil] & "' WHERE t_PersonData.LoggNr = " & strLoggNr & ")"
'MsgBox sSql
db.Execute sSql
</code>
När jag kolla sSQL-strängen, så ser den riktig ut, men jag får ett error
SYNTAXFEL i Insert Into uttrycket.
Vad gör jag för fel?Sv: Fel i sSQL vid INSERT
Antingen gör man en insert eller en update!
Ska du uppdatera ett nr sker det med update where.
En insert sker utan where!
sSql = "INSERT INTO t_PersonData
( Förnamn,Efternamn, PersonNr,Adress, PostNr,Bostadsort,TelefonNummer,Mobil) "
sSql = sSql & "Values('" & Me![Förnamn] & "',
" & Me![Efternamn] & "',
" & Me![PersonNr] & "',
" & Me![Adress] & "',
" & Me![PostNr] & "',
" & Me![Bostadsort] & "',
" & Me![TelefonNummer] & "',
" & Me![Mobil] ")"
MsgBox sSql
Alternativt:
sSql = "update t_persondata set nr=" & nyttnr & " where nr=" & gammaltnrSv: Fel i sSQL vid INSERT
<code>
sSql = "UPDATE t_PersonData
SET t_PersonData.Förnamn = '" & Me![Förnamn] & "', t_PersonData.Efternamn = '" & Me![Efternamn] & "', t_PersonData.PersonNr = '" & Me![PersonNr] & "',
t_PersonData.Adress = '" & Me![Adress] & "',
t_PersonData.PostNr = '" & Me![PostNr] & "',
t_PersonData.Bostadsort = '" & Me![Bostadsort] & "', t_PersonData.TelefonNummer = '" & Me![TelefonNummer] & "', t_PersonData.Mobil = '" & Me![Mobil] & "'"
sSql = sSql & "WHERE (((t_PersonData.LoggNr)= " & strLoggNr & "))"
</code>
Det händer ingenting, och jag får heller inget felmedelande.
Vad det gäller är följande.
LoggNr ligger i följande serie
101 till 150
401 till 499
501 till 599
Anledning till detta är olika avdelninga som man tillhör, och det är viktigt att smidigt kunna växla till ett nytt loggNr.Sv: Fel i sSQL vid INSERT
SYNTAXFEL i Insert Into uttrycket.
Ja, den kanske ser riktig ut, men det är den som Perlemo påpekade inte. Skriv ut din SQL-sats, testa den i Query Analyzer, fungerar den där ska den fungera från din applikation. När du frågar här så klipp in den SQL-sats du kör, VB-koden som skapar den, så är det mycket enklare att se vad som är fel.Sv: Fel i sSQL vid INSERT
Jag försökte att ta ut en del(och omarbeta) i från en fråga i Access, men som sakt, den misslyckas helt.Sv: Fel i sSQL vid INSERT
Sv: Fel i sSQL vid INSERT
Så här ser SQL:en ut, utskriven...
UPDATE t_PersonData SET t_PersonData.Förnamn = 'Joakim', t_PersonData.Efternamn = 'von Anka', t_PersonData.PersonNr = '990909-1234', t_PersonData.Adress = '', t_PersonData.PostNr = '', t_PersonData.Bostadsort = '', t_PersonData.TelefonNummer = '', t_PersonData.Mobil = ''WHERE t_PersonData.LoggNr= 401
Kan du se några fel??
En tanke, jag får inga fel, men jag har byggt databasen som så att personnummer inte får vara dubbletter, kan det vara det som spöka??
Testade precis och fann att det inte var det som spökade.(jag lade personnummer i en variabel, tog bort det gammla personnummret, men icke)Sv: Fel i sSQL vid INSERT
En liten idé..
Är du säker på att LoggNr= 401 existerar ?
Du säger att du inte får några fel och att uppdatera noll rader är inget fel.
Om du däremot bryter mot några constraints, i ditt fall personnummer,
borde du fått ett fel.
Kommer inte ihåg i huvudet, men har för mig att connection objektet
innhåller ett attribut som visar hur många rader senaste DML satsen,
tex update, berörde.
/UffeSv: Fel i sSQL vid INSERT
400 till 499
500 till 599
Fortfarande inga error, och ingen on error resume next.
Han vägrar helt enkelt.
Hur skall jag annars kunna flytta ifrån ett loggnr till ett annat, någon idé?Sv: Fel i sSQL vid INSERT
Villkora på personnumret i stället för det andra numret.
update tabell set nr=nyttnr where persnr=var_persnr
Labba med att hitta den post du försöker uppdatera för att garantera att den finns.
Allt detta kan du köra i access med hjälp av frågor.
Du kan också (precis som föreg skribent påpekar) lägga på en long
på execute-metoden.
conn.execute sql, along
msgbox along & " poster påverkades av " & sql
för att se hur många poster som påverkats av sql-en.Sv: Fel i sSQL vid INSERT
Sv: Fel i sSQL vid INSERT
Det går inte att labba med någon annan post heller. Så här är det uppbyggt:
LoggNr Förnamn Efternamn Personnummer osv.
Alla loggnumren är utskrivna, men det är inte sagt att det finns någon person på alla loggnummren.
I detta fallet så skulle jag flytta all information som finns på loggnummer 101 till loggnummer 401.
Loggnummer är nyckel och indexerat.
En tanke vore det lättare att ändra bara loggnummren??Sv: Fel i sSQL vid INSERT
Skum db-design som vi kan lämna därhän.
Du har ett personregister som innehåller ett nr. Denna tabell har du preppat med alla valida nr. En person som finns på ett nr ska kunna flyttas till ett annat nr. Personnr är unikt.
1. uppdatera bort personen från gammalt nr. Annars får du rimligtvis duplicate key på personnumret.
2. uppdatera in personen på nytt nr.
Sql:en ser rätt ut.Sv: Fel i sSQL vid INSERT
På servern så är det mappat enligt loggnr. Därför så måste loggnr vara unikt. Man använder också loggnr för att logga in (plus pw).
Jag har försökt enligt ovan, men när jag använder
Set db = DBEngine(0)(0)
och SQL:en
Då händer absolut ingenting, och inga felmedelande.
DÄRIMOT....
Om jag ändrar lite granna,
<code>
sSql = "UPDATE t_PersonData
SET t_PersonData.Förnamn = "",
t_PersonData.Efternamn = "",
t_PersonData.PersonNr = "",
t_PersonData.Adress = "",
t_PersonData.PostNr = "",
t_PersonData.Bostadsort = "",
t_PersonData.TelefonNummer = "",
t_PersonData.Mobil = """
sSql = sSql & " WHERE t_PersonData.LoggNr= " & strLoggNrOld & ""
If Err.Number = 0 Then
DoCmd.RunSQL (sSql)
Else
MsgBox Err.Number & " " & Err.Description
End If
strLoggNr = InputBox("Skriv in det LoggNr som du vill byta det nuvarande LogNr till", "Resurshusetet i Växjö")
sSql = "UPDATE t_PersonData
SET t_PersonData.Förnamn = '" & Me![Förnamn] & "',
t_PersonData.Efternamn = '" & Me![Efternamn] & "',
t_PersonData.PersonNr = '" & strPersonnummer & "',
t_PersonData.Adress = '" & Me![Adress] & "',
t_PersonData.PostNr = '" & Me![PostNr] & "',
t_PersonData.Bostadsort = '" & Me![Bostadsort] & "',
t_PersonData.TelefonNummer = '" & Me![TelefonNummer] & "',
t_PersonData.Mobil = '" & Me![Mobil] & "'"
sSql = sSql & " WHERE t_PersonData.LoggNr= " & strLoggNr & ""
If Err.Number = 0 Then
DoCmd.RunSQL (sSql)
Else
MsgBox Err.Number & " " & Err.Description
End If
</code>
Då händer ialla fall lite. Tanken var ju att SQL:en skulle tömma alla rutorna(ta bort posterna) men den ersätts med ", t_PersonData.Adress = "
Ja, alla fälten får liknande text.
Därefter så får jag en medelandeskylt:
Det går inte att uppdatera alla posterna i uppdateringsfrågan.
0 fält uppdaterades inte pg av typkonverteringsfel,1 post pg av nyckelfel, 0 pg av verifieringsfel.
Det känns nästan som om jag har kört in i väggen...Sv: Fel i sSQL vid INSERT
1. Verifiera din sql innan du exekverar den.
Skriv till debugfönstret eller poppa en msgbox eller nåt.
2. Du bygger upp en sql sedan testar du på fel. Om inget fel exekverar
du och går vidare. Testa i stället att exekvera och sedan köra feltest.
3. Om delar av sql-satser landar i dina (bundna) textboxar är sql-en
fel. I den sql du visar i det senaste inlägget blandar du samman
dubbel- och singelfnuttar.
4. 'Handveva' uppdateringen. Nita in den färdiga SQL-en ditt program och
exekvera.
5. Att gå in i väggen är i dessa dagar ett slitet uttryck. Det du lider av är
lätt sql-ios ;).
Lycka till!
sSql = "UPDATE t_PersonData SET " & _
"t_PersonData.Förnamn =''," & _
"t_PersonData.Efternamn = ''," & _
"t_PersonData.PersonNr = ''," & _
"t_PersonData.Adress = ''," & _
"t_PersonData.PostNr = ''," & _
"t_PersonData.Bostadsort = ''," & _
"t_PersonData.TelefonNummer = ''," & _
"t_PersonData.Mobil = '' " & _
"WHERE t_PersonData.LoggNr= '" & strLoggNrOld & "'"
DoCmd.RunSQL (sSql)
If Err.Number <> 0 Then
MsgBox Err.Number & " " & Err.Description
else
strLoggNr = InputBox("Skriv in det LoggNr som du vill byta det nuvarande LogNr till", "Resurshusetet i Växjö")
sSql = "UPDATE t_PersonData
SET t_PersonData.Förnamn = '" & Me![Förnamn] & "', " & _
"t_PersonData.Efternamn = '" & Me![Efternamn] & "', " & _
"t_PersonData.PersonNr = '" & strPersonnummer & "', " & _
"t_PersonData.Adress = '" & Me![Adress] & "', " & _
"t_PersonData.PostNr = '" & Me![PostNr] & "'," & _
"t_PersonData.Bostadsort = '" & Me![Bostadsort] & "'," & _
"t_PersonData.TelefonNummer = '" & Me![TelefonNummer] & "'," & _
"t_PersonData.Mobil = '" & Me![Mobil] & "'," & _
" WHERE t_PersonData.LoggNr= '" & strLoggNr & "'"
DoCmd.RunSQL (sSql)
If Err.Number <> 0 Then
MsgBox Err.Number & " " & Err.Description
End
end if