|
[ 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.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|