Avatar billede Slettet bruger
27. februar 2005 - 21:35 Der er 17 kommentarer og
1 løsning

problemer med NOVALIDATE

ALTER TABLE testing ALTER [done by] timestamp NOVALIDATE

giver "syntax error in ALTER TABLE statement"

uden NOVALIDATE kommer der ikke nogen fejl..
28. februar 2005 - 06:03 #1
jeg mener heller ikke at Novalidate duer i Access...
Avatar billede Slettet bruger
28. februar 2005 - 07:11 #2
er der så et alternativt kald, der virker i access?
28. februar 2005 - 09:03 #3
jeg kan ikke huske, hvad NOVALIDATE gør, så jeg kan ikke lige svare på hvad den skulle hedde i Access. Jeg kunne heller ikke finde NOVALIDATE i Books Online til SQl server.
Hvad gør den?
Avatar billede Slettet bruger
28. februar 2005 - 16:28 #4
den foretager alter table selvom der kommer type mismatch i konverteringen. jeg skal jo have lavet [done by] om til et timestamp fra en varchar (255), og da nogle af værdierne er tekst, er det ikke muligt... jeg fandt den på http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fox7help/html/lngalter_table___sql.asp
28. februar 2005 - 16:41 #5
hmm, undskyld jeg lige tilføjer: Den artikel omhandler FoxPro!

Egentlig har Access jo slet ikke timestamp-datatypen (mig bekendt)

Du siger at den virker uden NOVALIDATE??

Hvilken datatype står der så, hvis du åbner tabeller i design?
Avatar billede Slettet bruger
28. februar 2005 - 18:04 #6
Det er fordi jeg ikke ahr nogen anelse om, hvad FoxPro er.. jeg troede af artiklen, at det var sql-platformen til access..

Nåh.. men timestamp eksisterer i access (jeg har i hvert fald med succes tidligere oprettet felter med dette format, og det svarer til Dato og klokkeslet).. det felt, jeg konverterer fra, er tekst (varchar (255))..

jeg har eksperimenteret lidt med først at konvertere værdierne til dato for så at ændre til timestampformat, men der får jeg fejl.. jeg prøvede noget i retning af:

UPDATE testing SET [done by] = CDate(Val([Done by]))

Dette giver også type mismatch..
28. februar 2005 - 21:09 #7
Normalt skriver men jo ikke selv i et timestamp. Det sørger databasen selv for ved oprettelse/ændring af posten. Måske er det det...?
Avatar billede Slettet bruger
28. februar 2005 - 21:38 #8
Det skal være muligt.. men jeg har en gammel database, hvor et felt skal ændres fra varchar (255) til timestamp.. hvordan gøres dette, hvis man skal undgå fejl, hvis feltet indeholder tekst?
Avatar billede nih Novice
28. februar 2005 - 21:40 #9
Hvis du på en eller anden måde kan få dine værdier ud for time, minut og sekund seperat kam du bruge funktionen: timeserial(h,n,s) til at lave et nyt felt af typen dateTime

Niels
Avatar billede Slettet bruger
28. februar 2005 - 21:47 #10
skal jeg så løbe hele databasen igennem i et script for at gøre det??
Avatar billede nih Novice
28. februar 2005 - 22:03 #11
næh ind i en ny tabel:

SELECT felt1, felt2, TimeSerial([time],[min],[sek]) AS klokkeslet INTO nytabel
FROM oprindeligTabel

([time],[min],[sek]) er værdier fra dit varchar felt
Avatar billede nih Novice
28. februar 2005 - 22:07 #12
de kan evt udtrækkes med mid(str,start,lenght)
string strTid = '20:00:01'

TimeSerial(mid(strtid;1;2);mid(strtid;4;2);mid(strtid;7;2)) = 20:00:01 (as dateTime)

Niels
Avatar billede Slettet bruger
28. februar 2005 - 22:19 #13
jeg fandt på en anden løsning.. jeg bruge isdate til at opdatere databasen, for så at ændre feltet :P..

UPDATE testing SET [done by] = NULL WHERE NOT ISDATE([Done by]);
ALTER TABLE testing ALTER [done by] timestamp;

Mange tak for jeres tid..
Avatar billede nih Novice
28. februar 2005 - 22:21 #14
alter table tabel1 alter COLUMN felt1 datetime
Avatar billede nih Novice
28. februar 2005 - 22:23 #15
Du fandt selv ud af det :)

Jeg prøvede "alter table tabel1 alter COLUMN felt1 datetime" og den virkede også

Selv tak - det var et af de spm jeg også lærte lidt af :)

Niels
Avatar billede Slettet bruger
28. februar 2005 - 22:26 #16
gør column, at type mismatch ignoreres? det ser ud som en mere fiks løsning, hvis det er det, der sker..
Avatar billede nih Novice
28. februar 2005 - 22:31 #17
Det ved jeg ikke men sakset fra Access hjælp:
ALTER TABLE tabel {ADD {COLUMN felt type[(størrelse)] [NOT NULL] [CONSTRAINT indeks] |
ALTER COLUMN felt type[(størrelse)] |
CONSTRAINT flerfeltindeks} |
DROP {COLUMN felt I CONSTRAINT indeksnavn} }

min sql virker ikke uden column
Avatar billede Slettet bruger
28. februar 2005 - 22:35 #18
column virker ikke for mig, så jeg bruger bare den lidt mere "klodsede" løsning..
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