Avatar billede -anders- Juniormester
26. oktober 2004 - 21:01 Der er 15 kommentarer og
2 løsninger

Opdateringsforespørgsel

Hej eksperter
I en tabel "tblmidifiler" har jeg et felt "Midifil" feltet er af typen Notat. Værdien i dette felt henviser til en fil på c:\ feks. C:\Midififiler\data\test.mid.

Hvis jeg nu vil ændre drevbogstavet C til feks. D, og kun det dvs. at hele strengen efter drevbogstavet ikke skal ændres, det skulle så gerne se sådan ud D:\Midifiler\data\test.mid

Jeg havede tænkt mig at det måske kunne køre via en alm. opdateringsforespørgsel, hvor brugen feks. promtes for angivelse af nyt drevbogstav i en inputbox, når brugeren så har tastet det nye drevbogstav, og klikker Ok, skal opdateringsforespørgsel køre og opdatere til det nye drevbogstav brugeren har tastet.

Det er ikke noget must at det skal køre via en opdateringsforespørgsel, men tænkte at det måske var det nemmeste,Er dette muligt.
Avatar billede nih Novice
26. oktober 2004 - 22:05 #1
Jeg har en tilsvarende db - blot med billeder

Der er stien opdelt i 3 tabeller: tRod, tBibl og tFil
i en foresp samler jeg hele stien: sti: trod!rod & tBibl!bibl & tFil!FilNavn

Her har jeg let ved at ændre rodbiblioteket for alle filer og oprette underbiblioteker herunder der passer med mine billeder.

Blot et forslag til en mere fleksibel tabel struktur :)

Niels
26. oktober 2004 - 22:08 #2
Hvad bare med denne:

Update tblmidifiler Set Midifil = [Angiv drevbogstav] & Mid(Midifil,2)
Avatar billede -anders- Juniormester
26. oktober 2004 - 22:14 #3
Hej tak for indlægende ,jeg tester lige og vender tilbage om lidt
Avatar billede nih Novice
26. oktober 2004 - 22:15 #4
Hej Thomas

Jeg prøvede også - min sql er testet :)

UPDATE tbl SET felt = [indtast drevbogstav] & Mid([felt],2);

Niels
Avatar billede -anders- Juniormester
26. oktober 2004 - 22:19 #5
Hej har testet og foreslaget fra Thomas virker perfekt, hvis man nu ville gøre det lidt mere elegant, så jeg bliver promtet med en inputbox via vba i stedet for parameterbox direkte fra opdateringsforespørgsel ville det være endnu mere perfekt,kan man det :)
Avatar billede -anders- Juniormester
26. oktober 2004 - 22:20 #6
OBS. svar fra 26/10-2004 22:08:09 er ok, og point bliver givet :)
Avatar billede -anders- Juniormester
26. oktober 2004 - 22:24 #7
Niels> Dit forslag lyder ganske godt, men er måske lidt overkill i den aktuelle opgave, men for point naturligvis :) ville jeg da gerne se et eks.
Avatar billede nih Novice
26. oktober 2004 - 22:25 #8
sub skiftDrev()
  dim drev as string
  drev = inputbox "indtast drev"

  docmd.runsql "UPDATE tbl SET felt =" & drev & "& Mid([felt],2);"
end sub
Avatar billede nih Novice
26. oktober 2004 - 22:27 #9
Ja, men ofte kommer der udvidelser til sådanne db'er. Så kan man lige så godt være forudseende :)
26. oktober 2004 - 22:32 #10
En enkelt fejl i din Inputbox-syntaks.

Derudover ville jeg nok lægge lidt validering:

sub skiftDrev()
  dim drev as string
  drev = inputbox("indtast drev")
  Select Case Len(Drev)
    case 1
      docmd.runsql "UPDATE tbl SET felt =" & drev & "& Mid([felt],2);"
    case 0
    case else
        msgbox "Du må kun angive ét bogstav!", vbcritical, "fejl i drevbogstav!"
  end select
end sub
Avatar billede -anders- Juniormester
26. oktober 2004 - 22:32 #11
Ja, det sker ofte, Thomas havede jo det korrekte svar så points går til ham, håber det ok, jeg vil også gerne give dig point hvis jeg kunne se en testdb med din tabelstruktur evt. i et nyt spørgsmål.

>thomas, mange tak for hjælpen endnu engang

mvh Anders.
Avatar billede nih Novice
26. oktober 2004 - 22:32 #12
docmd.runsql "UPDATE tbl SET felt = '" & drev & "' & Mid([felt],2);"

Der kan du se - jeg er nødt til at teste
26. oktober 2004 - 22:33 #13
ja, niels, jeg sad også lige og tænkte på, at der skulle pling'er omkring :o)
26. oktober 2004 - 22:35 #14
tak for point, Anders :o)
Avatar billede -anders- Juniormester
26. oktober 2004 - 23:25 #15
Hæ lige en finte:
Når jeg køre denne:

Dim drev As String
  drev = InputBox("Angiv bogstav på det nye drevbogstav i feltet midifil!", "Angiv nyt drevbogstav")
  Select Case Len(drev)
    Case 1
      DoCmd.RunSQL "UPDATE tblmidifiler SET Midifil =" & drev & "& Mid([Midifil],2);"
    Case 0
    Case Else
        MsgBox "Du må kun angive ét bogstav!", vbCritical, "Fejl i drevbogstav!"
  End Select

Bliver jeg efter at have indtastet det nye drevbogstav i inputboxen prometet for det en gang til "Indtast prameterværdi" hvis jeg indtaster det en gang til her køre opdateringen fint nok, men det ville være fint hvis den sidste promt kunne undgåes.

Hvis der skal oprettes et nyt spørgsmål er det ok med mig :)

Anders
27. oktober 2004 - 09:05 #16
nåå, men det var jo fordi, jeg aldrig fik lagt pling'erne ind i koden :o(

Prøv denne:

Dim drev As String
  drev = InputBox("Angiv bogstav på det nye drevbogstav i feltet midifil!", "Angiv nyt drevbogstav")
  Select Case Len(drev)
    Case 1
      docmd.Setwarnings False
      DoCmd.RunSQL "UPDATE tblmidifiler SET Midifil ='" & drev & "' & Mid([Midifil],2);"
      docmd.Setwarnings true
    Case 0
    Case Else
        MsgBox "Du må kun angive ét bogstav!", vbCritical, "Fejl i drevbogstav!"
  End Select

PS: Fjernede også lige advarslerne...
Avatar billede -anders- Juniormester
27. oktober 2004 - 18:07 #17
>Thomas, bingo så var den der endnu engang tak for hjælpen.
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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