webForumDet fria alternativet

NoteID = 0

11 svar · 319 visningar · startad av Fraggel

FraggelMedlem sedan sep. 2003301 inlägg
#1

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
#2

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
#3

strSQL = "SELECT *, note FROM qryActivity q,notes n WHERE q.noteid=n.noteid and activity_ID=" & unid

FraggelMedlem sedan sep. 2003301 inlägg
#4

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
#5

Tycker att allt detta borde gå att hämta med en sql-sats

FraggelMedlem sedan sep. 2003301 inlägg
#6

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
#7

Vad får du för resultat om du ändrar :
presentActivity = strTHTML
till
presentActivity = noteID

FraggelMedlem sedan sep. 2003301 inlägg
#8

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
#9

Använd inte * i din sql utan deklarera ut samtliga kolumner du skall ha istället.

FraggelMedlem sedan sep. 2003301 inlägg
#10

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
#11

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
#12

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å...

135 ms totalt · 3 externa anrop · v20260731065814-full.cf67ef55
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)