Εμφάνιση ενός μόνο μηνύματος
  #3  
Παλιά 24-07-22, 11:40
jamman Ο χρήστης jamman δεν είναι συνδεδεμένος
Όνομα: Βασίλης
Έκδοση λογισμικού Office: Ms-Office 2007, Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 25-12-2017
Μηνύματα: 23
Προεπιλογή

Καλημέρα και πάλι σε όλους.

Μάλλον όλοι διακοπάρουν.

Με πολύ κόπο γιατί γνωρίζω τα βασικά πάνω στη VB , κατάφερα να φτιάξω τα παραπάνω.

Αυτό που αντιμετωπίζω τώρα είναι ότι έχω μία φόρμα ΡΑΝΤΕΒΟΥ με subForm ΕΞΕΤΑΣΗ.
Στη main form έχω ένα combo box με τιμές που παίρνει από την έναρξη - λήξη του ιατρείου (δλδ. 09:00 - 09:30 έως 20:00). Μόλις επιλέγω από εκεί την τιμή , αυτή αποθηκεύεται στην subform.

Όμως , αν η καταχώρηση γίνει από τη φόρμα ΕΞΕΤΑΣΗ , δεν αναγνωρίζεται στη φόρμα ΡΑΝΤΕΒΟΥ , έτσι ώστε να αποκλείεται η τιμή από το combo box.

Βρήκα τον παρακάτω κώδικα και προφανώς κάτι πρέπει να μετατρέψω. Αυτό καταλαβαίνω τουλάχιστον. Για ημερομηνία χρησιμοποιώ τη σύντομη ημερομηνία με μορφή dd\mm\yyyy και για την ώρα HH:mm.

Private Sub cboTime_Enter()

Dim i As Date, n As Integer, oRS As DAO.Recordset, sSQL As String
Dim dLowerbreak As Date, dUpperBreak As Date, dDuration As Date
Dim dLowerPrecision As Date, dUpperPrecision As Date

cbotime.RowSourceType = "Value List"
cbotime.RowSource = ""

If IsNull(txtStart) Then Exit Sub Else i = txtStart
If Me.NewRecord = True Then
DoCmd.RunCommand acCmdSaveRecord
End If

sSQL = "SELECT ID, ΗΜΕΡΟΜΗΝΙΑ, ΩΡΑ"
sSQL = sSQL & " FROM qrySubformAppoints"
sSQL = sSQL & " WHERE ID= " & Me.ID & _
" AND ΗΜΕΡΟΜΗΝΙΑ=#" & Me.txtAppointDate & "#"

Set oRS = CurrentDb.OpenRecordset(sSQL)

dDuration = TimeValue("00:30:00")
dLowerbreak = Break - TimeValue("00:30") 'Break is a field
dUpperBreak = Break + TimeValue("03:30")

If oRS.RecordCount = 0 Then
Do
If i <= dLowerbreak Or i >= dUpperBreak Then
cbotime.AddItem i
End If
i = i + dDuration
Loop Until i >= txtEnd
Else
Do
If i <= dLowerbreak Or i >= dUpperBreak Then
dLowerPrecision = i - TimeValue("00:05")
dUpperPrecision = i + TimeValue("00:05")
oRS.FindFirst "[ΩΡΑ] Between #" & dLowerPrecision & "# And #" & dUpperPrecision & "#"
If oRS.NoMatch Then cbotime.AddItem i
End If
i = i + dDuration
Loop Until i >= txtEnd
End If
oRS.Close

End Sub

Μπορεί κάποιος να βοηθήσει; Ξέρω είναι πολύ προχωρημένο για μένα αλλά αφού τα κατάφερα μέχρι τώρα , θέλω να το παλέψω. Ευχαριστώ.

Τελευταία επεξεργασία από το χρήστη jamman : 24-07-22 στις 12:11.
Απάντηση με παράθεση