radioblaster
16.11.10,18:25
zdravim robim jednu databazu v accesse a potreboval by som poradit s denormalizaciou dat. v tabulke mam taketo udaje:
id.....zaner
1......akcny
2......thriler
3.....horor
a potreboval by som takyto vysledok:
zaner: akcny, thriler, horor
zrejme bude treba nejaky VBA kod, ktory ale neviem napisat...
id.....zaner
1......akcny
2......thriler
3.....horor
a potreboval by som takyto vysledok:
zaner: akcny, thriler, horor
zrejme bude treba nejaky VBA kod, ktory ale neviem napisat...
PaloPa
17.11.10,09:37
Stačí použiť funkciu, akú máš v príklade a výsledný text môžeš použiť v reporte i vo formulári.
Option Compare Database
Sub test()
Dim x
x = "zaner: " & VratText("TableZanre", "id", "zaner")
Debug.Print x
End Sub
Public Function VratText(xTable As String, xOrd As String, xFieldName As String) As String
Dim MyDB As Database, MyTbl As Recordset, x_sql As String
Dim ix As Long
Dim x_BY, x_SDZ, xFul
On Error GoTo Err_VText
Set MyDB = CurrentDb 'DBEngine.Workspaces(0).Databases(0)
x_sql = " SELECT * FROM " & xTable 'WHERE ( x=y)
x_sql = x_sql & " ORDER BY " & xOrd
' *** Napln text texty
Set MyTbl = MyDB.OpenRecordset(x_sql)
MyTbl.MoveFirst ' Locate first record.
ix = MyTbl.RecordCount
Do Until MyTbl.EOF ' Begin loop.
xfulltext = xfulltext & IIf(xfulltext <> "", ",", "") & CStr(MyTbl.Fields(xFieldName).Value)
MyTbl.MoveNext ' Locate next record.
ix = ix - 1 ' Increase index
Loop ' End of loop.
Exit_VText:
MyTbl.Close ' Close table.
MyDB.Close
VratText = xfulltext
Exit Function
Err_VText:
MsgBox Error$
VratText = ""
Resume Exit_VText
End Function
Môžeš vyskúšať pre formulár Form1
Palo
Option Compare Database
Sub test()
Dim x
x = "zaner: " & VratText("TableZanre", "id", "zaner")
Debug.Print x
End Sub
Public Function VratText(xTable As String, xOrd As String, xFieldName As String) As String
Dim MyDB As Database, MyTbl As Recordset, x_sql As String
Dim ix As Long
Dim x_BY, x_SDZ, xFul
On Error GoTo Err_VText
Set MyDB = CurrentDb 'DBEngine.Workspaces(0).Databases(0)
x_sql = " SELECT * FROM " & xTable 'WHERE ( x=y)
x_sql = x_sql & " ORDER BY " & xOrd
' *** Napln text texty
Set MyTbl = MyDB.OpenRecordset(x_sql)
MyTbl.MoveFirst ' Locate first record.
ix = MyTbl.RecordCount
Do Until MyTbl.EOF ' Begin loop.
xfulltext = xfulltext & IIf(xfulltext <> "", ",", "") & CStr(MyTbl.Fields(xFieldName).Value)
MyTbl.MoveNext ' Locate next record.
ix = ix - 1 ' Increase index
Loop ' End of loop.
Exit_VText:
MyTbl.Close ' Close table.
MyDB.Close
VratText = xfulltext
Exit Function
Err_VText:
MsgBox Error$
VratText = ""
Resume Exit_VText
End Function
Môžeš vyskúšať pre formulár Form1
Palo
radioblaster
18.11.10,09:22
no zda sa ze je to presne to co potrebujem, skusim to upravit pre svoje potreby a popripade napisem...
Dakujem
Dakujem