Avatar billede monstermand Nybegynder
28. juli 2005 - 13:40 Der er 12 kommentarer og
1 løsning

Send mail på status af SQL update

Jeg har lavet en funktion (ASPmail) der skal sende en mail med info omkring de opdateringer der er foretaget.

Som seudo kode ser det ud som følger:

sql = update table set navn = gunnar, adresse = gunnarsvej...

msg.BodyText = "Brugeren har opdateret navn og adresse"

Ovenstående er der sådanset ikke så meget i. Der hvor jeg bliver i tvivl er: I mailen skal der kun stå de steder hvor der er sket ændringer. Dvs. hvis gunnar og hed gunnar før, så skal der ikke stå noget om gunnar i mailen.

Jeg kan naturligvis lave en sammenligning af den gamle post og den nye post, men da jeg har omkring 50 kolonner ville jeg gerne undgå dette. Findes der ikke en eller anden SQL funktion eller noget der kan kalde præcis de atributter der er blevet opdateret.

Håber i forstår hvad jeg mener!
Avatar billede busschou Praktikant
28. juli 2005 - 13:44 #1
Det tror jeg ikke !
Men jeg lytter gerne med til hvis en sql haj kender til en sådan metode
Avatar billede monstermand Nybegynder
28. juli 2005 - 13:47 #2
så blive der sgu meget arbejde hvis det ikke kan lade sig gøre. Først kalde alt i recorden inden opdatering, så bagefter, og siden sammenligne hver enkelt attribut!.. puha.. :(
Avatar billede busschou Praktikant
28. juli 2005 - 13:52 #3
At hive en række ud med 50 felter og sammenligne på dem
Tja, meget arbejde, men 50 sammenligninger går nu rimelig hurtigt
Det var noget andet hvis du skulle hive 1000 rækker ud med 50 i hver
Avatar billede fennec Nybegynder
28. juli 2005 - 13:53 #4
Nej det gør der ikke. Problemet ligger også i hvordan den skulle sende disse oplysninger tilbage igen til dig.

Det vil desuden også være alt for tidskrævende for databasen at undersøge om værdien er anderledes end den eksisterende inden da opdatere, de det er nemmere bare at updatere alle felter.
Avatar billede busschou Praktikant
28. juli 2005 - 13:53 #5
Men prøv og vent og se lidt om nogen har en klog ide
Jeg er ikke super database ekspert
Er det access i øvrigt? For der er jo lidt forskel  på alle databaser :o)
Men access kan man jo åbne på kryds og tværs, så måske nogen kender et godt trick
Jeg har bare aldrig hørt om det
Avatar billede monstermand Nybegynder
28. juli 2005 - 13:54 #6
det er ikke 50 rækker - det er 50 kolonner.. så hvis der en dag skulle være 1000 række, ja, så vi ved dit eksempel.. :(
Avatar billede monstermand Nybegynder
28. juli 2005 - 13:54 #7
jeps - det er access.
Avatar billede busschou Praktikant
28. juli 2005 - 13:55 #8
Hvis fennec også siger nej, så er det vist et nej ;o)
Avatar billede monstermand Nybegynder
28. juli 2005 - 14:02 #9
skod.. nå, men så kom med nogle svar ;)
Avatar billede fennec Nybegynder
28. juli 2005 - 14:05 #10
Jeg tror også du gør det sværre end det er. Jeg har lavet et system hvor opdaterede felter skulle være røde. Jeg har dog lige fået en ide til hvordan man kan gøre det bedre end jeg gjorde. Dette er seudo kode:

set rs1 = conn.execute("select * from enTabel where id=123")
set rs2 = Server.CreateObject("ADODB.RecordSet")
rs2.Open "select * from enTabel where id=123", Conn, 1
rs2("navn") = "vfsd"
rs2("add") = "vfdl"
...
...
rs2.update()

Så skulle du gerne have de gamle oplysninger i rs1 og de nye i rs2. Du kan evt løbe kolonnerne igennem med en for løkke og bruge kolonnenummeret i stedet for navnet. På den måde kan du udvide tabellen, uden det får betydning for din koden.

ps. Har aldrig bruge recordset.update() metoden før, så jeg er ikke 100% sikker på at det er rigtig syntax.
Avatar billede fennec Nybegynder
28. juli 2005 - 14:11 #11
og et svar hvis du kan bruge min ide til noget.

.o) <-- One Eyed JAck
Avatar billede monstermand Nybegynder
28. juli 2005 - 14:21 #12
jeg ville lige kigge på det.. vender tilbage i løbet af dagen!
Avatar billede fennec Nybegynder
28. juli 2005 - 14:27 #13
for løkken er noget i denne stil:

for f=0 to 50
  if rs1(f) <> rs2(f) then response.write "forskeld"
next

Man må kunne hente antal kolonner, så du er fri for at skrive 50, ellers kan der laves noget "on error...". Og jeg ved man kan trække kolonne navnet ud, hvis du vil have det med på beskeden også.
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
Kurser inden for grundlæggende programmering

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