Toon posts:

[asp/VB] records worden niet verwijderd*

Pagina: 1
Acties:
  • 106 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<!--#include virtual="/get/connections.asp" -->
<%
TmpURL=nix

Call OpenConnection()


Tsql="select id,url,name from get order by 2"
SET oRS = oConn.Execute(tSQL)
Do While NOT oRS.EOF
    If TmpURL=oRS.Fields("url") Then
        TheID=oRS.Fields("id")
        Response.Write Ors.Fields("name")&"<br>"
        
'hier zit het probleem -->
        tSQL2="Delete from get where id="&TheID
        oConn.Execute(tsql)
' tot en met hier --<
                
        CntPrint=CntPrint+1
    End if
    TmpURL=oRS.Fields("url")
    oRS.MoveNext
loop

ORs.Close

Call CloseConnection()
Response.Write CntPrint
%>

En dit is connections.asp
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%
Dim oConn

Sub OpenConnection
   Set oConn = Server.CreateObject("ADODB.Connection")
   oConn.Open "dsn=boris;uid=boris;pwd=xxxddd"
End Sub

Sub CloseConnection
   oConn.Close
   Set oConn = Nothing
End Sub

Sub ExeConn(tmpSQL)
    oConn.Execute (tmpSQL)
End Sub
%>

Het probleem is dat de sql server de records niet verwijderd, volgens mij zit de fout in de vetgedrukte regel... Weet iemand hier veel van af???
(bold doet het dus niet icm code (8>

Verwijderd

tSQL2="Delete from get where id="&TheID
oConn.Execute(tsql)

Zoek de verschillen (hint: ik heb ze bold gemarkeerd) :Y)

Verwijderd

kan het natuurlijk ook fout hebben maar klopt dit ook wel:?
code:
1
2
Tsql="select id,url,name from get order by 2"
SET oRS = oConn.Execute(tSQL)

En dan doel ik op de Tsql en de tSQL

Zoveel weet ik niet van ASP af, dus ik kan het fout hebben!! ;)

Verwijderd

Topicstarter
Op zondag 21 april 2002 11:53 schreef klappie het volgende:
kan het natuurlijk ook fout hebben maar klopt dit ook wel:?
code:
1
2
Tsql="select id,url,name from get order by 2"
SET oRS = oConn.Execute(tSQL)

En dan doel ik op de Tsql en de tSQL

Zoveel weet ik niet van ASP af, dus ik kan het fout hebben!! ;)
Dat kan je fout hebben :)

ik zal Yarvieh's advies es proberen

Verwijderd

Op zondag 21 april 2002 12:04 schreef boriz het volgende:

[..]

Dat kan je fout hebben :)

ik zal Yarvieh's advies es proberen
Oh ok is goed :) Lijkt me dan wel zo slim >:)

Verwijderd

Topicstarter
Op zondag 21 april 2002 11:43 schreef Yarvieh het volgende:
tSQL2="Delete from get where id="&TheID
oConn.Execute(tsql)

Zoek de verschillen (hint: ik heb ze bold gemarkeerd) :Y)
Het lukt nu nog steeds niet. Het maakt niet uit of ik het nou tsql of tsql2 noem.

Het script werkt wel, alleen het gebruikt nouwelijks de cpu en het duurt op deze manier een jaar voordat alle records aangpast zijn. Heeft iemand een idee wat er niet goed zit hierzo?

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 09-09 16:14

Crazy D

I think we should take a look.

Je haalt alle records op uit een tabel, die ga je record voor record doorlopen, en vervolgens ga je binnen die loop records deleten uit diezelfde tabel? Beetje vreemd :P
Ik heb niet helemaal letterlijk gekeken, maar uhmm je wilt dus alle dubbele url's eruit filteren zo te zien?
Kun je dan niet iets doen als (pseudo pseudocode :P)
1. haal alle records op
2. loop deze recordset door, en maak arrays met de unieke url's + (in een andere array, zelfde index) het ID
3. loop alle de url-array door, en delete alles waar de url=url uit array en id _niet_ gelijk is aan het id uit de id-array

Dus als je bv hebt
www.aaa.com id 1
www.bbb.com id 2
www.aaa.com id 3
www.ccc.com id 4

Dat je in je arrays hebt
www.aaa.com id 1
www.bbb.com id 2
www.ccc.com id 4

En bij het deleten delete je dan waar url = www.aaa.com en id <> 1 (dus wordt www.aaa.com met id 3 gedelete).

Naja zoiets dan, brak uitgelegt, en er kan vast nog wel een hoop geoptimalizeerd worden, maar tis ff voor het idee :)

Exact expert nodig?


Verwijderd

Topicstarter
Sql server w8 ergens op ofzo, normaal schiet de cpu ff naar 100% en dan is het klaar. nu doet ie er gewoon een minuut over per record. ook bij dit script:
code:
1
2
3
4
5
6
7
8
9
10
tsql="select voornaam,achternaam from users"
set oconn.execute(tsql)
do while not ors.eof
 voornaam=ors.fields("voornaam")
 achternaam=ors.fields("achternaam")
 tsql2="insert into backup (voornaam,achternaam) values ('"&voornaam&"','"&achternaam&"')
 Call Execonn(tsql2)
 ors.movenext
loop
ors.close

(owja de cpu staat nu dus niet op 100%)

Verwijderd

Je bent 'n movenext vergeten, je staat nu constand het zelfde record te verwerken....

Verwijderd

Topicstarter
dit was zomaar ff een simpel voorbeeld, bijgewerkt

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 09-09 16:14

Crazy D

I think we should take a look.

Kijk eens in je ODBC control panel appletje, of tracing (Tracing tabbladje :P) niet per ongeluk aanstaat.
Dat geintje had een collega, vroeg zich af waarom zijn SQL Server zo traag was als een blok gewapend beton, had iemand tracing aangezet, en ook nog eens de logfile in z'n homedir op het netwerk gezet |:(

Exact expert nodig?


Verwijderd

Topicstarter
Op maandag 22 april 2002 19:44 schreef Crazy_D het volgende:
Kijk eens in je ODBC control panel appletje, of tracing (Tracing tabbladje :P) niet per ongeluk aanstaat.
Dat geintje had een collega, vroeg zich af waarom zijn SQL Server zo traag was als een blok gewapend beton, had iemand tracing aangezet, en ook nog eens de logfile in z'n homedir op het netwerk gezet |:(
nee zit echt iets fout in de structuur van mijn code, want als ik gewoon iets met select op het scherm tover krijg ik 30000 records binnen een seconde op mijn scherm te zien
Pagina: 1