FraggelMedlem sedan sep. 2003301 inlägg Av någon anledning så vill denna kod inte hämta värdet somligger i fältet note_ID, det finns data i fältet men vad som än står där så returneras värdet 0.
Tabellen är en qry av ett flertal tabeller i ACCESS xp.
Function presentActivity(unid)
Dim strTHTML
Dim strSQL
strSQL = "SELECT * FROM qryActivity WHERE activity_ID=" & unid
Set objConn = server.CreateObject("ADODB.Connection")
Set objRs = server.CreateObject("ADODB.Recordset")
objConn.Open (strDatabase) ' Opens database, strDatabase public
objRs.Open strSQL,objConn,1,2 ' Opens Recordset
Dim name
Dim f_name
Dim s_name
Dim username
Dim note
Dim statusText
Dim description
Dim priority
customer_ID = objRs("customer_ID") 'public
noteID = objRs("note_ID") 'public
name = objRs("name") 'Company name
f_name = objRs("f_name") 'Contact f_name
s_name = objRs("s_name") 'Contact f_name
username = objRs("username") 'Customer owner short username
statusText = objRs("statusText") 'Text for Activity status
description = objRs("description") 'Text for describing type of activty
priority = objRs("priority") 'Priority of activity
objRs.Close
objConn.Close
note = insertNote(noteID) 'Gets Notes from table Notes in db.
strTHTML = strTHTML &_
"<table><tr>" &_
"<td align=""right"">Företag:</td><td class=""boxed"">" & name & "</td>" &_
"<td align=""right"">Kontakt:</td><td class=""boxed"">" & f_name & " " & s_name & "</td>" &_
"<td align=""right"">Kundanvarig:</td><td class=""boxed"">" & username & "</td>" &_
"<tr><td colspan=""6"">" & note & "</td></tr>" &_
"<td align=""right"">Status:</td><td class=""boxed"">" & statusText & "</td><td align=""right"">Angående:</td><td class=""boxed"">" & description & "</td>" &_
"<td align=""right"">Prioritet:</td><td class=""boxed"">" & priority & "<td>" &_
"</tr></table>"
presentActivity = strTHTML
End Function
Jesper TMedlem sedan nov. 20017 144 inlägg 1. Tycker att detta borde gå att hämta med en sql-sats
2. vad/var är funktionen insertNote()?
Jesper TMedlem sedan nov. 20017 144 inlägg strSQL = "SELECT *, note FROM qryActivity q,notes n WHERE q.noteid=n.noteid and activity_ID=" & unid
FraggelMedlem sedan sep. 2003301 inlägg 1 Men det gör jag ju...
strSQL = "SELECT * FROM qryActivity WHERE activity_ID=" & unid
2 inserNote()
Hämtar texten note ur en annan tabell som är gemensam för ALLA tabeller som innehåller en note, detta för att spara plats, då kanske inte alla poster har en note...
Jesper TMedlem sedan nov. 20017 144 inlägg Tycker att allt detta borde gå att hämta med en sql-sats
FraggelMedlem sedan sep. 2003301 inlägg Hmm saken är den att den "godkänner" ju objRs("note_ID") så datan finns ju där... Ialla fall så finns det med i "collectionen"
Jesper TMedlem sedan nov. 20017 144 inlägg Vad får du för resultat om du ändrar :
presentActivity = strTHTML
till
presentActivity = noteID
FraggelMedlem sedan sep. 2003301 inlägg presentActivity = noteID = 0
Jag hittade dock problemet,
I tabellen finns det flera fält med samma namn från olika tabeller...
men dom står som activity.note_ID, contact.note_ID och customer.note_ID men det går inte att hämta upp värdet av dem med objRs("activity.note_ID") osv utan den sväljer enbart objRs("note_ID") men då levererar den fel värde...
Så jag har löst det tillfälligt... MEN hur löser jag det för att få det att funka med ALLA dessa fälten? utan att göra om hela djävla databasen (det är för längt gånget för att jag skall hinna med det...
Jesper TMedlem sedan nov. 20017 144 inlägg Använd inte * i din sql utan deklarera ut samtliga kolumner du skall ha istället.
FraggelMedlem sedan sep. 2003301 inlägg Suck :) kan du gissa vilken SQL sats vi snackar om då !!!
Det rör sig om ett 30tal fält :)
EclipseMedlem sedan juli 20003 825 inlägg Stjärnan suger "fet elefantballe" (citat från en kändis).
Använd inte stjärnan.
***
Du kan DIMa kod på detta sättet:
Dim name, f_name, s_name, username, note, statusText ... osv
Samma sak med att tilldela värde,
name = myRow(1,0) : f_name = myRow(2,0) : s_name = myRow(3,0) : username = myRow(4,0) : note = myRow(5,0) : statusText = myRow(6,0) ... osv
***
Jag håller med dig, 30 poster är många poster och det tar mycket plats. Men om du inte skriver all kod i höjdled utan även utnyttjar bredden blir det lite mer överskådligare.
Det är bättre du skriver så här:
SQL = "SELECT ID, name, f_name, s_name, username, note, statusText ... FROM [minTabell]"
set mySQL = Conn.Execute(SQL)
och sen som ovan,
name = mySQL(1) : f_name = mySQL(2) : s_name = mySQL(3) : username = mySQL(4) : note = mySQL(5) : statusText = mySQL(6) ... osv
FraggelMedlem sedan sep. 2003301 inlägg Hajjar nästa vad du är ute efter jag löste det dock genom att Lägga ALLA fält namni en separat tabell och "auto generera" min SQL sats...
Fult men det funkar och blir lätt läst i koden :)
Och mycket enkelt att felsöka då...