Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   Επιλογή φόρμας (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/472-epilogi-formas.html)

pm4698 03-03-10 10:58

Επιλογή φόρμας
 
Καλησπέρα σας!
Έχω το εξής:
Θέλω να πατάω ένα κουμπί και να μου εμφανίζει ένα MsgBox από το οποίο θα έχω 4 επιλογές (το κείμενο και δίπλα σε κάθε κείμενο ένα checkbox). Κάθε επιλογή αντιστοιχεί σε και σε μία φόρμα.
Με το που επιλέγω ένα checkbox τότε θέλω το όνομα της αντίστοιχης φόρμας να αποθηκεύεται σε ένα string για παράδειγμα και έπειτα, αυτό το string να το χρησιμοποιήσω για το άνοιγμα της φόρμας.

Ένα στο περίπου παράδειγμα είναι το εξής:

'public strInput As String 'Καταχώρηση ονόματος
Private button_name_Click()


Dim strInput1 As CheckBox 'Επιλογή 1ης φόρμας
Dim strInput2 As CheckBox 'Επιλογή 2ης φόρμας
Dim strInput3 As CheckBox 'Επιλογή 3ης φόρμας
Dim strInput4 As CheckBox 'Επιλογή 4ης φόρμας
φόρμας
Dim strMsg As String

Beep
strMsg = "Παρακαλώ, επιλέξτε την φόρμα που θέλετε να ανοίξετε"
MsgBox "Φόρμα1" & vbCrLf & vbLf & strInput1 & _
"Φόρμα2" & vbCrLf & vbLf & strInput2 & _
"Φόρμα3" & vbCrLf & vbLf & strInput3 & _
"Φόρμα4" & vbCrLf & vbLf & strInput4 & _
"", _
vbInformation, "Επιλογή φόρμας"

strInput = InputBox(Prompt:=strMsg, title:="Επιλογή φόρμας στοιχείων")

if me.strInput1.value= true then
strInput = "Φόρμα1 & "'"
else if me.strInput2.value= true then
strInput = "Φόρμα2 & "'"
else if me.strInput3.value= true then
strInput = "Φόρμα3 & "'"
else if me.strInput4.value= true then
strInput = "Φόρμα4 & "'"
end if
end if
end if
end if

end sub

Άρα στην μεταβλητή strInput θα αποθηκεύεται κάθε φορά το όνομα της φόρμας που θέλω.
Έπειτα όταν θέλω να την ανοίξω θα γράφω:
DoCmd.OpenForm "strInput", , , , , ,

Γίνεται κάτι τέτοιο?
Αν ναι, η σύνταξη του κώδικα που έχω γράψει είναι σωστή?

Ευχαριστώ εκ των προτέρων

Tasos 03-03-10 12:38

1 Συνημμένο(α)
Γεια σας!

Αγαπητέ φίλε Παντελή,
στο ζητούμενο σου θα σου πρότεινα μια διαφορετική προσέγγιση (βλ. συνημμένο).

Με εκτίμηση

Τάσος

mike04 03-03-10 21:25

1 Συνημμένο(α)
Καλησπέρα σε όλους.

Φίλε Παντελή πιστεύω πως το συνημμένο αρχείο είναι αυτό που ψάχνεις.

Υ.Γ. Θα πρέπει στον πίνακα Switchboard Items στην στήλη Argument να γράψεις το όνομα της φόρμας που θες να ανοίγει πατώντας την επιλογή αυτή.

Φιλικά Μιχάλης.

pm4698 07-03-10 19:40

Αυτό που θέλω είναι, να έχω για παράδειγμα 5 επιλογές. Όταν επιλέγω την πρώτη, να αποθηκεύεται σε ένα Public string η ονομασία της φόρμας που επέλεξα και να μην ανοίγει επιτόπου. Θα ανοίγει όταν την καλώ μέσα σε συνάρτηση με εντολή:
DoCmd.OpenForm "strInput", , , , , ,
όπου strInput Θα είναι η ονομασία της φόρμας που επέλεξα.
Ουσιαστικά χρησιμοποιώ το DoCmd.OpenForm "name_of_form", , , , , ,
Θέλω να μην ανοίγει σταθερά μία φόρμα αλλά να μπορώ να αλλάξω το όνομα της φόρμας ανάλογα με αυτό που θέλω να κάνω κάθε φορά.
Πιστεύω ότι ο κώδικας που έχω στο πρώτο post αντιπροσωπεύει αυτό που θέλω να κάνω.

pm4698 16-03-10 08:09

Δοκίμασα αυτό:

Option Compare Database
Dim strGeneralFormName As String

Private Sub button_Click()

On Error GoTo Err_button_Click

