Avatar billede websam Nybegynder
30. september 2005 - 08:33 Der er 24 kommentarer og
1 løsning

Felt type notat i access database ?

Hejsa,

Når jeg skal benytte mig af OleDbType i forbindelse med parameters.add til en access database hvad er notat så lig med i OleDbType ?

/Websam
Avatar billede arne_v Ekspert
30. september 2005 - 08:40 #1
OleDbType.LongVarChar

eller

OleDbType.VarWChar

tror jeg
Avatar billede websam Nybegynder
30. september 2005 - 08:48 #2
ok det var så alligevel ikke det der drillede kan jeg se. Jeg får denne fejl :

Exception Details: System.Data.OleDb.OleDbException: Datatyperne stemmer ikke overens i kriterieudtrykket.

Og det opstår udfra denne Sql :

Dim objComm = New OleDbCommand
objComm.Parameters.Add("@Language", OleDbType.VarChar)
objComm.Parameters.Add("@LinkName", OleDbType.VarChar)
objComm.Parameters.Add("@Id", OleDbType.Integer)
objComm.Parameters("@Language").Value = Language
objComm.Parameters("@LinkName").Value = LinkName
objComm.Parameters("@Id").Value = Id

objComm.CommandText = "Update tbl_textlinks Set getLanguage = @Language, LinkName = @LinkName Where TextId = @Id"
objComm.ExecuteNonQuery()

Med felt typer på TextId = tal, getLanguage = tekst, LinkName = tekst kan du se at der skulle være nogle fejl ud fra det ?

/Websam
Avatar billede arne_v Ekspert
30. september 2005 - 09:24 #3
Har du et felt TextId af typen Integer ?
Avatar billede websam Nybegynder
30. september 2005 - 09:25 #4
feltet TextId er af typen tal det er måske ikke det samme som integer ?
Avatar billede arne_v Ekspert
30. september 2005 - 09:29 #5
Hvilken form for tal ?
Avatar billede websam Nybegynder
30. september 2005 - 09:31 #6
Det er sat til langt heltal
Avatar billede arne_v Ekspert
30. september 2005 - 09:37 #7
så er Integer ok
Avatar billede arne_v Ekspert
30. september 2005 - 09:38 #8
prøv evt. at sætte en længde på:

objComm.Parameters.Add("@Language", OleDbType.VarChar, 50)
objComm.Parameters.Add("@LinkName", OleDbType.VarChar, 200)
Avatar billede websam Nybegynder
30. september 2005 - 09:41 #9
Det giver samme resultat :

Datatyperne stemmer ikke overens
Avatar billede arne_v Ekspert
30. september 2005 - 10:35 #10
prøv og ret din SQL streng fra @xxx til ?
Avatar billede arne_v Ekspert
30. september 2005 - 10:36 #11
men bare behold @xxx i parameters
Avatar billede arne_v Ekspert
30. september 2005 - 10:37 #12
Dim objComm = New OleDbCommand
objComm.Parameters.Add("@Language", OleDbType.VarChar)
objComm.Parameters.Add("@LinkName", OleDbType.VarChar)
objComm.Parameters.Add("@Id", OleDbType.Integer)
objComm.Parameters("@Language").Value = Language
objComm.Parameters("@LinkName").Value = LinkName
objComm.Parameters("@Id").Value = Id
objComm.CommandText = "Update tbl_textlinks Set getLanguage = ?, LinkName = ? Where TextId = ?"
objComm.ExecuteNonQuery()
Avatar billede websam Nybegynder
30. september 2005 - 10:44 #13
Jeg får stadig den samme fejl :

Exception Details: System.Data.OleDb.OleDbException: Datatyperne stemmer ikke overens i kriterieudtrykket.
Avatar billede websam Nybegynder
30. september 2005 - 12:08 #14
Nu har jeg så lige prøvet at hardkode TextId = 1 og så virker det så altså må der være noget jeg misser i den forbindelse.

kan det have noget at sige at feltet ikke er autonummeret ?
Avatar billede arne_v Ekspert
30. september 2005 - 20:03 #15
hvor er din connection ?
Avatar billede arne_v Ekspert
30. september 2005 - 20:05 #16
og variablem Id er af typen Integer ?
Avatar billede arne_v Ekspert
30. september 2005 - 20:08 #17
følgende virker nemlig hos mig:

