Hej! Hmm... hur lägger du in data i din tabell? Via VB? Ja, allt sköts via Vb. Måste nog också som du säger bestämma på nåt sätt när anmälningstiden är ute. Ska testa det här med mod.Lista info i flex från databas, räkna posterna o kolla om de
Håller på med ett golfprogram (startlista).Har en Combo med tävlingsnamn som när jag markerar ska lista den aktuella tävlingen med alla personer som är anmäld till tävlingen i flexgriden. Detta görs med Sql. Så långt ok. Jag vill även räkna posterna och kolla om det är delbart med 4 (spelarna går ut 4 o 4). Om det skulle vara 5 så ska programmet se till att dem går 3 och 2. Sist så ska dem gå ut med 6 min. mellanrum. Om första 4 går ut 12.00, går nästa ut 12.06 osv. Det ska se ut ungefär så här:
Flexgrid:
Starttid Förnamn Efternamn
12.00 Eva Ek
12.00 Lars Larsson
12.00 Bo Ko
12.00 Sara Andersson
12.06 Ove Persson
12.06 Agneta Andersson
osv...
Kan man gör allt i Sql, eller ska man göra det i VB?
Vad är lättast och lämpligast?
Nån som kan hjälpa mig lite? Tacksam för all hjälp jag kan få.
Koden så här långt:
Private Sub Form_Load()
Call kopplaDb
Dim sql As String
Dim rsHamtaTavling As ADODB.Recordset
Set rsHamtaTavling = New ADODB.Recordset
sql = "SELECT tavling.tavlingsnamn, tavling.tavlingsid"
rsHamtaTavling.Open sql, dbKoppling, adOpenStatic
Do Until rsHamtaTavling.EOF
cboAngeTavling.AddItem rsHamtaTavling.Fields("tavlingsnamn")
cboAngeTavling.ItemData(cboAngeTavling.NewIndex) = rsHamtaTavling.Fields("tavlingsid")
rsHamtaTavling.MoveNext
Loop
cboAngeTavling.ListIndex = 0
grdLista.Clear
sKol = "^|Starttid |Förnamn |Efternamn "
grdLista.FormatString = sKol
End Sub
Private Sub cmdStartLista_Click()
Dim rsStartLista As ADODB.Recordset
Dim sql As String
Dim i As Boolean
With grdLista
.Visible = False
.Clear
.Rows = 1
.TextMatrix(0, 0) = "Starttid"
.TextMatrix(0, 1) = "Förnamn "
.TextMatrix(0, 2) = "Efternamn"
End With
Set rsStartLista = New ADODB.Recordset
sql = "SELECT tavling.starttid, person.fnamn, person.enamn WHERE tavling.tavlingsid = '" & cboAngeTavling.ItemData _(cboAngeTavling.ListIndex) & "' AND startlista.personid = startlista.tavlingsid"
rsStartLista.Open sql, dbKoppling, adOpenStatic
i = False
Do Until rsStartLista.EOF
grdLista.AddItem rsStartLista.Fields("starttid") & vbTab _
& rsStartLista.Fields("fnamn") & vbTab _
& rsStartLista.Fields("enamn") & vbTab
rsStartLista.MoveNext
i = True
Loop
rsStartLista.Close
Set rsStartLista = Nothing
grdLista.Row = 0
grdLista.Col = 0
grdLista.ColWidth(0) = 1000
grdLista.Text = "Starttid"
With grdLista
If Not i Then
.Rows = 2
End If
.Row = 1
.FixedRows = 1
.Visible = True
End With
End SubSv: Lista info i flex från databas, räkna posterna o kolla o
Tror nog att jag skulle göra som så att jag skulle ha en metod som
beräknar starttid när man anser att alla deltagare är registrerade (och som räknar om den vid behov)
Använd modulus (mod i VB, finns i SQL också om inte jag minns fel).
IF antal mod 4 = 0 then (om antalet spelare är jämt delbart med 4)
beräkna antal starttider
ELSEIF ...
ELSE...
END IF
CINT(antal mod 4) ger resten medan
CINT(antal/4) ger haltalsdelen av divisionen.
/EmmaSv: Lista info i flex från databas, räkna posterna o kolla o
/Jari