Vær opmærksom på, at du kan få problemer med flg. linier:
rsMail.close og conn.close
Dette skyldes at det ikke er usædvanligt at du kommer i en situation hvor hhv. recordset eller connection ikke er åbne. Du kan tilføje et check i stil med nedenstående:
if rsMail.State = adStateOpen then rsMail.Close end if
Alternativt kan du lave en mere generisk funktion:
function CloseObj(byref objToClose) if objToClose.State = adStateOpen then objToClose.Close end if end function
Derefter erstatter du eks. conn.close med CloseObj(conn)
Bemærk at du skal enten skal inkludere adovbs.inc eller selv deklarere konstanten adStateOpen
Du kan teste effekten af ovenstående ved at unlade at åbne din connection og derefter prøve at lukke den.
P.S. Årsagen til din fejl og til at du skal tilføje conn som nute siger er, at du har angivet \"Option Explicit\".
Det er fordi du skal have tilføjet rsMail også, og det skyldes igen \"Option Explicit\" og den skal nu se således ud (og det skal den uanset om du indfører det check jeg har foreslået):
Option Explicit er en god måde at sikre at alle variabler er erklæret, men den kan godt give nogle grå hår i hovedet, hvis man ikke tænker over at man har angivet det.
Ikke for at være flabet, men vi prøver lige igen... Når du anvender \"Option Explicit\", skal ALLE variabler være erklæret eksplicit. Det betyder i dit tilfælde, at du også vil få problemer med
ArchiveSQL (som nu) og derefter objMail
Du kan gøre ét af følgende: 1. Fjerne Option Explicit - dermed undgår du flere fejl af denne type, men får til gengæld en mindre \"ren\" kode
2. Blive ved med at tilføje variabler til linien Dim strName, strEmail, strQuery, strAdresse, strBy, strTlf, strTlfArbejde, strSagsnr, strSalgsopstilling, strArchive, conn, rsMail indtil du ikke længere får denne type fejl.
Du skal min. tilføje ArchiveSQL og objMail, så linien ser ud som nedenstående:
Måske har jeg overset nogle variable i din kode, men du kan selv tilføje dem, efterhånden som de dukker op i fejlmeddelelsen \"Variable is undefined: [variabelnavn]
Jeg forstår ikke helt hvornår du vil gøre hvad, men, du kan lave en simpel if betingelse uden om dit SQL statement, eks.
if inStr(1, strEmail, \"@\", vbTextCompare) then kode der afvikles når den er udfyldt else kode der afvikles når den ikke er udfyldt end if
Læg mærke til, at jeg kontroller om der er et \"@\" i værdien, det er en simpel måde at slå 2 fluer med ét smæk; står der noget i feltet og indeholder det et @, er der en chance for at det er en e-mail adresse.
Hvis du har sat tilladnullængde = nej og obligatorisk = ja, skal feltet være udfyldt. Jeg tror det er hvad feltet står til nu, det indikerer fejlmeddelelsen fra før. Du kan evt. prøve at sætte alle felter til tilladnullængde = ja og obligatorisk = nej, så kan feltet være tomt og jo, du vil i så fald få tomme felter
Jeg kender ikke din datamodel, så du må prøve dig lidt frem med hvilk felter der skal være udfyldt før du vil skrive til databasen. Hvis du bare vil kontrollere for om feltet er udfyldt, kan du bruge
der skrives kun til databasen hvis man har valgt ja - og- hvis feltet strEmail er udfyldt
ellers intet
ved alt andet sendes der en email
Mange tak for hjælpen
100 til tmceu og 50 til nute
Synes godt om
Ny brugerNybegynder
Din løsning...
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.