Jag struntar snart i att försöka fatta mej på det här med databaser.... Har du kontrollerat vad SQLNumber(Timmar) returnerar? Är Projektnummer ett tal i databasen? I sådana fall ska sista raden vara såhär: Det blir fortfarande "Typblandningssfel i Vilkorsuttryck" >SET SummaTim = SummaTim + " & SQLNumber(Timmar) & vbCrLf >Om SummaTim är ett tal så kan du summera enligt ovan. Men jag tror inte du kan ta med vbCrlf i en summa >Vad är det för datatyper på fälten i databasen? Hur anropar du proceduren? Vilka värden har Timmar och ProjektNr?Mer "Typblandningssfel i Vilkorsuttryck"
Jag får "Typblandningsfel i vilkorsuttryck" i Dcon.Execute strSQL
i följande kod snutt:
Public Function SparaProjektTimmar(Timmar As Variant, Projektnr As Variant)
Dim Dcon As ADODB.Connection
Dim strSQL As String
Dim DBFileName As String
DBFileName = GetIni("Databasinfo", "Path", App.Path & "\info.ini")
Set Dcon = New ADODB.Connection
Dcon.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Persist Security Info=False;" & _
"Data Source=" & DBFileName
SummaTim = frmNYDag.textTimmar.Text
strSQL = "UPDATE TBL_Projektlogg SET SummaTim = SummaTim + " & SQLNumber(Timmar) & vbCrLf & _
"WHERE ProjektNummer='" & Projektnr & "'"
Dcon.Execute strSQL
Dcon.Close
End Function
Aropas så här: SparaProjektTimmar textTimmar.Text, txtProjektNr.Text
Det funka, sen hände något och jag började få "Typbl.......................", vet ej vad jag har gjort.
Om det finns någon som är säker på databaser/vb som har tid och lust så skulle nog mitt program ses över och rätas till lite grand.
/TomasSv: Mer "Typblandningssfel i Vilkorsuttryck"
"WHERE ProjektNummer=" & Projektnr
/JohanSv: Mer "Typblandningssfel i Vilkorsuttryck"
Sv: Mer "Typblandningssfel i Vilkorsuttryck"
Vad vill du göra med SummaTIM??
Är det en sträng eller ett tal?
vbCrLf (byt rad ? )
Om SummaTim är ett tal så kan du summera enligt ovan. Men jag tror inte du kan ta med vbCrlf i en summa
prova:
>SET SummaTim = SummaTim + " & SQLNumber(Timmar)
NettanSv: Mer "Typblandningssfel i Vilkorsuttryck"
vbCrLf ger bara en radbrytning i SQL-koden i detta fallet (eftersom den inte ligger i en sträng) och BÖR inte ha någon betydelse i detta fallet, fördelen är väl att det är lättare att felsöka om man skriver ut SQL-uttrycket.
Vad är det för datatyper på fälten i databasen?
/JohanSv: Mer "Typblandningssfel i Vilkorsuttryck"
Datatypen är Type=12 det måste bli memo tror jag, detta är min första databas så jag tog nog memo på allt utom ID fälten där jag tog Long
>Vad vill du göra med SummaTIM??
>Är det en sträng eller ett tal?
Jag vill addera SummaTim med värdet som redan finns i fältet i databasen.
Det är ett tal.
Koden såg ut så här från början men det funkade inte:
<code>
Public Function SparaProjektTimme()
Dim SummaTim As String
Dim DBFileName As String
Dim Dcon As ADODB.Connection
Dim RS As ADODB.Recordset
DBFileName = App.Path & "\Dagbok.mdb"
Set Dcon = New ADODB.Connection
Set RS = New ADODB.Recordset
Dcon.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Persist Security Info=False;" & _
"Data Source=" & DBFileName
SummaTim = frmNYDag.textTimmar.Text
RS.Open "UPDATE TBL_Projektlogg Set SummaTim = SummaTim + frmNYDag.textTimmar.Text WHERE ProjektNummer='" & frmNYDag.txtProjektNr.Text & (SummaTim) & Values(" & "" & SummaTim & "" & "), Dcon
Dcon.Close
End Function
</code>
/TomasSv: Mer "Typblandningssfel i Vilkorsuttryck"
Denna rad vill jag att du förklarar:
SummaTim = frmNYDag.textTimmar.Text
Tycker du bör lägga till Option Explicit överst i alla dina moduler.
För er som undrar hur SQLNumber ser ut:
Public Function SQLNumber(Value As Variant) As String
If IsNumeric(Value) Then
SQLNumber = Replace(CStr(Value),Format$(0,"."),".")
Else
SQLNumber = "0"
End If
End Function