Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-11 17:25:14 - Peter Ribbestam, i forum asp - allmänt, Tråden har 34 Kommentarer och lästs av 1022 personer

Jag har en tabell med kolumnerna partner1 och partner2 (se nedan). Nu vill jag lägga in ett värde i partner2 men under förutsättning att partner2=0 annars skall det värde som finns i partner2 letas upp i partner1 (finns även där då) och se om partner2 där =0 annars gå vidare .....Någon form av loop alltså!
Att min kod nedan inte fungerar behöver jag väl ej säga....Exempel:

'Om Request.Form("partner1") = 2 skall den hitta värdet fem i partner1 och sätta in värdet där i partner2.
2 3
3 5
5 0
6 7
7 0

		Set conn=Server.createObject("ADODB.Connection")
		conn.Open "mydsn","",""
		sql="SELECT partner2 WHERE partner1=" & Request.Form("partner1")&""  
'Hämtar värdet i partner2 
		If (rs("partner2"))>"0" Then 'Om värdet inte är 0 så gå vidare
		sql="SELECT partner2 WHERE partner1=(rs("partner2")) 
' hämtar nästa värde
		fortsatt med Loop istället? 
		
		Else 
		sql="Update tabellen SET partner2 ="&partner2 &" WHERE partner1=" 
                                har partner2 som =0""           
		conn.execute(sql)  'sätt in värdet i tabellen när partner2=0 enligt ovan
		conn.close
		End IF
		


Svara

Sv: Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-11 18:47:43 - Pelle Johansson


Du behöver inte hämta ut datat, du kan göra allting i en sql-sats istället. Men som jag ser det så försöker du uppdatera data i samma tabell, måste du verkligen det. Kan du inte bara plocka ut det du behöver vid tillfälle?

I annat fall måste du ju köra denna uppdatering ofta för att inte få fel, eller?


Svara

Sv:Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-11 21:15:46 - Peter Ribbestam

Du kan ha rätt, men själva uppdateringen i tabellen görs endast vid inlägg i ett formulär från en användare. Man kan uttrycka det med att "koppla" partner2 till partner1.
Är partner1 = 2, 3, 5 enligt ovan skall värdet in i 5 partner2. (hoppas du förstår)
Alternativet att plocka ut det i en sql-sats (om man kan få till någon sådan) ger ju ingen uppdatering
dock kan man ju plocka ut värdet först lägga det som ett objekt och sedan lägga in det i två olika
sql-satser?


Svara

Sv: Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-11 22:05:27 - Per Persson

Får man fråga vad det är som representeras av databasen? Kanske kan man hitta en bättre struktur.
Att lagra kedjorna som 2,3,5 och 6,7 är inget alternativ?


Svara

Sv:Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-11 22:24:58 - Peter Ribbestam

Databasen representerar självklart fler fält än dessa 2, men strukturen är följande:
se resp siffror som en kedja, Under två:an ligger 3:an, under tre:an ligger 5:an sen inga fler här, under 6:an ligger sjuan sen inga fler här osv. Ingen begränsning får alltså finnas.


Svara

Sv: Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-11 22:34:10 - Pelle Johansson

Så det du säger är att det är trådade poster? Exempelvis post 3,4,7,11 hör till 13 (self join) ?


Svara

Sv:Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-11 22:58:47 - Per Persson

När man har trådade inlägg i ett forum har man normalt en trädstruktur; ett inlägg kan ha flera svar som i sin tur kan ha flera svar. Som jag förstår det har man i det här fallet bara en mängd av linjära strukturer.


Svara

Sv:Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-11 23:08:39 - Peter Ribbestam

Ojdå nu är vi "över min nivå" (-förmodligen därför jag behöver lite hjälp..) I ovanstående exempel så ligger 5:an under 3:an som ligger under 2:an, dessa kommer att ligga i en kedja (ev flera),
de som kommer till kommer sedan under - tex är min 6:a och 7:a ett annat "led" det kan finnas fler "led" men mitt problem blir just att hitta "första nollan" i tex led 2 eller led 6 som båda är första "pappan" i leden.


Svara

Sv: Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-11 23:19:55 - Per Persson

Men du kan alltså inte ha grenade strukturer? Både 8 och 9 kan inte ligga direkt under 7?
7 8
7 9


Svara

Sv:Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-11 23:28:27 - Peter Ribbestam

Huvudet på spiken, helt riktigt det kan dom inte,
7 8
nu kan ingen ligga under 7:an däremot kan id 7 lägga
ett annat id under 8:an dvs formuläret vet att det är session 7
men det gäller att hitta första 0:a som i detta fall kanske är just 8.
7 8
8 0

