webForumDet fria alternativet
Logga in / Bli medlem

Fel på insert

Databaser & SQL

6 svar · 220 visningar · startad av saw

Medlem sedan mars 20011 880 inlägg
Frågan#1

Jag får fel på denna Inserten.
Jag skall bara uppdatera ett fält, kan man inte göra så här?

     minDB.Execute ("INSERT INTO t_album(album) VALUES( '" & strAlbum & "'")

just nu så jobbar jag i VB så det är lite okänd mark för mig...

Medlem sedan dec. 200012 464 inlägg
#2

SQL-mässigt så ser det helt rätt ut.

Vad får du för fel?

Medlem sedan mars 20011 880 inlägg
#3

Jag får Syntax error in In INSERT INTO.
Så här ser allt ut.

Dim strAlbum As String
    Set mittRS1 = minDB.OpenRecordset("SELECT album FROM t_album ORDER BY album", dbOpenDynaset)
If Text1.Text = LCase(mittRS1!Album) Then
    Label1.Caption = " Det finns redan en CD med det namnet."
Else
    
    strAlbum = Text1.Text
      minDB.Execute ("INSERT INTO t_album(album) VALUES( '" & strAlbum & "'")
    Label1.Caption = " Nu sparas CD:n med namnet: " & Text1.Text
    Text1.Text = ""
    Command1.Caption = "OK"
    Fyll_Lista
End If
mittRS1.Close
Command1.Enabled = False

Några förslag?

Medlem sedan dec. 200012 464 inlägg
#4

En anledning till att du får fel kan vara att strAlbum innehåller en '. I så fall måste du ersätta varje apostrof med två.

minDB.Execute ("INSERT INTO t_album(album) VALUES( '" & replace(strAlbum,"'","''") & "'")

Sen så är din kod för att kontrollera om ett album finns inte heltäckande. Du testar bara att den första posten du får inte är samma som den du vill lagra

Set mittRS1 = minDB.OpenRecordset("SELECT album FROM t_album where album = '" & replace(strAlbum,"'","''") & "'", dbOpenDynaset)
if not mittRS1.eof then
Label1.Caption = " Det finns redan en CD med det namnet."
Else
    'insert

(Nu vet jag inte om det ser ut så här i VB (t.ex. EOF)).

Medlem sedan juni 200032 967 inlägg
#5

En sak som LarsG missat, och även jag själv vid de första genomläsningarna av koden; det saknas en slutparentes i din SQL-fråga. Det bör alltså se ut så här:

minDB.Execute ("INSERT INTO t_album(album) VALUES( '" & replace(strAlbum,"'","''") & "')")

Mvh,

Medlem sedan mars 20011 880 inlägg
#6

Tack Anders och LarsG, men nu hände någonting lustigt.
Jag fick felmedelande, men likväl så la han in det i databasen.
Vad gör jag för att slippa error?
Felet jag får nu är:
Fel: 3420 was generated by DAO.Recordset Object Invalid or no longer set.

Det blir fel här med, den godkänner dubbleter....

    Set mittRS1 = minDB.OpenRecordset("SELECT album FROM t_album where album = '" & Replace(strAlbum, "'", "''") & "'", dbOpenDynaset)

Vad tror ni?

Medlem sedan mars 20011 880 inlägg
#7

Fel av mig :r .

Felet var ett förargligt slarvfel:
mittRS1.Close
(jag använder ju inte det!!!)
Tack för all hjälp.

267 ms totalt · 4 externa anrop · v20260731065814-full.df76c93f
134 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)