i min access databas har jag skapat en lagrad procedur/(fråga) "summering", som ser ut som följer: Det första du bör göra är att inte lagra tal som text. Ersätt dina tomma strängar med null. tack, din SQL-kod fungerade alldeles utmärkt.. beskrev presis problemet/lösningen i ett anant forum: Det jag fastnar på är: det är alltså de data som varje fält ska innehålla.. Du har inte förklarat din datastruktur. Mata in olikadata i en tabell låter väldigt fel.makro i access, från ASP-sida?
<code>
SELECT Sum(fixString([tid1])) AS Summa FROM _P29
WHERE (([_P29].UserID)=73);
</code>
där den egendefinerade Module1/fixString() är:
<code>
Public Function fixString(inp As String) As Double
If inp = "" Then
fixString = 0
Else
fixString = CDbl(inp)
End If
End Function
</code>
Detta måste jag göra då tid1 är ett text-fält som endast innehåller tal (Borde eg vara av typen Double, för sent att ändra).Tomma fält motsvarar värdet 0. Om jag inte använder fixString får jag ett fel vid SUM() när ett av fälten är toma. Inte ens om jag typecastar med CDbl fungerar det. Därav fixString..
Frågan fungerar utmärkt i Access, men inte när jag försöker använda den från min ASP-sida.
Felmeddelande:
Feltyp:
Microsoft JET Database Engine (0x80040E14)
Ogiltigt SQL-uttryck. 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' eller 'UPDATE' förväntades.
http://localhost/HRMintranet/tid/resultat.asp, line 54
och min ASP-kod (rad 54):
<code>
objRS.Open "summering", objConn
</code>
Hur gör jag för att få detta att fungera?Sv: makro i access, från ASP-sida?
T.Ex.
UPDATE [_P29] SET [tid1] = Null
WHERE [tid1]
Ändra sedan datatypen till ett tal med precisionen double.
Om du inte har möjlighet att förändra din datastruktur kan du skriva om din fråga:
SELECT Sum(CDbl([tid1])) AS Summa
FROM _P29
WHERE (([_P29].UserID)=73) AND IsNumeric([tid1]);
Sv:makro i access, från ASP-sida?
Problemet är den att jag censurerade mitt inlägg lite, jag har fler än ett fält som jag vill summera.
så med din variant skulle det se ut såhär:
<code>
SELECT Sum(CDbl([tid1])) AS Tidbank1Summa, Sum(CDbl([tid0])) AS Tidbank0Summa, Sum(CDbl([tid2])) AS Tidbank2Summa, Sum(CDbl([milErs])) AS milErsSum, Sum(CDbl([tResaTid])) AS tResaTidSum, Sum(CDbl([tResaKr])) AS tResaKrSum, Sum(CDbl([fBil])) AS fBilSum
FROM _P29 WHERE ((([_P29].UserID)=73) AND ((IsNumeric([tid1]))<>False) AND ((IsNumeric([tid2]))<>False) AND ((IsNumeric([tid0]))<>False) AND ((IsNumeric([milErs]))<>False) AND ((IsNumeric([tResaTid]))<>False) AND ((IsNumeric([tResaKr]))<>False) AND ((IsNumeric([fBil]))<>False));
</code>
Vilket ju inte stämmer, för den tar inte med rader där ett av fälten är ""
:(Sv:makro i access, från ASP-sida?
http://www.aspsidan.se/default.asp?page=forum&menu=4&fp=showPost&pId=452486&Sida=1
Se det senaste inlägget så kanske du förstår vad jag menar..
Kom gärna med alternativa lösningar.
MvH, HbSv: makro i access, från ASP-sida?
<b>(tid, kr, Dbl, int osv)</b>
Det låter som din databas design bör tänkas om. Kan du inte förklara hur du strukturerat din databas.Sv:makro i access, från ASP-sida?
Vissa tider ska sparas i formen x.x tex 6h42min => 6,7. medans andra ska sparas som 06:42
Just nu har jag bara textfiler, för att kunna skriva in allt på samma sätt.Sv: makro i access, från ASP-sida?