Ανανέωση ιστοσελίδας

Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια!

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 13-09-15, 12:49
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 06-02-2010
Μηνύματα: 196
Προεπιλογή error

Καλημέρα σε όλους
Στην παρακάτω Function μου εμφανίζει (Μη έγκυρη δήλωση SQL) όποια βοήθεια δεκτή γιατί έχω κόλληση.


[CODE'' -- Επιστρέφει τα χιλιοστά του διαμερίσματος που επιλέγεται αναλόγως της σχετικής δαπάνης

Function Calculate_exp_part(app_id As Integer, exp_type As Integer) As Double
Dim rs As New ADODB.Recordset
Dim cn As ADODB.Connection
Dim cm_mm As String, el_mm As String
Dim fx_mm As String, sp_mm As String, h_mm As String
Dim con_e As String
Dim node As Variant
Dim diam, i As Integer
diam = DLookup("arithmoos_diam", "tbl_heating_system")
node = DLookup("dapani_anel", "tbl_heating_system")
Set cn = CurrentProject.Connection
cm_mm = "SELECT tbl_appartments.common_mm FROM tbl_appartments where id=CInt('" & app_id & "');"
If node = "Εξ' ίσου" Then
el_mm = 1 / diam
Else
el_mm = "SELECT tbl_appartments.elevator_mm FROM tbl_appartments where id=CInt('" & app_id & "');"
End If
h_mm = "SELECT tbl_appartments.e FROM tbl_appartments where id=CInt('" & app_id & "');"
fx_mm = "SELECT tbl_appartments.fixed_mm FROM tbl_appartments where id=CInt('" & app_id & "');"
sp_mm = "SELECT tbl_appartments.special_mm FROM tbl_appartments where id=CInt('" & app_id & "');"
con_e = "SELECT tbl_appartments.con_e FROM tbl_appartments where id=CInt('" & app_id & "');"
If exp_type = 1 Then
rs.Open cm_mm, cn, adOpenKeyset, adLockOptimistic
ElseIf exp_type = 2 Then
rs.Open el_mm, cn, adOpenKeyset, adLockOptimistic
ElseIf exp_type = 3 Then
rs.Open h_mm, cn, adOpenKeyset, adLockOptimistic
ElseIf exp_type = 4 Then
rs.Open fx_mm, cn, adOpenKeyset, adLockOptimistic
ElseIf exp_type = 5 Then
rs.Open sp_mm, cn, adOpenKeyset, adLockOptimistic
ElseIf exp_type = 6 Then
rs.Open con_e, cn, adOpenKeyset, adLockOptimistic
ElseIf exp_type = 7 Then
rs.Open fx_mm, cn, adOpenKeyset, adLockOptimistic
End If

If rs.RecordCount = 0 Then
Calculate_exp_part = 0
Else
Calculate_exp_part = Round(Nz(rs.Fields(0)), 4)
End If

End Function][/CODE]

Τελευταία επεξεργασία από το χρήστη anestaki : 13-09-15 στις 22:29.
Απάντηση με παράθεση
  #2  
Παλιά 13-09-15, 20:29
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλησπέρα

Γιώργο, μάλλον πρέπει να αλλάξεις τις προτάσεις με μορφή:

cm_mm = "SELECT tbl_appartments.common_mm FROM tbl_appartments where id=CInt('" & app_id & "');"

με προτάσεις της μορφής:

cm_mm = "SELECT tbl_appartments.common_mm FROM tbl_appartments where id=" & app_id

Φιλικά/Γιώργος
Απάντηση με παράθεση
  #3  
Παλιά 13-09-15, 22:50
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 06-02-2010
Μηνύματα: 196
Προεπιλογή

Καλησπέρα Γιώργο
Έχω εντοπίσει το πρόβλημα στο ερώτημα:
Κώδικας:
If node = "Εξ' ίσου" Then
el_mm = 1 / diam
Else
el_mm = "SELECT tbl_appartments.elevator_mm FROM tbl_appartments where id=" & app_id 
End If
Με αποτέλεσμα μα μην τρέχει η SQL
Κώδικας:
ElseIf exp_type = 2 Then
    rs.Open el_mm, cn, adOpenKeyset, adLockOptimistic
και δεν ξέρω πώς να το διορθώσω.
Απάντηση με παράθεση
  #4  
Παλιά 13-09-15, 23:33
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Γιώργο, δεν ξέρω τι ακριβώς κάνει ο κώδικας.

Αν το 1/diam είναι η τιμή της συνάρτησης, δοκίμασε:

If node = "Εξ' ίσου" Then
Calculate_exp_part= 1 / diam
Exit function
Else
el_mm = "SELECT tbl_appartments.elevator_mm FROM tbl_appartments where id=" & app_id
End If

Επίσης θα πρέπει να μη είναι μηδενική η μεταβλητή diam .
Απάντηση με παράθεση
  #5  
Παλιά 14-09-15, 00:17
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 06-02-2010
Μηνύματα: 196
Προεπιλογή

Γιώργο σε ευχάριστο πολύ λειτουργεί άψογα με την προσθήκη:
Κώδικας:
ElseIf exp_type = 2 Then
If node = "Εξ' ίσου" Then
    Calculate_exp_part = 1 / diam
  Exit Function
Else
    rs.Open el_mm, cn, adOpenKeyset, adLockOptimistic
    End If
Απάντηση με παράθεση
Απάντηση στο θέμα


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
Error anestaki Access - Ερωτήσεις / Απαντήσεις 2 26-11-15 17:59
error msg γιώργοςΚ Access - Ερωτήσεις / Απαντήσεις 0 27-05-14 10:58
[VBA] Compile Error jockey17 Excel - Ερωτήσεις / Απαντήσεις 1 13-05-14 20:45
[VBA] Error 2147417848 anestaki Excel - Ερωτήσεις / Απαντήσεις 1 11-02-14 23:07
error msg γιώργοςΚ Access - Ερωτήσεις / Απαντήσεις 0 12-12-13 14:52


Η ώρα είναι 21:38.