Avatar billede Dan Elgaard Ekspert
19. marts 2017 - 18:47 Der er 26 kommentarer og
1 løsning

Skriv til database med SQL?

Det er jo let nok, at hente oplysninger fra en databse med SQL, f.eks.:

SELECT 'Navn'
FROM 'Medarbejdere'
WHERE 'CPRnr' = '1111111118'

Men, hvad med den anden vej?

Hvordan skriver man et navn til et bestemt CPR-nummer?

Noget i retning af???

WRITE 'Peter Belli'
TO 'Navn'
IN 'Medarbejdere'
WHERE 'CPRnr' = '1111111118'

Men, hvad er den præcise syntaks?

Og, et tillægsspørgsmål:

Hvad, hvis kolonnen 'Navn' ikke findes?
Eller CPR-nummeret ikke findes?
Oprettes kolonnen og/eller CPR nummeret så automatisk?
Avatar billede michael_stim Ekspert
19. marts 2017 - 18:51 #1
https://msdn.microsoft.com/en-us/library/bb208861(v=office.12).aspx

Nej, det oprettes ikke, du får en fejl.
Avatar billede fdata Forsker
19. marts 2017 - 19:25 #2
docmd.runsql "UPDATE Medarbejdere SET Navn='Peter Belli' WHERE CPRnr= '1111111118'"
Avatar billede michael_stim Ekspert
19. marts 2017 - 19:32 #3
#2
Jep, mig der läste spörgsmålet forkert. Tog det som en ny post. Godt der er nogle der er vågen.
Avatar billede fdata Forsker
19. marts 2017 - 19:55 #4
Hvad, hvis kolonnen 'Navn' ikke findes?
Ja, så er det jo meningsløst at forsøge at opdatere den. Man har forhåbentlig styr på, hvilke felter, tabellen indeholder.

Eller CPR-nummeret ikke findes?
Så sker der bare ingenting.
Hvis posten skal "oprettes automatisk", må du først tjekke, om CPR-nummeret findes:
  if isnull(dlookup("Navn","Medarbejdere","CPRnr='" & DitCPRnr & "'")) then ...
      docmd.runsql ("INSERT INTO Medarbejdere(Navn, CPRnr) SELECT '" & DitNavn & "','" & DitCPRnr & "'")
  else
      <opdateringskommandoen fra før>
  endif
(udskift selv DitNavn og DitCPRnr med dine aktuelle værdier)
Avatar billede fdata Forsker
19. marts 2017 - 19:55 #5
de tre prikker efter "then" er en tyrkfejl. De skal ikke med.
Avatar billede Dan Elgaard Ekspert
20. marts 2017 - 12:48 #6
Narj, man kan ikke altid vide, om en bestemt post er oprettet i en database eller ej..
Der kan jo være flere personer, der opretter og vedligeholder data i databasen...

Så, det må bliver noget med 'Trial and error': Prøv først, at opdatere posten, og hvis der meldes en fejl tilbage, så opret posten.
Heldigvis kan man benytte kolonne navnet som indeks...

Det kommer vist til at koste lidt øvelse før jeg rammer helt rigtigt - men, så er det da godt, at vi har 'NorthWind', at øve os på :-)

Tak for svarene, gutter...
Avatar billede fdata Forsker
20. marts 2017 - 16:07 #7
Du behøver ikke fremprovokere en fejl (selv om det sikkert kan bringes til at fungere). Du kan meget enkelt tjekke, om et CPR-nr. findes. Se #4.
Avatar billede Dan Elgaard Ekspert
20. marts 2017 - 17:04 #8
Ligner et progrmmeringssprog og ikke en forespørgelseskommando???
Avatar billede fdata Forsker
21. marts 2017 - 13:12 #9
Øøøøh. Ja, Det er Visual Basic. Det sprog som Office pakken benytter.

Hvis du udelukkende vil bruge forespørgsler til at vurdere om et CPR-nr findes i forvejen og derudfra vælge at opdatere eller oprette en post, er du vist allerede lidt i modvind. Forespørgsler er ikke det umiddelbare valg, hvis man vil implementere logik.
Avatar billede Dan Elgaard Ekspert
21. marts 2017 - 15:33 #10
Der er ikke noget, der hedder 'dlookup' eller 'docmd' i VBA...
Avatar billede fdata Forsker
22. marts 2017 - 10:21 #11
Fake news, mester!

Prøv at google "vba dlookup" !!!

(Så finder du f.eks.: I Access-skrivebordsdatabaser kan du bruge funktionen DLookup til at hente værdien af et bestemt felt fra en bestemt sæt poster (en domæne). Brug funktionen DLookup i et VBA-modul (Visual Basic for Applications), en makro, et forespørgselsudtryk eller et beregnet kontrolelement i en formular eller rapport.)
Avatar billede Dan Elgaard Ekspert
22. marts 2017 - 12:25 #12
Altså, hvis er er inde i Access databasen, hvilket glæde har jeg så af, at opdatere via programmering?!?
Så, kan jeg jo bare gøre det, når jeg alligevel står inde i databasen...

