Just nu i M3-nätverket
Jump to content

Connection 2 ggr


Admini

Recommended Posts

Kan man skriva så här:

set Connect=Server.CreateObject("ADODB.Connection")
Connect.open "PROVIDER=Microsoft.Jet.OLEDB.4.0; Data Source=db050"
Set RecSet=Server.CreateObject("ADODB.Recordset")
visa="...koder..."
RecSet.Open visa, Connect,0,3

set Conn=Server.CreateObject("ADODB.Connection")
Conn.open "PROVIDER=Microsoft.Jet.OLEDB.4.0; Data Source=db050"
Set RS=Server.CreateObject("ADODB.Recordset")
sql="...koder..."
RS.Open sql, Conn,0,3

While Not RecSet.Eof
-------koder
While Not RS.Eof
------koder
RecSet.MoveNext
Wend
RS.MoveNext
Wend
Hur vet han i så fall vilken Wend hör till vilken While?
Link to comment
Share on other sites

Ja, nästan.

 

Du bör dock köra .movenext på det recordset som loopas, dvs:

 

While Not RecSet.Eof

-------koder

While Not RS.Eof

------koder

RS.MoveNext

Wend

RecSet.MoveNext

Wend

 

 

 

 

Link to comment
Share on other sites

Så som du hade skrivit, dvs att köra movenext på RecSet och kolla EOF på RS så kommer blir det en evighetsloop (RS räknas inte upp).

 

 

 

Link to comment
Share on other sites

Loopar avslutas i omvänd ordning som de började.

 

dvs:

 

start loop 1

start loop 2

..

..

slut loop 2

slut loop 1

 

Alltid, varje gång, helt utan undantag.

 

 

Link to comment
Share on other sites

Ja, fast det är rätt onödigt att öppna kopplingen mot databasen 2 gånger. Bättre att bara göra det 1 gång.

 

'-- declare variables --
Dim sSQL,sSQL2
Dim oConn, oRs, oRs2

'-- build SQL statment --
sSQL = "......"
sSQL2 = "......"
'-- connection to databas --
set oConn = server.createObject("ADODB.Connection")
oConn.open CONNECTION_STRIN

oRs.open sSQL, oConn
oRs2.open sSQL2, oConn

do until oRs.eof
response.write "whatever..."
do until oRs2.eof
 response.write "whatever2..."
 oRs2.movenext
loop
oRs2.moveFirst '-- MÅSTE VARA MED
oRs.movenext
loop

'-- uninit --
oRs.close: set oRs = nothing
oRs2.close: set oRs2 = nothing

 

Så kan du skriva, dock inget som rekomenderas då du för varje post i oRs oppar igenom oRs2 från början till slut. Sedan är det så att det kommer ju vara samma värden som loppas ut i oRs2 för varje ny oRs, det kanske inte är det du är ute efter.

 

Skall du göra så här så använd dig av getRows() som ger lite bättre prestanda, samt gör att du kan stänga din databaskoppling tidigare.

 

Ä dock övertygad att det finns en annan bättre lösning på problemet om du berättar vad det är du vill göra.

 

- Magnus

-----------------------------------------------------

ju mer jag lär mig ju mer inser jag så lite jag kan

 

Link to comment
Share on other sites

Ok ,

Vad jag vill ha gjort är detta:

Jag har en frågeformulär som användaren svarar på genom att välja svarsalternativ.

Grågor och svarsalternativen finns i en tabell för sig.

Användarens svar samlas i en annan tabell vilken skapas just när en frågeformulär sparas!

Det betyder att denna "svars-tabell" har lika många kolumner som det finns frågor i EN formulär!

Varje gång en användare fyller i o skickar formuläret så skpas det en rad/post i "svars-tabell"en.

Sedan måste resultatet redovisas ju helst som statistik över hur många som svarade på vad.

Och det är här jag har problem.

Alltså statistiken: varje fråga får skrivas ut bara en gång, även svarsalternativen, men svaren ska redovisas som en summa framför alternativet.

Låter det som relationsdatabaser eller har jag fel?

 

[inlägget ändrat 2002-12-10 19:18:18 av Admini]

Link to comment
Share on other sites

Hej!

 

Du får nog visa din tabellstruktur för hur svaren lagras.

 

