Avatar billede da_darkside Nybegynder
01. juni 2002 - 12:50 Der er 15 kommentarer og
1 løsning

Hvordan trækker jeg eks 200 fra alle felter i en "tal" kollonne ?

Jeg er ved at lave et advanceret bruger system som køre på point basis, det er meningen jeg skal have trukket eks 200 points fra alle brugere hver måned. dvs jeg har et felt ved alle brugere i min Db som hedder points, hvordan trækker jeg 200 points fra alle på en gang ??
Avatar billede egede Nybegynder
01. juni 2002 - 13:01 #1
prøv at kom med lidt kode og nogle flere oplsyninger, så ville det være lettere...
Avatar billede da_darkside Nybegynder
01. juni 2002 - 13:07 #2
uhm, kan sådan set ikke komme med flere oplysninger end jeg allerede har gjort, jeg skal hjælp til at lave en kode/noget sql som kan trække 200 points fra alle felter i en kollonne på en gang ?
dvs jeg har eks 500 brugere og der skal så trækkes 200 points fra alle brugere på _EN_ gang.
Avatar billede -master-d- Nybegynder
01. juni 2002 - 13:29 #3
Er det ikke muligt at man kunne lave noget lign. det her

<%
SQL = "Select kolonne From Tabel"
Set rs = Conn.Execute(SQL)
If Not rs.EOF Then
kolonne = rs("kolonne")
Ny = " & kolonne & " - 200
End If

SQL = "Update Tabel Set kolonne = " & Normal & ""
Conn.Execute(SQL)
%>

Er ikke helt sikker på om man skal have en Where eteller andet i enden, men tror nok den virker.
Avatar billede -master-d- Nybegynder
01. juni 2002 - 13:33 #4
Ellers må man jo bare lave den sådan her
<%
SQL = "Select kolonne From Tabel"
Set rs = Conn.Execute(SQL)
If Not rs.EOF Then
kolonne = rs("kolonne")
Ny = " & kolonne & " - 200
End If

SQL = "Update Tabel Set kolonne = " & Normal & " Where kolonne <> ''"
Conn.Execute(SQL)
%>
Avatar billede -master-d- Nybegynder
01. juni 2002 - 13:33 #5
ups laves vist sådan her

<%
SQL = "Select kolonne From Tabel"
Set rs = Conn.Execute(SQL)
If Not rs.EOF Then
kolonne = rs("kolonne")
Ny = " & kolonne & " - 200
End If

SQL = "Update Tabel Set kolonne = '" & Normal & "' Where kolonne <> ''"
Conn.Execute(SQL)
%>
Avatar billede egede Nybegynder
01. juni 2002 - 13:34 #6
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("MINDB.mdb")
Conn.Open DSN
set rs = conn.execute("Select * from MINTABEL")


Do


talvar = rs("POINT") - 200
strSQL = "Update MINTABEL set "
strSQL = strSQL & "POINT= '"&talvar&"', "
strSQL = strSQL & " Where Id = "&rs("ID")"
conn.execute(strSQL)
  rs.MoveNext
Loop While Not rs.EOF

Sådan noget lignende, det er dog svært at beskrive præcist uden at vide mere...
Avatar billede egede Nybegynder
01. juni 2002 - 13:37 #7
Er det bare mig der ikke modtager mails fra eksperten?
Avatar billede da_darkside Nybegynder
01. juni 2002 - 13:38 #8
et øjeblik - skal lige teste :-)
Avatar billede da_darkside Nybegynder
01. juni 2002 - 14:10 #9
egede > får følgende fejl
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement.

/Drawpoint.asp, line 13

<% Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("Data/Center.mdb")
Conn.Open DSN
set rs = conn.execute("Select * from system")

Do

talvar = rs("POINTs") - 200
strSQL = "Update system set "
strSQL = strSQL & "POINTs= '"&talvar&"', "
strSQL = strSQL & " Where Id = "&rs("ID")&""
conn.execute(strSQL)
  rs.MoveNext
Loop While Not rs.EOF
%>
Avatar billede egede Nybegynder
01. juni 2002 - 15:08 #10
prøv lige at udskrive SQL-strengen.
Dette gøres ved at
Response.write strSQL
Response.end
sættes ind lige inden conn.execute(strSQL)
Avatar billede stoney96 Nybegynder
01. juni 2002 - 17:13 #11
Hvad med en sql-sætning som: update MINTABEL set point=point-200 (evt . where bla bla bla....)???
Avatar billede hansk Nybegynder
01. juni 2002 - 20:50 #12
Du kan opdatere alle rækker i en tabel på en gang ved hjælp af syntaksen som stoney96 skriver.

Feltet point skal naturligvis være defineret som et numerisk felt.

Du bliver dog nok nødt til at skyde 2 SQL'er af:

1: UPDATE System SET point=0 WHERE point=<200
2: UPDATE System SET point=point-200 WHERE point>200

Du kan sagtens skyde dem af i det script du har lavet ovenfor.
Avatar billede eagleeye Praktikant
26. juni 2002 - 09:21 #13
sådan her kan du lave dit script, den sikre at man ikke kommer får  -xx point, hvis man kan få - points så fjerne du de to strSQL og bruger denne:
strSQL = "UPDATE System SET point=point-200"


<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("Data/Center.mdb")
Conn.Open DSN
strSQL = "UPDATE System SET point=0 WHERE point=<200"
conn.Execute (stSQL)
strSQL = "UPDATE System SET point=point-200 WHERE point>200"
conn.Execute (stSQL)
conn.close
%>
Avatar billede hansk Nybegynder
26. juni 2002 - 09:28 #14
Er det ikke på tide at lukke dette spørgsmål?
Avatar billede da_darkside Nybegynder
18. juli 2002 - 02:55 #15
hmm duer ikke helt har fundet en anden løsning selv
Avatar billede stoney96 Nybegynder
18. juli 2002 - 08:03 #16
Hvis du virkeligt har fundet en løsning som er bedre end alle de gode løsningsforslag som folk har besværet sig med at give her, så synes jeg VIRKELIGT at du skulle delagtiggøre os andre i denne fænomenale løsning du har fundet....!
Freerider.....!
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