Ligesom jeg gav eksempel på, hvordan man kan hente UDEFRA databasen, så galt spørgsmålet også, hvordan man kan skrive ind i databasen UDEFRA - og, så har jeg da ingen interesse i Access eget VBA-sprog.

Det gi'r jo ingen mening?!?

Desuden skrev jeg ingen steder i mit oprindelige spørgsmål, at det drejede sig om en Access database, men om en generelt måde, at skrive til databaser på - og, så gi'r en Access-VBA løsning, da slet ingen værdi..

Men, never mind - jeg HAR fået det til at virke :-)
Avatar billede fdata Forsker
22. marts 2017 - 13:28 #13
Rolig nu.

Du har oprettet spørgsmålet i Access kategorien!
Avatar billede acore Ekspert
22. marts 2017 - 13:30 #14
Du postede dit spørgsmål i kategorien "Access"
Avatar billede Dan Elgaard Ekspert
22. marts 2017 - 14:32 #15
Fordi, der ikke var en SQL kategori - så valgte jeg blot en database...

...men, det ændrer ikke på spørgsmålets karakter: Hvordan man opdatere en database UDEFRA?

Men, jeg er helt rolig :-)
Sorry, hvis jeg har skrevet på en måde som kunne opfattes "ophidset" :-)
Det er jeg langt fra - og, selv ikke, da jeg jo har fået det til at virke ...
Avatar billede terry Ekspert
30. marts 2017 - 11:52 #16
Men, hvad med den anden vej?

"INSERT INTO ...."
https://www.w3schools.com/sql/sql_insert.asp

and to UPDATE already existing data

"UPDATE ..."
https://www.w3schools.com/sql/sql_update.asp
Avatar billede terry Ekspert
30. marts 2017 - 11:55 #17
WRITE 'Peter Belli'
TO 'Navn'
IN 'Medarbejdere'
WHERE 'CPRnr' = '1111111118'


UPDATE Medarbejdere SET Navn='Peter Belli' WHERE CPRnr= '1111111118'

Fdata is using DoCmd.RunSQL to execute the SQL staetment but you can also make an update query in Access which you can execute instead.
Avatar billede terry Ekspert
28. april 2017 - 18:26 #18
"Det er jeg langt fra - og, selv ikke, da jeg jo har fået det til at virke ... "

Then you should close the question ;-)
Avatar billede terry Ekspert
02. maj 2017 - 13:29 #19
pistolprinsen: What was the solution?
Avatar billede Dan Elgaard Ekspert
02. maj 2017 - 14:08 #20
Som jeg skrev: Prøv først, at opdatere posten, og hvis der meldes en fejl tilbage, så opret posten...
Avatar billede terry Ekspert
02. maj 2017 - 15:10 #21
OK, but you need to describe your problem more precisely so we dont waste our time trying to find out what you are trying to do.

;-)
Avatar billede Dan Elgaard Ekspert
02. maj 2017 - 15:29 #22
Beskrivelsen var perfekt og enkelt - det var blot nørderne, der gik ud over emnet...
Avatar billede terry Ekspert
02. maj 2017 - 15:41 #23
Not sure how I should answer that comment, but then its not me that needs help in future ;-)
Avatar billede fdata Forsker
03. maj 2017 - 12:51 #24
>>pistolprinsen
Baggrunden for eksperten er at man kan søge hjælp til at få løst problemer. Selve behandlingen håndteres af en række frivillige, som bruger tid og energi på at finde en løsning. Reglerne angiver, at løsningen skal publiceres, således at andre, der "lytter med" også får glæde af tråden.

Du opretter dit spørgsmål i en forkert kategori, hvilket vi gør opmærksom på. Du kunne så vælge at sige "Undskyld, jeg finder et andet sted at stille spørgsmålet"; men du vælger i stedet for at udtrykker dig - mildt sagt - nedladende hele vejen igennem. 

Lad mig gætte på at du nok ikke skal forvente den helt store hjælp fremover på eksperten, hvis du fortsætter i den tone.
Avatar billede Dan Elgaard Ekspert
03. maj 2017 - 19:43 #25
Jeg har lige kiiget tråden igennem, og kan ikke se, at jeg har været "nedladende hele vejen igennem" - jeg har blot udtrykt, hvorfor jeg valgte denne kategori, og, hvorfor jeg synes, det giver mest mening...
...jeg kan ikke se, hvordan det kan opfattedes nedladende???
...hele vejen igennem???
Avatar billede fdata Forsker
04. maj 2017 - 14:13 #26
Ok. Vi har alle luftet vores meninger.
Det er nok bedst, hvis vi bare lukker spm. her.
Avatar billede Dan Elgaard Ekspert
04. maj 2017 - 14:50 #27
Ja, det er osse langt det letteste, når man ikke kan svare på konkrete spørgsmål med konkrete eksempler og svar...

Men, så slutter jeg da osse herfra...
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

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