Imports System
Imports System.Data.OleDb

Module Main
    Sub Main()
        Dim objConn As OleDbConnection = New OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Databases\MSAccess\Test.mdb;")
        objConn.Open
        Dim objComm = New OleDbCommand
        objComm.Connection = objConn
        objComm.CommandText = "Update tbl_textlinks Set getLanguage = ?, LinkName = ? Where TextId = ?"
        objComm.Parameters.Add("@Language", OleDbType.VarChar, 50)
        objComm.Parameters.Add("@LinkName", OleDbType.VarChar, 50)
        objComm.Parameters.Add("@Id", OleDbType.Integer)
        objComm.Parameters("@Language").Value = "Et sprog"
        objComm.Parameters("@LinkName").Value = "Et link navn"
        objComm.Parameters("@Id").Value = 1
        objComm.ExecuteNonQuery
        objConn.Close
    End Sub
End Module
Avatar billede websam Nybegynder
30. september 2005 - 23:31 #18
Hmmmm......jeg ved sq ikke helt hvad der sker, men nu har computeren stået slukket et par timer og nu virker det og jeg har ikke ændret en disse, men smid et svar så kommer der point ;o)

En anden ting der undrede mig var oxo at den gerne ville acceptere en update der sker i en anden tabel i samme function og oven i købet med samme id det var ikke helt til at fatte .o0

/Websam
Avatar billede arne_v Ekspert
30. september 2005 - 23:32 #19
tja
Avatar billede websam Nybegynder
30. september 2005 - 23:33 #20
Og min connection ligger i en anden klasse, det kiggede vi vist på forleden dag ;o)

/Websam
Avatar billede websam Nybegynder
30. september 2005 - 23:43 #21
Og er troede jeg lige det hele var så godt men nej, det virker stadigt ikke !

Min function ser således Ud :

Public Function TextEdit(ByVal Language As String, _
                        ByVal Headline As String, _
                        ByVal LinkName As String, _
                        ByVal Description As String, _
                        ByVal Id As Integer)
    Dim objDb As DbClass = New DbClass
    Dim objComm = New OleDbCommand
    objComm.Parameters.Add("@Language", OleDbType.VarChar)
    objComm.Parameters.Add("@Headline", OleDbType.VarChar)
    objComm.Parameters.Add("@LinkName", OleDbType.VarChar)
    objComm.Parameters.Add("@Description", OleDbType.LongVarChar)
    objComm.Parameters.Add("@GroupBy", OleDbType.VarChar)
    objComm.Parameters.Add("@Id", OleDbType.Integer)
    objComm.Parameters("@Language").Value = Language
    objComm.Parameters("@Headline").Value = Headline
    objComm.Parameters("@LinkName").Value = LinkName
    objComm.Parameters("@Description").Value = Description
    objComm.Parameters("@GroupBy").Value = UCase(Left(LinkName, 1))
    objComm.Parameters("@Id").Value = Id
    objComm.Connection = objDb.AccessConnect
    Try
        objComm.CommandText = "Update tbl_text Set getLanguage = @Language, Headline = @Headline, LinkName = @LinkName, Description = @Description, GroupBy = @GroupBy Where Id = @Id"
        objComm.ExecuteNonQuery()
        objComm.CommandText = "Update tbl_textlinks Set getLanguage = @Language, LinkName = @LinkName Where TextId = @Id"
        objComm.ExecuteNonQuery()
    Catch ex As Exception
        Return ex.Message
    Finally
        objDb.AccessClose()
    End Try
    Return "True"
End Function

Den første update der køre virker ganske fint men nummer 2 går barre ud i den samme fejl ???????

/Websam
Avatar billede arne_v Ekspert
30. september 2005 - 23:45 #22
prøv lige at sæt det relevante parametre igen
Avatar billede arne_v Ekspert
30. september 2005 - 23:45 #23
eller endnu bedre brug en anden kommando og sæt dem igen
Avatar billede websam Nybegynder
30. september 2005 - 23:46 #24
Hvad tænker du på ?
Avatar billede arne_v Ekspert
02. oktober 2005 - 20:23 #25
Dim objComm2 = New OleDbCommand
og så sæt alle parametre på den
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester