[ mika @ 27.10.2004. 12:29 ] @
LM, imam običnu tabelu, npr. sa dve kolone: ID, i Item.

Kada odradim:

SELECT Item FROM Table;

Dobijem:

Item1
Item2
Item3
Item4

E sad, meni treba da dobijem ispis u ovakvoj formi (Access):
Item1, Item2, Item3, Item4.

Kako ovo da uradim? Da li moram da idem ručno (u VBA), preko recordset-a, pa kroz WHILE loop, metodom MoveNext da se krećem kroz recordset i pravim string spajanjem?
(Verovatno postoji fora u SQL-u za ovo, ali pitanje je vezano za Access, zato sam i postovao u ovaj forum)


Pozdrav i hvala unapred!
[ Zidar @ 27.10.2004. 14:18 ] @
Koliko ja znam, samo While loop i recordset pomaze. Bio bih srecan da me neko ispravi u ovom slucaju.

:-)
[ gosha @ 27.10.2004. 19:15 ] @
Pa ajde da te neko ispravi :)

Mislim da se funkcija zove GetString i sastavni deo je klase Recordset.

Ako se ne zove tako sigurno postoji potrazi.


Pozdrav Goran.

[ mika @ 28.10.2004. 08:04 ] @
Što je najbolje ova funkcija RADI!!!

Evo primera: za tabelu koja ima sledeće elemente:
Code:

Tabela
------
Item1
Item2
Item3
Item4


... i za sledeći kod:
Code:

   Dim rst As New ADODB.Recordset
   Dim Ispis As String
    
   rst.Open "SELECT * FROM Table", CurrentProject.Connection, adOpenStatic, adLockReadOnly
    If rst.RecordCount > 0 Then    Ispis = rst.GetString(adClipString, , , ",")
    End If

    MsgBox (Ispis)
    rst.close


...daje sledeći ispis:

Item1,Item2,Item3,Item4,

Primetite zarez na kraju, dakle ova komande ne "seče" ovaj field-delimiter na kraju, to izgleda mora ručno, preko left/mid/right funkcija. Ako ima neko neki drugi predlog, molim neka postuje.

Jedino što ne kontam čemu služi ovaj StringFormatEnum parametar (prvi u nizu, adClipString)? Nisam uspeo iz Helpa da provalim.

U svakom slučaju, odličan info! Po meni treba da ide u Access bazu znanja. Pozdrav i hvala!
[ mika @ 28.10.2004. 09:50 ] @
I hajde da postujem ovde rešenje za "trimovanje" tog zareza na kraju, iako je trivijalno, radi kompletnosti:

Code:

Ispis = Mid(Ispis, 1, Len(Ispis) - 1)


Znači, ako je Ispis imao sledeći sadržaj:

Item1, Item2, Item3, Item4,

Posle izvršene linije koda koja je navedena iznad, Ispis će biti:

Item1, Item2, Item3, Item4

Dakle, bez zareza na kraju. Pozdrav!
[ filjo @ 28.10.2004. 10:35 ] @
A sto nisi stavio Left(Ispis, len(Ispis)-1) manje bi pisao.
[ mika @ 28.10.2004. 10:46 ] @
Da, mada sam ja mislio da moze i preko trim funkcije, ali ne. Whatever, vazno je da radi.
[ gosha @ 28.10.2004. 10:47 ] @
Ajde kad smo vec kod trimovanja:

Code:


Public Function StrLTrim(ByVal vVrednost As String, Optional vSta As String = " ") As String
    vVrednost = LTrim(vVrednost)
        
    If vSta <> " " And (Left(vVrednost, Len(vSta)) = vSta) Then
        vVrednost = Right(vVrednost, Len(vVrednost) - Len(vSta))
    End If
    StrLTrim = vVrednost
End Function

Public Function StrRTrim(ByVal vVrednost As String, Optional vSta As String = " ") As String
    vVrednost = RTrim(vVrednost)
        
    If vSta <> " " And (Right(vVrednost, Len(vSta)) = vSta) Then
        vVrednost = Left(vVrednost, Len(vVrednost) - Len(vSta))
    End If
    StrRTrim = vVrednost
End Function

Public Function StrTrim(ByVal vVrednost As String, Optional vSta As String = " ") As String
    vVrednost = StrLTrim(vVrednost, vSta)
    StrTrim = StrRTrim(vVrednost, vSta)
End Function



I sada bi tvoj kod izgledao:
...StrRTrim(rs.GetString(....),",")

Valjda ne treba nikakvo objasnjenje :)

Pozdrav Goran.
[ Zidar @ 28.10.2004. 13:41 ] @
Volim kad me neko ovako ispravi pa naucim nesto novo. :-)

'Ajde sad neko (Mika, Gosha, Filjo) da sve ovo sumira u jednoj poruci i doda to u Bazu Znanja.

Hvala puno svoj trojici.

:-)
[ mika @ 28.10.2004. 14:14 ] @
Done.