Att skapa en ny tabell för varje frågeformulär låter inte så genomtänkt. Separera istället frågor, svar samt strukturen på frågeformulären i separata tabeller.

 

/foo

 

Link to comment
Share on other sites

Jag tänkte så här: eftersom en fråga kan svaras av 1000 eller mer så kan tabellen bli alldeles för stor.

Det var därför jag valde att ha en för varje.

Tabellstruktur

tblQuestion

Id|Fragor|Alternativen |Antal|Datum|

37|......|t1=..,t2=.., |2 |.....|

38|......|h1=..,h2=..,h3=|3 |.....|

 

tblSvar

Id|37|38|39|40|41|42|43|....

1 |t1|h2|t2|t1|h1|s2|k1|....

2 |t1|h1|h3|t3|s1|s2|k1|....

 

Kolumnnamn på tblSvar är desamma som ID på tblQuestion för att lättare kunna hitta svaren

 

Nu vill jag visa t.ex. Fraga 37 från tabell tblQuestion samt t1 och t2 under Alternativ, dessutom vill jag veta hur många t1 och t2 finns under kolumn 37 i tabell tblSvar.

Allt på en rad.

 

[inlägget ändrat 2002-12-11 13:44:50 av Admini]

Link to comment
Share on other sites

Din databasstruktur ser lite konstig ut.

 

Bland annat så har du i kolumnen alternativ lagt in mer än 1 värde.

 

För att få en korrekt struktur enligt alla konstens regler så skall en kolumn ALLTID innehålle endast och endast ett värde. Alltså om jag har en databas som lagrar färger i regnbågen. så får jag INTE göra så här.

 

tabell

===========

ID|färger.

--------------------------

regnbågen|blå,röd,gul...

 

utan så fall får jag dela upp den i 2 tabeller.

 

tabell_1

======

ID|Namn

---------

1|Regnbågen

 

 

tabell_2

========

ID|Färg

----------

1|Röd

1|Gul

1|Blå

 

nu vill man kanske ändra färgen röd, till rött, om man då har skrivit som vi har måste man gå igenom alla poster i tabell_2 och ändra, nu är det inte så farlig i vårt exemple, men oftas lägger man alla färger i en tabell, så man får 3 tabeller.

 

tabell_1

========

ID|Namn

1|Regnbågen

 

tabell_2

========

ID|Färg

1|Röd

2|blå

3|Gul

 

Tabell_3 (som länkar ihop tabell_1 och tabell_2)

===========

ID_t1|ID_t2

-----------

1|1

1|2

1|3

 

Nu har du en bra databasstuktur som följer normaliseringregler med relationer.

 

Tycker även tblSvar ser lite lustig ut. Borde gå att lösa med 3 kolumner.

 

tblSvar

==============

ID_user|ID_Fråga|svar

---------------------

1|37|t1

1|38|h2

1|39|t2

2|37|t1

2|38|h1

2|39|h3

osv osv

 

Du skall komma ihåg att en databas är byggd för att hanter STORA mängder data, det spelar inte så stor roll hur mycket data som finns i den, om man byggt upp databasen korrekt.

 

1000 svar är ingenting för en databas

 

- Magnus

-----------------------------------------------------

ju mer jag lär mig ju mer inser jag så lite jag kan

 

Link to comment
Share on other sites

Hej igen

Hur jag än vänder o vrider på det så kan jag inte komma ifrån att antingen ha en tabell med många upprepningar eller en tabell med många tomma fält! Och båda sakerna är förbjudna enligt normaliseringsreglerna, har jag förstått.

Jag har helt enkelt en 3-D problem! att lösa.

Tabellen Question innehåller flera frågeformulär med många frågor vardera.

Olika frågor kan ha olika många svarsalternativ och ibland en kombination av "svarsformat".

T.ex 3 radioknappar och 2 textrutor, som användaren väljer att klicka i en radio och skriva i 1, båda eller ingen av textrutorna.

Dessutom kan hända att en användare låter bli att svara på en eller flera frågor.

Tabellen Answers innehåller en kolumn för svarsalternativen, en för ID_Question och en för förklaring framför knappen(radio,checkbox,textruta,...)

Tabellen User_input, vilket svaren samlas i, innehåller ID_Question, ID_Answers, User_input och Forklaring(textrutan)

Vad göra?

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...