Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > Σύνδεση φόρμας με SQL βάση

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #11  
Παλιά 31-07-20, 01:05
Όνομα: Χρήστος
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 18-11-2012
Περιοχή: Deutschland
Μηνύματα: 205
Προεπιλογή

Το module δουλευει ως εξης. Δημιουργείς ένα πίνακα όπως αναφέρω ποιο πάνω και το καλείς απο μια μακροεντολή που ονομάζεται Autoexec --->Εκτελεση Κώδικα--->ODBCShared.
Σου δημιουργεί μονο του τα DSN δεν χρειάζεται να κανεις τπτ αλλο.

Αν δεν βγάλεις ακρη μετα απο αυτό τοτε θα σου γραψω αναλυτικα την διαδικασια.
Απάντηση με παράθεση
  #12  
Παλιά 31-07-20, 09:35
Όνομα: ΕΞΑΡΧΟΣ
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 15-02-2020
Μηνύματα: 103
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από pctechdr Εμφάνιση μηνυμάτων
Το module δουλευει ως εξης. Δημιουργείς ένα πίνακα όπως αναφέρω ποιο πάνω και το καλείς απο μια μακροεντολή που ονομάζεται Autoexec --->Εκτελεση Κώδικα--->ODBCShared.
Σου δημιουργεί μονο του τα DSN δεν χρειάζεται να κανεις τπτ αλλο.

Αν δεν βγάλεις άκρη μετα απο αυτό τοτε θα σου γραψω αναλυτικα την διαδικασια.
φίλε μου καλήμερα. προσπάθησα με όλους τους πιθανούς τρόπους και συνδυασμούς άλλα δεν κατάφερα. όταν ανοίγει η εφαρμογή μου βγάζει συνημμένα οτι δε μπορεί να εκτελεστεί η μακροεντολή και πατάω stopmacro
μηπως δεν έχω κατεβσει τα καταλληλα εργαλεια? (odbc driver for sql server 17 kai sql exxpress 14) οπως και να χει σευχαριστω πολυ για το χρόνο σου και τη διαθεση σου να με βοηθήσεις.

Τελευταία επεξεργασία από το χρήστη exarhos : 31-07-20 στις 10:06.
Απάντηση με παράθεση
  #13  
Παλιά 31-07-20, 10:36
Όνομα: Χρήστος
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 18-11-2012
Περιοχή: Deutschland
Μηνύματα: 205
Προεπιλογή

Λοιπόν αναλυτικά η διαδικασία.

Πρωτο βήμα: είναι να δημιουργήσεις έναν πίνακα με τα εξής πεδία.

Ονομα Πεδίου: DataBase
Τύπος Πεδίου: Συντομο Κείμενο (Short Text)
Μέγεθος Πεδίου: 50 πχ

Ονομα Πεδίου: Server
Τύπος Πεδίου: Συντομο Κείμενο (Short Text)
Μέγεθος Πεδίου: 50 πχ

Ονομα Πεδίου: ODBCTableName
Τύπος Πεδίου: Συντομο Κείμενο (Short Text)
Μέγεθος Πεδίου: 50 πχ

Ονομα Πεδίου: LocalTableName (Πρωτεύον Κλείδί)
Τύπος Πεδίου: Συντομο Κείμενο (Short Text)
Μέγεθος Πεδίου: 50 πχ

Ονομα Πεδίου: DSN
Τύπος Πεδίου: Συντομο Κείμενο (Short Text)
Μέγεθος Πεδίου: 50 πχ

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

Δεύτερο βήμα:

Δημιουργείς ένα module με όνομα πχ RelinkSQL και κάνεις επικόλληση τον εξής κώδικα.

Public Function DoesTableExist(strTableName As String) As Boolean '(Author:Microsoft)
On Error Resume Next
Dim db As DAO.Database: Set db = CurrentDb()
Dim Tbl As DAO.TableDef: Set Tbl = db.TableDefs(strTableName)
If Err.Number = 3265 Then ' Item not found.
DoesTableExist = False
Exit Function
End If
DoesTableExist = True
End Function

