Rubriken låter lite kryptisk, och det är mycket att förklara.Problem med inset och formatering.
Jag registrera mina låtar i AccesXP(skall ha det på nätet).
De registrerade låtarna kan vara utan textförfattare eller ha en till tre textförfattare.
För att fixa detta så ser de två intressanta tabelerna ut så här:
<code>
t_SongForfattare
ID räknare
ArrNo text i relation med t_songtitlar
For_Id tal i relation med t_forfattare
</code>
För att ta fram författarna så har jag fått hjälp här med en väldigt inveklad SQL.
<code>
strSQL = "SELECT s.ArrNo, s.songtitel AS Sångtitel, s.Kategori, t_Kategori.Kategori, s.Album, t_Album.Album, s.Verknr AS Verknr,s.Anteck, (SELECT TOP 1 namn FROM t_songforfattare INNER JOIN t_forfattare ON t_songforfattare.for_id = t_forfattare.for_id WHERE ArrNo = s.ArrNo ORDER BY t_songforfattare.for_id ASC) AS Författare, (SELECT TOP 1 namn FROM t_songforfattare INNER JOIN t_forfattare ON t_songforfattare.for_id = t_forfattare.for_id WHERE ArrNo = s.ArrNo AND t_songforfattare.for_id > (SELECT TOP 1 for_id FROM t_songforfattare WHERE ArrNo = s.ArrNo ORDER BY for_id ASC) ORDER BY t_songforfattare.for_id ASC) AS Författare2, (SELECT TOP 1 namn FROM t_songforfattare INNER JOIN t_forfattare ON t_songforfattare.for_id = t_forfattare.for_id WHERE ArrNo = s.ArrNo AND t_songforfattare.for_id > (SELECT TOP 1 for_id FROM t_songforfattare WHERE ArrNo = s.ArrNo AND t_songforfattare.for_id > (SELECT TOP 1 for_id FROM t_songforfattare WHERE ArrNo = s.ArrNo ORDER BY for_id ASC) ORDER BY t_songforfattare.for_id ASC)) AS Författare3, s.Stim, s.Hide " &_
" FROM t_Album RIGHT JOIN (t_Kategori RIGHT JOIN t_songtitlar AS s ON t_Kategori.Kat_ID = s.Kategori) ON t_Album.CD_ID = s.Album " &_
" WHERE s.ArrNo ='"& Request("Id") & "'"
</code>
När jag skall uppdatera så har jag ett formulär med div rutor och listboxar.
<code>
'en del koder
strSQL="Select For_Id,Namn FROM t_Forfattare"
Set RS2 = Server.CreateObject("ADODB.Recordset")
'osv
IF NOT IsNull(rst("Författare")) THEN
SQL="SELECT t_Forfattare.For_Id, t_Forfattare.Namn FROM t_Forfattare " &_
" WHERE t_Forfattare.Namn='" & rst("Författare") & "'"
Set RS5 = Server.CreateObject("ADODB.Recordset")
RS5.Open SQL, Connection, adOpenStatic, _
adLockReadOnly, adCmdText
strNamn=RS5(0)
ELSE
strNamn=""
End If
'response.write rst("Författare") & RS5(0)
%>
<select CLASS="SKUGGA" SIZE="1" Style ="width: 130" NAME="Forfattare">
<option value="<% = strNamn %>"><% = rst("Författare") %></option>
<% Do While Not RS2.EOF %>
<option value="<% = RS2("For_Id") %>"><% = RS2("Namn") %></option>
<% RS2.movenext
loop %>
</select>
</code>
Detta gör jag för alla tre författarna(Forfattare,Forfattare2Forfattare3)
När jag sedan skall spara:
<code>
If LEN(Request.Form("Forfattare"))> 0 then
strForFattare=Clng(Request.Form("Forfattare"))
end if
</code>
Likadant för alla
Sedan
<code>
strArrNo = Request("Id")
Dim i
For i = 1 TO 3
Connection.Execute("DELETE FROM t_SongForFattare WHERE ArrNo = '" & Byta(strArrNo) & "'")
NEXT
If LEN(strForFattare)>0 then
SQL = ("Insert Into t_songForfattare(ArrNo,For_Id)values('" & strArrNo & "'," & strForFattare & ")")
Connection.Execute(SQL)
End If
</code>
För att slippa krabba med insert eller uppdate så deletar jag allt först.
Problemet:
Jag får inte den sorterings ordning på författarna som jag ville ha. I VB var det inga problem men nu.
Några tips?