Avatar billede telesde Nybegynder
02. november 2007 - 10:27 Der er 11 kommentarer

sql update forespørgsel.

Hej mednørder.

Jeg sidder og roder midt med access og er lidt i tvivl om hvad der går galt i min kode.

min sql streng er som føler:
UPDATE DEH SET DEH.Tlftype = "Mobil"
WHERE Mid(DEH.Tlf,1,2) In ('20:29','30:31','40:42','50:53','60:61') Or DEH.Tlf Like "2%";

UPDATE DEH SET DEH.Tlftype ="Fastnet"
WHERE Mid(DEH.Tlf,1,2) In ('32:39','43:49','54:59','62:69',72:79','82','86:89','96:99') Or DEH.Tlf Like "2%";

UPDATE DEH SET DEH.Tlftype =Ukendt"
WHERE Mid(DEH.Tlf,1,2) Not match ("Fastnet" and "Mobil")

hvad går der helt præcis galt ? den melder ikke om nogen fejl, men den opdatere ingen rækker i tabellen med nogen status.
Avatar billede erikjacobsen Ekspert
02. november 2007 - 10:31 #1
Hvad forventer du at

  Mid(DEH.Tlf,1,2) In ('20:29', ...

gør?
Avatar billede telesde Nybegynder
02. november 2007 - 10:36 #2
at den tager det første 2 cifre i telefon numret, og tjecket om det ligger inden for et et af de ønskede værdier, og hvis ja så for felttet Tlftype status som mobil, eller fastnet, eller ukendt.
Avatar billede erikjacobsen Ekspert
02. november 2007 - 10:59 #3
Nej, det gør den ikke. Konstruktionen '20:29' findes slet ikke i SQL. Du kan derimod:

  Mid(DEH.Tlf,1,2) In ('20','21,'22,'23,'24,'25','26','27','28','29', ...
Avatar billede telesde Nybegynder
02. november 2007 - 11:12 #4
der er ikke en nemmere betode? end at angive det sådan ?
Avatar billede erikjacobsen Ekspert
02. november 2007 - 11:18 #5
Joh, du kan lave en tabel med rækker, der indeholder hver er tal, '20', og så bruge noget i retning af  ... Mid(DEH.Tlf,1,2) In (SELECT nummer FROM dintabel)...

Men er det ikke efterhånden sådan, at man ikke længere kan være sikker på at kunne se på et nummer, om det er mobil eller fastnet....?
Avatar billede telesde Nybegynder
02. november 2007 - 11:27 #6
nej du kan ikke få overflyttet "endnu" et mobil numre til et fastnet nummer. "endnu".

min streng ser således ud nu :
UPDATE DEH SET DEH.Tlftype = "Mobil"
WHERE Mid(DEH.Tlf,1,2) In ('20','21','22','23','24','25','26','27','28','29','30','31','40','41','42','50','51','52','53','60','61') Or DEH.Tlf Like "2%";

UPDATE DEH SET DEH.Tlftype ="Fastnet"
WHERE Mid(DEH.Tlf,1,2) In ('32','33','34','35','36','37','38','39','43','44','45','46','47','48','49','54','55','56','57','58','59','62','63','64','65','66','67','68','69','72','73','74','75','76','77','78','79','82','86','87','88','89','96','97','98','99') Or DEH.Tlf Like "2%";

her melder den så bare om fejl i sql sætningen
Avatar billede erikjacobsen Ekspert
02. november 2007 - 11:36 #7
Er det ikke noget med at teleselskaberne burde tilbyde allerede ... ? Nå, ligemeget.

Hvad skriver den som fejl?
Avatar billede telesde Nybegynder
02. november 2007 - 11:46 #8
Der er fundet fejl efter slutningen af sql sætningen.
Avatar billede telesde Nybegynder
02. november 2007 - 11:58 #9
det er det access skriver, er der nogle steder man kan se det mere præcist?
Avatar billede erikjacobsen Ekspert
02. november 2007 - 12:04 #10
Jeg ved ikke hvordan Access kan skrive bedre fejlmeddelelser. Umiddelbart kan jeg ikke se fejl, men jeg ved heller ikke hvad jeg skal kigge efter. Jeg ville dog altid bruge '..' og ikke ".." for kompatibilitet, men det er ikke derfor.
Avatar billede terry Ekspert
02. november 2007 - 18:36 #11
I wouldnt have thought you can have more than one SQL statement in the same SQL string
Try just one of the UPDATE statements first to see if it works on its own.
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