Public Function RelinkShared() As Boolean '(Author:Microsoft/Changes:Christos Karakizos)
Dim strTableName As String
Dim strConn As String
Dim db As DAO.Database: Set db = CurrentDb()
Dim rs As DAO.Recordset
Dim Tbl As DAO.TableDef
' ---------------------------------------------
' Register ODBC database(s)
' ---------------------------------------------
If DoesTableExist("UsysShared") = True Then
Set rs = db.OpenRecordset("UsysShared", dbOpenSnapshot)
With rs
While Not .EOF
If ReadODBCDriver() = True Then
'ODBC Driver 17 for SQL Server
DBEngine.RegisterDatabase rs("DSN"), "ODBC Driver 17 for SQL Server", True, "Description=" & rs("DataBase") & Chr(13) & "Server=" & rs("Server") & Chr(13) & "Database=" & rs("DataBase")
Else
'SQL Server Driver
DBEngine.RegisterDatabase rs("DSN"), "SQL Server", True, "Description=" & rs("DataBase") & Chr(13) & "Server=" & rs("Server") & Chr(13) & "Database=" & rs("DataBase")
End If
' ---------------------------------------------
' Link table
' ---------------------------------------------
strTableName = rs("LocalTableName")
strConn = "ODBC;"
strConn = strConn & "DSN=" & rs("DSN") & ";"
strConn = strConn & "APP=Microsoft Access;"
strConn = strConn & "DATABASE=" & rs("DataBase") & ";"
strConn = strConn & "Trusted_Connection=Yes" & ";"
strConn = strConn & "TABLE=" & rs("ODBCTableName")
If (DoesTableExist(strTableName) = False) Then
Set Tbl = db.CreateTableDef(strTableName, dbAttachSavePWD, rs("ODBCTableName"), strConn)
db.TableDefs.Append Tbl
Else
Set Tbl = db.TableDefs(strTableName)
Tbl.Connect = strConn
Tbl.RefreshLink
End If
rs.MoveNext
Wend
End With
End If
rs.Close
Set rs = Nothing
RelinkShared = True
End Function

Public Function ReadODBCDriver() As Boolean
On Error GoTo Err:
If CreateObject("WScript.Shell").RegRead("HKEY_LOCAL_ MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers\ODBC Driver 17 for SQL Server") = "Installed" Then
ReadODBCDriver = True
Else
ReadODBCDriver = False
End If
Err:
End Function

Σου έχω βάλει μέσα στον κώδικα να ελέγχει αν υπάρχει εγκατεστημενος ο ODBC 17 Driver και αν ναι να δημιουργεί τα DSN με αυτόν τον Driver αλλιώς δημιουργεί τα DSN με τον SQL Driver.

Τρίτο Βήμα :

Στον Πίνακα που δημιούργησες καταχωρείς τα στοιχεία απο τους πίνακες που θες να συνδέσεις απο τον SQL Server.

Πχ:
Πεδιο Database --->Ονομα DSN (Shared)
Πεδίο Server ---> Εδω καλύτερα να δώσεις την IP Address του SQL Server και όχι το όνομα.
Πεδίο ODBCTableName --->Εδώ δίνεις το όνομα του πίνακα που θες να συνδέσεις απο τον SQL Server
Πεδίο LocalTableName --->Εδώ δίνεις το όνομα του συνδεμένου πίνακα πώς θες να ονομάζεται μέσα στην Access
Πεδιο DSN--->Εδώ δώσε το όνομα που θες στο DSN. Εγώ βάζω το ίδιο με το πεδίο Database

Τέταρτο βήμα:

Δημιουργείς μια μακροεντολή που την ονομαζεις Autoexec--->Εκτελεση κώδικα--->RelinkShared() και είσαι έτοιμος.

Ελπίζω αυτο να σε βοηθήσει καλύτερα. Αν όχι πάλι εδώ είμαστε.