Då den hittar första 0:a på 7:an lägger den 9:an där.

7 8
8 9
9 0

Nu är första 0:a för 7, 8 och 9 just 9!


Svara

Sv: Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-11 23:30:46 - Per Persson

När ett nytt element skall läggas in, skall man kunna utgå från vilket element som helst i kedjan och hitta slutet, eller utgår du alltid från första elementet?


Svara

Sv:Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-11 23:32:25 - Peter Ribbestam

Man skall kunna utgå från vilket element som helst - det är förmodligen där jag har "mitt lilla problem"
det element som du nämner får jag genom session eller formulär och kan ju vara vad som helst.


Svara

Sv: Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-12 00:06:30 - Per Persson

Så här tycker jag att det borde bli (observera pseudokoden; är inte så haj på ASP):

Set conn=Server.createObject("ADODB.Connection")
conn.Open "mydsn","",""

partner = Request.Form("partner1")
Do
	sql = "SELECT partner2 WHERE partner1=" & partner

	' PSEUDOKOD:
	rs = resultatet av SQL-satsen

	owner = partner

	partner = rs("partner2")

Loop While partner > 0


sql = "Update tabellen SET partner2 =" & partner & " WHERE partner1=" & owner
conn.execute(sql)  'sätt in värdet i tabellen när partner2=0 enligt ovan

conn.close


Svara

Sv:Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-12 09:56:40 - Peter Ribbestam

Får inte det hela att fungera riktigt får
Feltyp:
Körningsfel i Microsoft VBScript (0x800A000D)
Inkompatibla typer: 'rs'
/webb/Worldkeys 2005/partreg4.asp, line 20

Droppade IF satser nedan fungerar men bara om första partnerv resp partnerh =0

koden är följande:

<%
<%
dim regdatum
regdatum=date()
partner=Request.Form("partner")			'Partnerid:et på den nyregistrerade
sponsorid=Request.Form("sponsorid")	'Den som sponsrar
sponsornamn=Request.Form("sponsornamn")
partnernamn=Request.Form("partnernamn")
partnerid=Request.Form("partnerid")		'Placeras under detta partnerid
pbc=Request.Form("pbc")				'Businesscenter på ovanstående partnerid
ben=Request.Form("ben")		
		
If ben="vanster" Then
		Set conn=Server.createObject("ADODB.Connection")
		conn.Open "worldkey","",""
		Do
		sql = "SELECT partnerv WHERE partner=" & partner
		' PSEUDOKOD:
    		rs = ("partnerv")  'resultatet av SQL-satsen
		owner = partner
		partner = (rs("partnerv"))
		Loop While partner > 0
		sql = "Update partner SET partnerv =" & partner & " WHERE partner=" & owner
		conn.execute(sql)  				'sätt in värdet i tabellen när partnerv=0 enligt ovan
		conn.close
		End IF
		
		'
		'
'Set conn=Server.createObject("ADODB.Connection")
'conn.Open "worldkey","",""
'sql="Update partner SET partnerv='"&partner&"', sponsoridv="&sponsorid&", regdatumv='"&regdatum&"', " & _
'		"vbc="&pbc&" WHERE partnerid=" & Request.Form("partnerid")&""
'Response.Write(sql)
'conn.execute(sql)
'conn.close
'ELSE 'nothing to do
'End IF


'if ben="hoger" Then
'Set conn=Server.createObject("ADODB.Connection")
'conn.Open "worldkey","",""
'sql="Update partner SET partnerh='"&partner&"', sponsoridh="&sponsorid&", regdatumh='"&regdatum&"', " & _
'		"hbc="&pbc&" WHERE partnerid=" & Request.Form("partnerid")&""
'Response.Write(sql)
'conn.execute(sql)
'conn.close
'ELSE 'nothing to do
'End IF
%>


Svara

Sv: Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-12 11:34:19 - Per Persson

Vad skall detta föreställa?
<b>rs = ("partnerv") </b>

Du måste ju köra SQL-satsen...


Svara

Sv:Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-12 11:46:19 - Peter Ribbestam

- Hjärnsläpp!
Bytte till nedan men det hjälpte inte - fick syntaxfel - funderar ........


rs = '"("SELECT partnerv WHERE partner=" & partner)"'  	


Svara

Sv: Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-12 13:45:54 - Per Karlsson

Borde väl se ut så här:

<CODE>
rs = "SELECT partnerv WHERE partner=" & partner
</CODE>


Svara