Dim intFormNumber As Integer

MsgBox "Για Δευτέρα πληκτρολογήστε το 1" & vbCrLf & vbLf & strInput1 & _
"Για Τρίτη πληκτρολογήστε το 2" & vbCrLf & vbLf & strInput2 & _
"Για Τετάρτη πληκτρολογήστε το 3" & vbCrLf & vbLf & strInput3 & _
"Για Πέμπτη πληκτρολογήστε το 4" & vbCrLf & vbLf & strInput4 & _
"", _
vbInformation, "Επιλογή φόρμας..."

intFormNumber = InputBox("Παρακαλώ πληκτρολογήστε έγκυρο αριθμό από το 1-4")

Select Case intFormNumber

Case Is = 1
strGeneralFormName = "MON"
Case Is = 2
strGeneralFormName = "TUS"
Case Is = 3
strGeneralFormName = "WED"
Case Is = 4
strGeneralFormName = "THU"
End Select

Exit_button_Click:
Exit Sub

Err_button_Click:
MsgBox Err.Description
Resume Exit_button_Click

End Sub

Επομένως πατώντας το κουμπί, θα αποθηκεύεται στην μεταβλητή strGeneralFormName το όνομα της φόρμας που επέλεξε ο χρήστης. Στη συνέχεια, θέλω η φόρμα που αποθηκεύτηκε σε αυτή τη μεταβλητή να ανοίγει στο after update του combobox από την εντολή:

DoCMD.OpenForm strGeneralFormName, , , , , , Me.Name & ";" & Me.combobox

αλλα μου βγάζει πρόβλημα ότι πρέπει να βάλω το όνομα κάποιας φόρμας στη θέση της μεταβλητής

Σημείωση: Η σύνταξη της τελευταίας γραμμής κώδικα θέλω να παραμείνει.
Δεν μπορώ δηλαδή να χρησιμοποιήσω απλά τον κώδικα:

DoCmd.OpenForm strGeneralFormName

Καμιά ιδέα?

Ευχαριστώ εκ των προτέρων

editolis 16-03-10 14:36

Κατα την γνωμη μου με αυτο τον "δρομο" που εχεις διαλεξει
πρεπει να δημιουργησεις ενα πινακα
που να εχει μεσα ολες τις παραμετρους σου και απο εκει
να ανοιγεις της φορμες σου αναλογως με αυτο που θελεις.

Καλη συνεχεια.

Tasos 16-03-10 17:04

1 Συνημμένο(α)
Καλησπέρα σε όλους!

Αγαπητέ Παντελή,

Δες ακόμα μια πρόταση που κάνει αυτά που περιγράφεις.

Με εκτίμηση

Τάσος

pm4698 17-03-10 11:47

Μου εμφανίζει κάποιο πρόβλημα λάθους σε περαιτέρω κομμάτι κώδικα.

Ο κώδικας είναι του στυλ forms!strFormName.combobox = me.textbox.value και μου βγάζει πρόβλημα ότι θέλει όνομα φόρμας στο forms!strFormName.

Καμιά ιδέα?

Tasos 17-03-10 12:48

Παντελή, ο κώδικας που περιγράφεις δεν έχει καμία σχέση με το παράδειγμα μου.

Προφανώς η μεταβλητή strFormName χρειάζεται να είναι Public όπως στο παράδειγμα μου
ή αναφέρεσαι σε υποφόρμα οπότε θα πρέπει να το χειριστείς διαφορετικά.

Διαφώτισε μας στο σημείο αυτό.

Φιλικά

Τάσος

pm4698 17-03-10 15:19

Ο τρόπος λειτουργίας είναι αυτός που περιγράφεται στο topic:

http://www.ms-office.gr/forum/access...-se-forma.html

μέχρι και το 5ο reply.

Αυτό που προσπαθώ να κάνω είναι στο
docmd.openform nameform κτλ
αλλά και σε κώδικα του τύπου:
Forms!frm2.text1 = Me.Name.Value
να αναφέρομαι στην φόρμα ως μεταβλητή.

Δηλαδή να επιλέγει ο χρήστης αρχικά το ποια φόρμα θα χρησιμοποιήσει και να χρησιμοποιείται πιο μετά σε σημεία τύπου:

DoCMD.OpenForm "frm2" , , , , , , Me.Name & ";" & Me.cbox1
και
Forms!frm2.text1 = Me.Name.Value

έτσι ώστε εάν θέλω να επιλέξω άλλη φόρμα να ανοίξει να είναι ¨ευέλικτος¨ ο κώδικας και να προσαρμόζεται σε άλλη φόρμα.


Η ώρα είναι 10:30.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2