Τελευταία επεξεργασία από το χρήστη pctechdr : 31-07-20 στις 10:47.
Απάντηση με παράθεση
  #14  
Παλιά 31-07-20, 11:02
Όνομα: ΙΩΑΝΝΗΣ
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 27-01-2020
Μηνύματα: 83
Προεπιλογή

Καλημερα .Ειχα κανει και εγω την διαδικασια που προτεινει ο Χρηστος.

Θα στα πω οπως θυμαμαι τα βηματα

1)Ανοιγεις την εκτελεση των windows με τα πληκτρα windows key + r .Εκει μεσα γραφεις odbcad32 και πατας οκ.Λογικα θα σου ανοξει ενα παραθυρο οπου δεξια εχει το πληκτρο "add".Εκει διαλεγεις ποιον driver θα βαλεις.Εγω εχω βαλει τον "sql Server".Πατας "οκ".Μετα βαζεις ενα ονομα οποιο θες και μια περιγραφη οποια θες.Μετα ποιο κατω στο ονομα του σερβερ βαζεις ακριβως την ονομασια θα την βρεις αν πας στο sql management studio και αφου κανεις connect στην βαση πανω πανω λεει πχ server/SQLEXPRESS.Αν ειναι σωστο το ονομα που θα βαλεις θα σε παει στο επομενο βημα.Μετα πατας ξανα επομενο οπου εκει πανω πανω λεει να επιλεξεις "change the default database to"και διαλεγεις την δικια σου βαση.Μετα επομενο και τελος.Το παραθυρο που θα σου ανοιξει πατας και "TEST DATA SOURCE".Αν εχει γινει σωστη συνδεση θα σου βγαλει "TEST COMPLETED SUCCESSFULLY

2)Μετα πας στην access και φτιαχεις εναν πινακα με ονομα "UsysShared" με τα πεδια

Database - Short text
Server - Short Text
ODBCTableName - Short Text
LocalTableName - Short Text
DSN - Short Text

3)Μετα θα εισαγεις το module που σου εδωσε ο χρηστος .

4)Μετα εναν εναν τους πινακες δεξι κλικ σε καθε πινακα-->εξαγωγη-->βαση δεδομενων odbc.Δινεις το ονομα του πινακα ξανα η το αφηνεις ως εχει.Στο παραθυρο που θα σου ανοιξει θα διαλεξεις τωρα το DSN που εφτιαξες πριν (1).Πατας οκ και μετα κλεισιμο.Αυτο το κανεις για ολους τους πινακες.

5)Τωρα παιρνεις copy-paste το ονομα καθε πινακα εναν εναν παλι και το κανεις επικολληση μεσα στον πινακα στα πεδια "ODBCTableName" και LocalTableName".Στο πεδιο "server"βαζεις το ονομα του server sql και στο DSN το ονομα που εχεις βαλεις στην αρχη (1).Μπορεις επισης για να μην γραφεις συνεχεια το ονομα του server ,το ονομα του dsn και το ονομα της database ,να βαλεις προεπιλεγμενη τιμη γιαυτα.Αυτο γινεται αν πας στο πεδιο πχ"server" και μετα κατω εκει που λεει "Γενικες"-->Προεπιλεγμενη τιμη βαζει το ονομα του server πχ "sqlserver"

6)Αφου κανεις αυτα μετα θα κανεις παλι εναν εναν τους πινακες μετανομασια πχ εχεις εναν πινακα "table"κανε το μετανομασια σε "tablebak".

7)Αφου κανεις και αυτα ,φτιαξε μια μακροεντολη "Autoexec" και .Επιλγεις -->εκτελεση κωδικα-->και στο ονομα συναρτησης βαζεις την εντολη ODBCShared().Αποθηκευεις και μετα τρεχεις την μακροεντολη.Αν ειναι ολα οκ οι πινακες σου θα φαινονται ετσι.
Συνημμένα Thumbnails
Σύνδεση φόρμας με SQL βάση-xoris-titlo.png  
Απάντηση με παράθεση
  #15  