Sv:Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-12 13:54:04 - Peter Ribbestam

Får felkoden:
Feltyp:
Körningsfel i Microsoft VBScript (0x800A000D)
Inkompatibla typer: 'rs'
/webb/Worldkeys 2005/partreg4.asp, line 21


Svara

Sv: Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-12 15:08:51 - Per Persson

SQL-satsen körs fortfarande inte...

Det borde vara något i stil med
Set rs = conn.execute sql


Svara

Sv:Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-12 19:52:50 - Peter Ribbestam

Jepp, skall förmodligen vara enligt nedan, men något i koden är fel eftersom den försöker att hämta den senaste registrerade partner's partnerv:

<%
dim regdatum
regdatum=date()
partner=Request.Form("partner")			'Partnerid:et på den nyregistrerade
sponsorid=Request.Form("sponsorid")	'Den som sponsrar
sponsornamn=Request.Form("sponsornamn")
partnernamn=Request.Form("partnernamn")
partnerid=Request.Form("partnerid")		'Placeras under detta partnerid
pbc=Request.Form("pbc")				'Businesscenter på ovanstående partnerid
ben=Request.Form("ben")		
		
If ben="vanster" Then
		Set conn=Server.createObject("ADODB.Connection")
		conn.Open "worldkey","",""
		Do
		sql = "SELECT partnerv WHERE partner=" & partner
		' PSEUDOKOD:
    		Set rs = conn.execute(sql)	'resultatet av SQL-satsen
		owner = partner
		partner = (rs("partnerv"))
		Loop While partnerv > 0
		sql = "Update partner SET partnerv =" & partner & " WHERE partner=" & owner
		conn.execute(sql)  	'sätt in värdet i tabellen när partnerv=0 enligt ovan
		Rs.Close
		conn.Close
		set rs = nothing
		set conn = nothing
		End IF
		
		'
%>


Svara

Sv: Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-12 20:02:25 - Per Persson

Vilken är startpartnern där du vill börja söka i en kedja?

partner=Request.Form("partner")            'Partnerid:et på den nyregistrerade
sponsorid=Request.Form("sponsorid")    'Den som sponsrar
partnerid=Request.Form("partnerid")        'Placeras under detta partnerid


Svara

Sv:Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-12 20:21:34 - Peter Ribbestam

Startpartnern är partnerid, partner skall läggas in i partnerv där partnerid=0
partnerid partnerv

7 8
8 9
9 0

om tex partnerid är 7, 8 eller 9 så skall partner läggas i partnerv=0.


Svara

Sv: Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-12 20:29:38 - Per Persson

<%
dim regdatum
regdatum=date()
partner=Request.Form("partner")			'Partnerid:et på den nyregistrerade
sponsorid=Request.Form("sponsorid")	'Den som sponsrar
sponsornamn=Request.Form("sponsornamn")
partnernamn=Request.Form("partnernamn")
partnerid=Request.Form("partnerid")		'Placeras under detta partnerid
pbc=Request.Form("pbc")				'Businesscenter på ovanstående partnerid
ben=Request.Form("ben")		
		
If ben="vanster" Then
		Set conn=Server.createObject("ADODB.Connection")
		conn.Open "worldkey","",""

		aktuellpartner = partnerid
		Do
			sql = "SELECT partnerv WHERE partner=" & aktuellpartner
	    		Set rs = conn.execute(sql)	'resultatet av SQL-satsen
			forpartner = aktuellpartner
			aktuellpartner = rs("partnerv")
		Loop While aktuellpartner > 0

		sql = "Update partner SET partnerv =" & partner & " WHERE partner=" & forpartner
		conn.execute(sql)  	'sätt in värdet i tabellen när partnerv=0 enligt ovan
		Rs.Close
		conn.Close
		set rs = nothing
		set conn = nothing
		End IF
%>


Svara

Sv:Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-12 21:13:48 - Peter Ribbestam

Tack Per,
tyvärr får jag felmeddelande:
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel (operator saknas) i frågeuttrycket 'partnerv WHERE partner=10'.
/webb/Worldkeys 2005/partreg4.asp, line 18

Partner 10 var den jag skickade in i partnerid.....


Svara

Sv: Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-12 21:45:34 - Per Persson

FROM-del saknades i SQL-satsen:

Do
            sql = "SELECT partnerv FROM partner WHERE partner=" & aktuellpartner
                Set rs = conn.execute(sql)    'resultatet av SQL-satsen


Svara

Sv:Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-12 21:58:01 - Peter Ribbestam

