Avatar billede puppetmaster Nybegynder
30. september 2004 - 13:35 Der er 8 kommentarer og
1 løsning

Ændre værdier i database

I forbindelse med en Access frontend som benytter en SQL Server backend, skal jeg have ændret en masse værdier. De værdier der skal ændres er værdier fra checkfelter på en Access formular. I Access er tabelfelttypen Ja/Nej, i SQL Server er den Smallint (da jeg ikke kan bruge type Bit).
Access bruger jo -1 til Ja og 0 til Nej, hvor værdierne som ligger i SQL Serveren er 0 for Nej og 1 for Ja (feltet er checket).
Så nu skal jeg have ændret værdierne fra 1 til -1 i SQL tabellerne. Der er ca. 20 tabeller der skal checkes, hvordan gøres det nemmest?
Avatar billede arne_v Ekspert
30. september 2004 - 14:03 #1
Kigger i tabel oversigten og fyrer en UPDATE sætning af for hver tabel og kolonne
med problemet.

Man kan skrive kode der søger i alle tabeller efter kolonner af den type
og dynamisk udfører en UPDATE for hver, men det tager 5 gange så lang tid at
lave det program som at fyre de UPDATE sætninger af manuelt.
Avatar billede puppetmaster Nybegynder
30. september 2004 - 14:25 #2
Det regnede jeg også med at det ville tage, 5 gange så lang tid, håbede der var én eller anden der lå inde med en stump kode...
Avatar billede arne_v Ekspert
30. september 2004 - 15:14 #3
Hvis jeg skulle forsøge at lave noget kode.

Hvilket sprog skal det være i ?
Avatar billede puppetmaster Nybegynder
01. oktober 2004 - 08:17 #4
Meget gerne med et SQL script som kan afvikles i Query Analyzer. Selvfølgelig opper jeg pointene...
Avatar billede puppetmaster Nybegynder
01. oktober 2004 - 08:40 #5
Så scriptet skulle kunne gennemsøge en given database, i alle tabeller (usertables) efter felter som har typen SmallInt og ændre alle dem der har værdien 1 til værdien -1.
Avatar billede puppetmaster Nybegynder
01. oktober 2004 - 08:43 #6
Det er LIDT træls at først skulle finde de tabeller der indeholder checkfelter (manuelt ved at kigge i frontend'en eller selve tabellerne), dernæst at notere alle felter som er af typen SmallInt for dernæst at køre denne SQL UPDATE:

UPDATE "Min tabel"
    SET "Mit felt" = -1
    WHERE "Mit felt" = 1

3 databaser, 20 tabeller, ca. 30 checkfelter....suk!
Avatar billede puppetmaster Nybegynder
01. oktober 2004 - 10:49 #7
Tja, jeg har fundet ud af at der også er felter i databasen som er af typen SmallInt, men som IKKE er "linket" til afkrydsningsfelter i frontend'en! :(
Så jeg må gennemså databasen slavisk! :(
Avatar billede puppetmaster Nybegynder
01. oktober 2004 - 12:04 #8
Nå, det var ikke så galt alligevel. 3 databaser, 3 tabeller med tilsammen 6 felter (fik vist overdrevet med de 30 checkfelter! :(  ), lige til at overkomme.
Smid et svar, arne, du skal da have point for hjælpen.
Avatar billede arne_v Ekspert
01. oktober 2004 - 16:11 #9
ok
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
Computerworld tilbyder specialiserede kurser i database-management

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