Παλιά 31-07-20, 20:24
Όνομα: ΕΞΑΡΧΟΣ
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 15-02-2020
Μηνύματα: 103
Προεπιλογή

Φίλοι μου σας ευχαριστώ πάρα πολύ. (το μονο που δεν κάνατε είναι να ρθείτε το φτιάξετε μόνοι σας)
για μένα αυτό ήταν βουνό. δεν θα το έκανα ποτέ χωρίς την βοήθεια σας όπως και πολλά αλλα.
το προβλημα ειναι βεβαια οτι αργεί παααααααααααρα πολυ. δλδ κανει περιπου ενα λεπτο μεχρι να ανοιξει την κάθε φόρμα. Επίσης με την είσοδο μου βγάζει τα εξης μηνύματα "operation must use an updateable query" και "the recordset is not updateable" και αναφέρεται σε ερωτήματα ενημέρωσης που ειχω με τη φόρτωση
και πάλι σας Ευχαριστώ πάρα πολυ.
Με εκτίμηση

Τελευταία επεξεργασία από το χρήστη exarhos : 31-07-20 στις 21:25.
Απάντηση με παράθεση
  #16  
Παλιά 01-08-20, 17:43
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Καλησπέρα σε όλους!
Για σύνδεση πινάκων από βάση MSSQL μπορείτε να ρίξετε μια ματιά εδώ:
https://www.ms-office.gr/forum/acces...html#post31345

Καλή συνέχεια!

Με εκτίμηση

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #17  
Παλιά 01-08-20, 18:21
Όνομα: ΕΞΑΡΧΟΣ
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 15-02-2020
Μηνύματα: 103
Προεπιλογή

φίλε Τάσο καλησπέρα και σ ευχαριστώ παρά\α πολύ για τη βοήθεια σου. Όπως ίσως θα κατάλαβες, εγώ εκτός απο αρχάριος ει μαι και περιορισμένης αντίληψης, Οπότε αν θες σε παρακαλώ γινε λιγο πιο συγκεκριμενος, δλδ εξήγησε μου τι ακριβώς πρέπει να κάνω. Να διευκρινίσω εδω οτι με τον τρόπο που πρότεινε ο Χρήστος και Γίαννης σύνδεσα επιτυχώς τους πινακες μου σε SQL SERVER και μετά τους εκανα λικ στις φόρμες αλλα η εφαρμογη κολάει δεν γίνεται να δουλεψω ετσι συν το οτι δεν λειτουργούν τα ερωτηματα ενημερωσης.
Ισως όμως με το δικο σου τροποι η σύνδεση να γίνει πιο αποτελεσματικα, γι αυτο σε παρακαλώ βοηιθησε με να το δοκιμασω. πες ακτιβως τι πρεπει να κανω και πως να το κανω. σ ευχαριστώ πολυ εκτων πρωτερων.
Απάντηση με παράθεση
  #18  
Παλιά 01-08-20, 23:24
Super Moderator
Όνομα: ΓΙΩΡΓΟΣ
Έκδοση λογισμικού Office: Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 14-01-2014
Μηνύματα: 234
Προεπιλογή

Γεια σου Έξαρχε,

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

Στο πεδίο «Διεύθυνση && Θύρα επικ. Server» να βάλεις την Διεύθυνση και Θύρα επικοινωνίας του SQL Server σου (πχ: mssql.name.gr,1555).

Στο πεδίο «Όνομα χρήστη» το username που έχεις για να συνδεθείς στον SQL Server σου (πχ: sa).

Στο πεδίο «Κωδικός» το password που έχεις για να συνδεθείς στον SQL Server σου (πχ: 12345).

Και στο πεδίο «Όνομα βάσης στον Server» το όνομα της βάσης σου από τον SQL Server σου και πατάς το κουμπί αποθήκευση για να αποθηκεύσεις τα παραπάνω στοιχεία.