Satt just och tittade på denna sträng och såg att det inte stämde. tyvärr saknar den parameter enligt nedan.....
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 1 förväntades.
/webb/Worldkeys 2005/partreg4.asp, line 18



Svara

Sv: Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-12 22:17:28 - Per Persson

Och partnerid har angivits i formuläret?


Svara

Sv: Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-12 22:30:32 - Per Persson

Pröva att lägga in litet avlusningsutskrifter:

sql = "SELECT partnerv WHERE partner=" & aktuellpartner
response.write sql & "<br>"

sql = "Update partner SET partnerv =" & partner & " WHERE partner=" & forpartner
response.write sql & "<br>"


Svara

Sv:Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-12 22:46:54 - Peter Ribbestam

Dessa utskrifter visas inte utan felmeddelande visas:
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 1 förväntades.
/webb/Worldkeys 2005/partreg4.asp, line 19

Postsättningen till sidan är:
POST Data:
sponsorid=10&sponsornamn=&partner=39&partnerid=10&partnernamn=&pbc=1&ben=vanster&Koll.x=33&Koll.y=1 osv.

Där partnerid=10 -verkar vara knepigt detta......


Svara

Sv: Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-12 23:24:09 - Per Persson

Jag förstår inte varför första utskriften inte visas när den ligger före anropet av conn.execute(). Det är inte någon tidigare sats med conn som misslyckas (t.ex. conn.open)?

Vi får nog hoppas på någon som är mer hemma på hur Microsoft Access ODBC fungerar och dess felmeddelanden...


Svara

Sv:Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-13 08:49:24 - Fredrik Molnar

Blir det fel så visas inte resultatet fram till felet..

Lägg in:
<code>
response.end
</code>

efter du kört response.write (sql)..

/F


Svara

Sv: Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-13 09:23:59 - Peter Ribbestam

Tackar för detta! -Det hjälpte -nu får jag varje "avdelning" för sig. Följande utskrift efter första response.write:
SELECT partnerv FROM[partner] WHERE partner=10 ' denna verkar helt ok!

Nästa avdelning får jag inte då jag får felmeddelandet:
För få parametrar angavs. 1 förväntades.
/webb/Worldkeys 2005/partreg4.asp, line 21 ' För säkerhets skull bifogas koden här nedan:

<%
partner=Request.Form("partner")			'Partnerid:et på den nyregistrerade
sponsorid=Request.Form("sponsorid")	'Den som sponsrar
sponsornamn=Request.Form("sponsornamn")
partnernamn=Request.Form("partnernamn")
partnerid=Request.Form("partnerid")		'Placeras under detta partnerid
pbc=Request.Form("pbc")				'Businesscenter på ovanstående partnerid
ben=Request.Form("ben")		
		
If ben="vanster" Then
		Set conn=Server.createObject("ADODB.Connection")
		conn.Open "worldkey","",""
        aktuellpartner = partnerid
        Do
            sql = "SELECT partnerv FROM[partner] WHERE partner=" & aktuellpartner
	'response.write sql & "<br>"
	'response.end

                Set rs = conn.execute(sql)    'resultatet av SQL-satsen
            forpartner = aktuellpartner
            aktuellpartner = rs("partnerv")
        Loop While aktuellpartner > 0
        sql = "Update partner SET partnerv =" & partner & " WHERE partner=" & forpartner
	response.write sql & "<br>"
	response.end
        conn.execute(sql)      'sätt in värdet i tabellen när partnerv=0 enligt ovan
        Rs.Close
        conn.Close
        set rs = nothing
        set conn = nothing
        End IF
%>



Svara

Sv:Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-13 09:36:04 - Per Persson

Är det anropet conn.execute(sql) som skall ha en parameter till på något vis?


Svara

Sv: Någon som kan lösa en klurig loop i ett recordset?

Postades av 2005-01-13 10:31:54 - Peter Ribbestam

Har testkört scriptet fram och tillbaka och jag hamnar på precis som du säger,
på Set rs = conn.execute(sql) Det är något här som tydligen inte stämmer.

Har följande konklusion:

<%
 Set rs = conn.execute(sql)    		'resultatet av SQL-satsen, efter denna kan jag inte få ut 
					'någon responseWrite... 
                                                                                'verkar vara fel här på något sätt?
            forpartner = aktuellpartner		'forpartner= 10
            aktuellpartner = rs("partnerv")		' aktuellpartner får nytt värde här  
        Loop While aktuellpartner > 0		' kör loop så länge partnerv >0 - verkar ok!
%>


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 783
27 960
271 761
557
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies