nå ok... Jeg troede det var alle... Så prøve enten: SELECT * FROM test WHERE (SELECT TOP 1 Sprog FROM nyhedsbrev ORDER BY IDnyhedsbrev DESC)= test.Sprog ORDER BY Email ASC eller SELECT * FROM test WHERE test.Sprog IN (SELECT TOP 1 Sprog FROM nyhedsbrev ORDER BY IDNyhedsbrev DESC) ORDER BY email ASC
Microsoft OLE DB Provider for ODBC Drivers error '80040e09' [TCX][MyODBC]You have an error in your SQL syntax near 'SELECT TOP 1 Sprog FROM nyhedsbrev ORDER BY IDNyhedsbrev DESC) ORDER BY Email AS' at line 1 /admin/nyhedsbrev/Copy of script_nyhedsbrev.asp, line 26
ja... ok... jeg tror godt jeg forstår problematikken... Jeg synes bare at sql'en burde virke. Og du er sikker på at test.Sprog og nyhedsbrev.Sprog er af samme type? Ellers kan jeg ikke lige se hvorfor det ikke skulle virke... Selvom jeg godt kan forstå på dig at det gør det ikke... :-(
ja de er begge type TEXT og jeg har checket at alt passer til det der står i databasen - det er underligt. måske kan jeg klare det med en IF THEN ELSE i selve koden.
sådan er hele min kode (indsætter forslag i ny post):
<%@LANGUAGE="VBSCRIPT"%> <!--#include file="../../Connections/database.asp" --> <% Dim rsNyhedsbrev Dim rsNyhedsbrev_numRows Set rsNyhedsbrev = Server.CreateObject("ADODB.Recordset") rsNyhedsbrev.ActiveConnection = MM_database_STRING rsNyhedsbrev.Source = "SELECT * FROM nyhedsbrev ORDER BY IDnyhedsbrev DESC" rsNyhedsbrev.CursorType = 0 rsNyhedsbrev.CursorLocation = 2 rsNyhedsbrev.LockType = 1 rsNyhedsbrev.Open() rsNyhedsbrev_numRows = 0
Overskrift = (rsNyhedsbrev.Fields.Item("Overskrift").Value) Tekst = rsNyhedsbrev("Tekst")
Dim rsEmails Dim rsEmails_numRows Set rsEmails = Server.CreateObject("ADODB.Recordset") rsEmails.ActiveConnection = MM_database_STRING rsEmails.Source = "SELECT * from test ORDER BY Email ASC" rsEmails.CursorType = 0 rsEmails.CursorLocation = 2 rsEmails.LockType = 1 rsEmails.Open() rsEmails_numRows = 0
on error resume next Do While Not rsEmails.EOF strEmail = (rsEmails.Fields.Item("Email").Value)
burde jeg så kunne klare den med: on error resume next Do While Not rsEmails.EOF AND ((rsNyhedsbrev.Fields.Item("Sprog").Value)=(rsEmails.Fields.Item("Sprog").Value)) strEmail = (rsEmails.Fields.Item("Email").Value)
Du kan helt klart lave funktionen i kode i stedet. Jeg ville nok gøre det lidt anderledes end du skitserer. I første sql ville jeg tage "limit 1" igen - da du hiver alle nyhedsbreve ud - men alligevel kun bruger det første (bare lidt performance). I anden sql skal du huske at have sprog med som parameter. Altså SELECT * FROM test WHERE Sprog = "& rsnyhedsbrev("sprog") &" ORDER BY Email ASC Så er du fri for at lave if i kombination med while - som du har skrevet den tror jeg ikke den virker - da while vist ville stoppe første gang den møder en med et andet sprog og det er jo ikke meningen.
Ups... glemte du brugte tekst til sprog... Lav: SELECT * FROM test WHERE Sprog = "& rsnyhedsbrev("sprog") &" ORDER BY Email ASC om til : SELECT * FROM test WHERE Sprog = '"& rsnyhedsbrev("sprog") &"' ORDER BY Email ASC Der skal lige "klammer" ' om sproget.
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.