Τώρα στο «Απομακρ. Πίνακας» θα πρέπει να γράψεις τα ονόματα των πινάκων της βάσης του SQL Server σου που θέλεις να κάνεις link στο αρχείο της access και στο «Τοπικός πίνακας» θα πρέπει να γράψεις τα ονόματα των πινάκων που θα γίνουν link στην Access και θα πατήσεις το κουμπί «Σύνδεση πινάκων».

Το βασικό είναι τα ονόματα των πινάκων να είναι ίδια γιατί μετά θα έχεις πρόβλημα στις φόρμες, ερωτήματα στην access (FrontEnd).

Την παραπάνω διαδικασία θα την κάνεις στο αρχείο της access που έχεις μόνο φόρμες ερωτήματα κτλ (FrontEnd)

Ότι άλλο θέλεις εδώ είμαστε….

Ευχαριστώ.
__________________
Βραχνάκης Γιώργος
vrahnakisg@gmail.com
Απάντηση με παράθεση
  #19  
Παλιά 02-08-20, 13:20
Όνομα: ΕΞΑΡΧΟΣ
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 15-02-2020
Μηνύματα: 103
Προεπιλογή

Φίλε μου σ'ευχαριστ'ω πολύ.το εκανα. οι φορμες ανοιγουν κανονικα. αλλα το προβλημα μου ειναιοτι δεν λειτουργουν τα ερβτηματα ενημερωσης που εχω (true-false). πηγα στο design του πινακα με το SSMS και ειδα οτι data type των παιδιων που ενημερωνω ειναι "bit" στην access ηταν true - false. προσπαθησα να το αλλαξω σε char αλλα μου βγαζει το μυνημα της φωτο που επισυνάττω.
και πάλι ευχαριστω πολύ όλους σας
Συνημμένα Thumbnails
Σύνδεση φόρμας με SQL βάση-screenshot_1.gif  
Απάντηση με παράθεση
  #20  
Παλιά 02-08-20, 14:07
Super Moderator
Όνομα: ΓΙΩΡΓΟΣ
Έκδοση λογισμικού Office: Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 14-01-2014
Μηνύματα: 234
Προεπιλογή

Καλησπέρα Έξαρχε,

Άνοιξε το SSMS και πήγαινε από το μενού ToolsOptionsDesigners και ξετςέκαρε την επιλογή «Prevent saving changes that require table re-creation» όπως φαίνεται και στην επισυναπτόμενη εικόνα.

Έτσι θα μπορέσεις να ανοίξεις τους πίνακες της βάσης sql σε προβολή σχεδίασης και να κάνεις αλλαγές.

Ευχαριστώ.
Συνημμένα Thumbnails
Σύνδεση φόρμας με SQL βάση-ssms.jpg  
__________________
Βραχνάκης Γιώργος
vrahnakisg@gmail.com
Απάντηση με παράθεση
Απάντηση στο θέμα


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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[ Ερωτήματα ] Σύνδεση πεδίων φόρμας με ερώτημα διασταύρωσης mdragon Access - Ερωτήσεις / Απαντήσεις 7 15-12-18 11:05
[ Πίνακες ] Σύνδεση με odbc σε βάση oracle Dafnh0106 Access - Ερωτήσεις / Απαντήσεις 1 22-02-15 13:42
Αυτόματη τηλεφωνική κλήση, μεσω φόρμας, με συνδεση modem PC dimitrisp Access - Ερωτήσεις / Απαντήσεις 7 18-12-14 22:58
[ Πίνακες ] Σύνδεση Πινάκων σε FrontEnd BackEnd βάση Δημήτρης Access - Ερωτήσεις / Απαντήσεις 2 26-11-11 14:47
[ Υποφόρμες ] Σύνδεση κυρίως Φόρμας με Υπόφορμα Free_Ghost Access - Ερωτήσεις / Απαντήσεις 3 29-11-10 15:39


Η ώρα είναι 08:26.