Avatar billede bobbedude Nybegynder
27. august 2002 - 14:49 Der er 8 kommentarer og
3 løsninger

SQL InStr

Dette skulle opdater min database.
hvis den gamle post var /test/test2/ og den nye /test/test22/
Ville den opdater alle poster der indeholder /test/test2/ men det gør den bare ikke.

set connect = server.createobject("ADODB.Connection")
Connect.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("../db/"&database&"")
SQL = "UPDATE billeder SET billeddir = IIf(InStr(1,[billeddir],'" &  nysti & "')>0, '"& glsti &"', billeddir);"
response.write (SQL)
Connect.Execute(SQL)
set Connect = Nothing
Avatar billede lange Nybegynder
27. august 2002 - 14:55 #1
Hvordan ser den SQL-query, som du rent faktisk udfører, ud (outputtet fra din response.write(SQL) )?

Får du en fejlbesked, sker der bare ingenting eller noget helt tredje?
Avatar billede bobbedude Nybegynder
27. august 2002 - 14:57 #2
UPDATE billeder SET billeddir = IIf(InStr(1,[billeddir],'/mediebank/images/demo/Folderen-ny')>0, '/mediebank/images/demo/Folderen', billeddir);

Men der sker ikke noget i databasen
Avatar billede lange Nybegynder
27. august 2002 - 15:07 #3
Jeg vil umiddelbart gætte på, at det skyldes, at '/mediebank/images/demo/Folderen-ny' ikke indgår som en del af nogle af billeddir-felterne.

Husk på, at InStr er case-sensitiv med mindre du angiver 1 som den fjerde parameter.

Som sidebemærkning, ville jeg skrive din query som

UPDATE billeder SET billeddir = '/mediebank/images/demo/Folderen-ny' WHERE InStr( 1, billeddir, '/mediebank/images/demo/Folderen-ny' ) > 0

fremfor at anvende den (svjv) Access-specifikke Iif-konstruktion.
Avatar billede keysersoze Ekspert
27. august 2002 - 15:12 #4
en kæmpe stor fejl er i hvert fald at du manglere en WHERE i din update
Avatar billede bobbedude Nybegynder
27. august 2002 - 15:21 #5
jeg kan ikke bruge det du skriver fordi jeg har eks.
/mediebank/images/demo/Folderen-ny
/mediebank/images/demo/Folderen-ny/demo
/mediebank/images/demo/Folderen-ny/demo/demo

vil jeg med dit forslag kun omdøbe det første dir og ikke de næste 2
Avatar billede bobbedude Nybegynder
27. august 2002 - 15:24 #6
keysersoze >> hvor skulle WHERE være ?
Avatar billede lange Nybegynder
27. august 2002 - 15:53 #7
Ups, jeg fik skrevet min SQL-sætning forkert, der skulle have stået

UPDATE billeder SET billeddir = '/mediebank/images/demo/Folderen' WHERE InStr( 1, billeddir, '/mediebank/images/demo/Folderen-ny' ) > 0

hvilket gerne skulle være en omskrivning af din oprindelige SQL-sætning, og altså gøre nøjagtigt det samme.

Det du prøver på at gøre, er at sætte alle billeddir til at være '/mediebank/images/demo/Folderen', hvor billeddir indeholder strengen '/mediebank/images/demo/Folderen-ny', right?

Har du prøvet at lave en:

SELECT InStr( 1, billeddir, '/mediebank/images/demo/Folderen-ny' ) > 0

for at se, om InStr overhovedet returnerer det, du forventer? Hvis den query giver en række 0'er har du der dit svar på, hvorfor det ikke virker.
Avatar billede bobbedude Nybegynder
28. august 2002 - 07:43 #8
SQL = "UPDATE billeder SET billeddir = IIf(InStr(1,[billeddir],'" &  nysti & "')>0, '"& glsti &"', billeddir);"

Skulle have været

SQL = "UPDATE billeder SET billeddir = IIf(InStr(1,[billeddir],'" &  glsti & "')>0, '"& nysti &"', billeddir);"
Avatar billede bobbedude Nybegynder
28. august 2002 - 07:44 #9
Lang >>
keysersoze >>

Smider i ikke et svar så deler vi lige de point, for i prøvede jo at hjælpe.
Avatar billede keysersoze Ekspert
28. august 2002 - 10:14 #10
joh - hvis du mener det er point værd :)
Avatar billede bobbedude Nybegynder
28. august 2002 - 10:43 #11
det gør jeg da, nogen gange er det jo tanken bag der tæller :ø)
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
Kurser inden for grundlæggende programmering

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