Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > Εξαγωγή δεδομένων σε Word Template File

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 07-06-17, 13:31
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 02-04-2013
Περιοχή: Κύπρος
Μηνύματα: 738
Προεπιλογή Εξαγωγή δεδομένων σε Word Template File

Φίλοι μου γειά σας,

Έχω δημιουργήσει μια βάση δεδομένων για διαχείρηση ιατρικών περιστατικών, μέσω της οποίας θα ήθελα να εξάγωνται τα δεδομένα απο την φόρμα στην βάση δεδομένων σε ένα πρότυπο αρχείο Word (Template). Αυτό το έχω επιτύχει μερικώς διότι αφενώς αν και κατάφερα με την βοήθεια του φόρουμ να κάνω εξαγωγή των δεδομένων στην Word, εντούτις δεν γνωρίζω με ποιο τρόπο θα μπορούσαν τα δεδομένα αυτά να πάνε και να "καθίσουν" το κάθετι στην θέση που πρέπει, όπως δηλαδή και το πρότυπο. Δηλαδή, το Όνομα στο ανάλογο κουτάκι, το Επώνυμο στην θέση του κλπ, κλπ.

Για διευκόλυνση σας, επισυνάπτω ένα συμπιεσμένο φάκελο μέσα στον οποίο θα βρείτε αφενώς την βάση και τα όσα έχω καταφέρει μέχρι στιγμής, και αφετέρου και το πρότυπο Word αρχείο. Για να λειτουργήσει όμως η εξαγωγή δεδομένων θα πρέπει εφόσον αποσυμπιέσετε τον φάκελο, στην συνέχεια να δημιουργήσετε ένα νέο φάκελο με όνομα "Test" στον C:/, και μέσα σε αυτόν ένα άλλο φάκελο με όνομα "Docs", και έπειτα και ένα τρίτο μέσα στον δεύτερο με όνομα "CustDocuments.

Εύχομαι κάποιος να μπορεί να βοηθήσει και ευχαριστώ εκ προτέρων
Συνημμένα Αρχεία
Τύπος Αρχείου: zip SendDetails.zip (69,8 KB, 19 εμφανίσεις)
Απάντηση με παράθεση
  #2  
Παλιά 07-06-17, 18:43
Super Moderator
Όνομα: ΓΙΩΡΓΟΣ
Έκδοση λογισμικού Office: Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 14-01-2014
Μηνύματα: 234
Προεπιλογή

Καλησπέρα Γιώργο,
Δες το συνημμένο. Σου ζητώ συγνώμη για την βιαστική μου απάντηση.
Συνημμένα Αρχεία
Τύπος Αρχείου: zip SendDetails.zip (78,2 KB, 24 εμφανίσεις)
__________________
Βραχνάκης Γιώργος
vrahnakisg@gmail.com
Απάντηση με παράθεση
  #3  
Παλιά 07-06-17, 20:04
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 02-04-2013
Περιοχή: Κύπρος
Μηνύματα: 738
Προεπιλογή

Καλησπέρα φίλε μου Γιώργο,

Δεν ξέρω πως να σε ευχαριστήσω. Ειλικρηνά με έχεις βοηθήσει αμέριστα και σε ευχαριστώ και πάλι φίλε μου. Θα προσπαθήσω να προσαρμώσω στην αληθινή βάση τα όσα με δίδαξες στο παράδειγμα σου (Vba) και εάν παραστεί ανάγκη θα επανέλθω,

Σε κάθε περίπτωση σε ευχαριστώ πολύ
Απάντηση με παράθεση
  #4  
Παλιά 10-06-17, 12:48
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 02-04-2013
Περιοχή: Κύπρος
Μηνύματα: 738
Προεπιλογή

Γειά σου Γιώργο και πάλι,

Κατά αρχήν ευχαριστώ και πάλι διότι το παράδειγμα που μου έδωσες δουλεύει αλλά απο ότι πρόσεξα είνα Read Only και δεν μπορεί ο χρήστης να κάνει αλλαγές σε αυτό. Ωστόσο, επανέρχομαι στο θέμα εφόσον έχω δοκιμάσει να κάνω τις προσαρμογές στην πραγματική βάση και έχω το εξής θέμα και θα εκτιμήσω εάν μπορείς να προσαρμόσουμε λίγο τον κώδικα έτσι ώστε:

1. Θα ήθελα να έχω το πρότυπο αποθηκευμένο σε ένα φάκελο στον C:\ και εφόσον πατήσουμε την εντολή για την εκτέλεση του κώδικα να μπορεί να δημιουργεί ένα νέο αρχείο Word.doc αυτόματα το οποίο να μήν χρειάζεται να ανοίγει το File Dialog ττου Windows και να καθορίζεται χειροκίνητα η θέση αποθήκευσης του αρχείου.Να προκαθορίσουμε δηλαδή την θέση αποθήκευσης αυτών των αρχείων ας πούμε όπως το C:\WordFiles\Documents

2. Να μην χρειάζεται να γράφω χειροκίνητα το όνομα αποθήκευσης του νέου αρχείου αλλά να διαβάζει αυτόματα το όνομα απο το πεδίο [FileName] που είναι στην φόρμα. Αυτό θα με διευκόλυνε πολύ

3. ΕΦόοσν δημιουργεί το αρχείο και αποθυκευθεί με το όνομα που θα πάρει απο την φόρμα αυτόματα, θα ήθελα να ανοίγει έτσι ώστε να μπορεί ο χρήστης να κάνει τις προσθήκες που επιθυμεί σε αυτό, και εφόοσον ολοκληρώνει την εργασία του και αποθηκεύσει τα όσα έκανε να επανέρχομαι στην φόρμα Access.

4. Ολοκληρόνωντας το σκεπτικό διαχείρησης θα ήθελα με κάποιο τρόπο σε μια δεύτερη φόρμα να μπορώ να βλέπω τα αποθυκευμένα αρχεία για κάθε πελάτη και να έχει την δυνατότητα ο χρηστης να επιλέγει όποιο θέλει και να το ανοίγει μέσω μιας εντολής. Τώρα, σε αυτό το σημείο αντιλαμβάνομαι ότι πρέπει να υπάρχει ένας πίνακας στην βάση στον οποίο θα πρέπει να αποθκεύονται όλα τα πιο πάνω δεδομένα πελάτη, δηλαδή [ID], [CustomerNo], [DateAdded],[WordName],[FullPath].Επίσης το ορθό κατά την άποψη μου είναι εφόσον ανοίξει η εν λόγο Φόρμα πρωτίστως να μπορεί να γίνεται ένας έλεγχος εάν τα αρχεία στην πιο πάνω διαδρομή που είναι αποθηκευμένα, αντιστοιχούν με τα δεδομένα του πίνακα αυτού έτσι ώστε, αφενώς εάν κάποιο αρχείο έχει διαγραφεί (για οποιοδήποτε λόγο) απο τον φάκελο, να πρέπει να διαγράφεται και αυτομάτως απο τον πίνακα έτσι ώστε η λίστα με τα αρχεία κάθε πελάτη να είναι η πραγματική και να μην υπάρχουν αποθηκευμένες εγραφές στον πίνακα που στο τέλος να αντιστοιχούν σε αρχεία που δεν υπάρχουν.

Τώρα, η αλήθεια είναι ότι έχω προσπαθήσει να κάνω όλα τα πιο πάνω και μάλιστα στο έχω επιτύχει μέχρι το σημείο 3, αλλά με τα ακόλουθα προβλήματα (επισυνάπτω και τον κώδικα)

α) Κατάφερα να δημιουργείται το αρχείο που θέλω και να αποθυκεύεται αυτόματα στην διαδρομή (Path) που θέλω
β) Κατάφερα να δίνω αυτόματα όνομα αρχείου απο μια φόρμα που έχει κάποιο σχετικό πεδίο

Τα προβλήματα όμως που αντιμετωπίζω έιναι:

1) Εφόοσον δημιουργηθεί το αρχείο και αποθυκευθεί, δεν μου το εμφανίζει αυτόματα παρά μόνον βλέπω στο Task Bar ότι έχει ανοίξει αλλά δεν βλέπω παρά μόνον εάν επιλέξω το εικονίδιο απο το Task Bar. Στο σημείο αυτό να αναφέρω ότι ο κώδικας κτυπά εκεί που έχω υπογραμμίσει

2) Αν και κατάφερα να βλέπω σε πίνακα και εν τέλη σε μια φόρμα τα αρχεία κάθε πελάτη εντούτις δεν μπόρεσα να βρώ τρόπο εφόσον κάποιο αρχείο έχει διαγραφεί απο τον φάκελο, να διαγράφεται και απο τον πίνακα.

Παραθέτω τον κώδικα που έχω φτιάξει με βάση το δικό σου περίπου σκεπτικό και θα εκτιμήσω κάθε δυνατή βοήθεια.
.................................................. .................................................. .....................................
Option Compare Database
Option Explicit
Private wd As Object, wdDoc As Object
.................................................. .................................................. ................
Private Sub cmdExtractAndFillWDCells_Click()
Dim wdDoc As Object, ctl As Access.Control, TablePoints, wdFilePath As String

wdFilePath = wdFilePath & "C:\MEDISOFT\Docs\CustDocuments\" & Me.[WdTagName] & ".doc"
Me.WdFullPath = wdFilePath
Me.WdBaseName = Format(Now, "dd-mm-yyyy_hh:mm")
ExtractNewWordDocument wdFilePath

If Dir(wdFilePath, vbDirectory) = vbNullString Then
MsgBox "Could not create Word Document!", vbExclamation
Exit Sub
End If

Set wdDoc = GetObject(wdFilePath)
With wdDoc.Tables(1)
For Each ctl In Me.Section(0).Controls
If TypeOf ctl Is Access.TextBox Then
If IsNumeric(Left(ctl.Tag & "", 1)) Then
TablePoints = Split(ctl.Tag, ",")
If UBound(TablePoints) = 1 Then
.Cell(TablePoints(0), TablePoints(1)).Range.Text = Nz(ctl, vbNullString)
End If
End If
End If
Next
End With

'In case of Second table used

'With wdDoc.Tables(2)
' For Each ctl In Me.Section(0).Controls
' If TypeOf ctl Is Access.TextBox Then
' If IsNumeric(Left(ctl.Tag & "", 1)) Then
' TablePoints = Split(ctl.Tag, ",")
' If UBound(TablePoints) = 1 Then
' .Cell(TablePoints(0), TablePoints(1)).Range.Text = Nz(ctl, vbNullString)
' End If
' End If
'End If
'Next
'End With

wdDoc.Save
With wdDoc.Application
.Visible = True
.WindowState = 1
End With

AppActivate wdDoc.Name
Set wdDoc = Nothing

End Sub
.................................................. .................................................. ....................................
Function ExtractNewWordDocument(PathToEctract As String)
Dim rs As DAO.Recordset
Dim rs2 As DAO.Recordset2
Dim AtFile As DAO.Field2
Set rs = CurrentDb.OpenRecordset("tblWordDoc")
rs.MoveFirst
Set rs2 = rs.Fields("WdDocument").Value
rs2.MoveFirst
Set AtFile = rs2.Fields("FileData")
AtFile.SaveToFile PathToEctract
rs2.Close
rs.Close
End Function

.................................................. .................................................. .................................................. .........
Private Sub Form_Load()
Me.txtCount = DCount("[ID]", "tblWDPaths", "[CustomerNo]= Forms!WordPaths.CustomerNo")

If MsgBox("Êáôá÷þñçóç íÝïõ áñ÷åßïõ MS Word?", vbYesNo Or vbQuestion, "Áñ÷åßá Word") = vbYes Then
DoCmd.GoToRecord , , acNewRec 'This
If Me.txtCount = 0 Then
Me.Serial = 1
Else
Me.Serial = Me.txtCount + 1
End If

Me.WdTagName = Forms!DashboardDR.LogCustID & "_" & Me.Serial & "_" & Forms!DashboardDR.LoggedName
Me.cmdExtractAndFillWDCells.Enabled = True
Else
DoCmd.CancelEvent
'DoCmd.Close
End If

End Sub

Τελευταία επεξεργασία από το χρήστη γιώργοςΚ : 10-06-17 στις 13:33.
Απάντηση με παράθεση
  #5  
Παλιά 12-06-17, 18:10
Super Moderator
Όνομα: ΓΙΩΡΓΟΣ
Έκδοση λογισμικού Office: Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 14-01-2014
Μηνύματα: 234
Προεπιλογή

Καλησπέρα Γιώργο,

Συγνώμη για την καθυστέρηση.

Πριν ξεκινήσεις φτιάξε την παρακάτω διαδρομή στον δίσκο c: “C:\WordFiles\Documents\Customers”

Κάνε αποσυμπίεση στον c:\

Δες την συνημμένη βάση, είναι μια διαφορετική προσέγγιση στα ζητούμενα σου.

Πιστεύω να βοήθησα.
Για οτιδήποτε είμαι στην διάθεση σου.
Ευχαριστώ.
Συνημμένα Αρχεία
Τύπος Αρχείου: zip SendDetails.zip (99,9 KB, 61 εμφανίσεις)
__________________
Βραχνάκης Γιώργος
vrahnakisg@gmail.com
Απάντηση με παράθεση
  #6  
Παλιά 12-06-17, 21:39
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 02-04-2013
Περιοχή: Κύπρος
Μηνύματα: 738
Προεπιλογή

Καλησπέρα φίλε Γιώργο,

σε ευχαριστώ που μπήκες στον κόπο και αφιέρωσες τον χρόνο σου για να ετοιμάσεις το αρχει που μου έστειλες. Ωστόσο, θα το μελετήσω κάποια στιγμή αύριο και αν υπάρχει κάποιο θέμα θα επανέλθω.

Σε ευχαριστώ και πάλι.
Απάντηση με παράθεση
  #7  
Παλιά 13-06-17, 14:57
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 02-04-2013
Περιοχή: Κύπρος
Μηνύματα: 738
Προεπιλογή

Γειά σου Γιώργο και πάλι,

Έχω ανοίξει το αρχείο που έστειλες (και σε ευχαριστώ και πάλι) και προσπαθώ να καταλάβω πως δουλεύει, ή αν θέλεις με πιά λογική δουλεύει. Συγκεκριμένα δεν έχω καταλάβει τι κάνει ή ποιά η σκοπιμότητα της φόρμας frmListCustomers και το συγκεκριμένο κουμπί που περιλαμβάνει.

Θα σε έβαζα σε διαδικασία εάν μου επεξηγούσες λίγο το σκεπτικό?

Σε ευχριστώ πολύ φίλε μου
Απάντηση με παράθεση
  #8  
Παλιά 13-06-17, 15:37
Super Moderator
Όνομα: ΓΙΩΡΓΟΣ
Έκδοση λογισμικού Office: Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 14-01-2014
Μηνύματα: 234
Προεπιλογή

Καλησπέρα Γιώργο,

Η σκοπιμότητα της λίστας των πελατών είναι ότι μπορείς να ανοίξεις πολλές καρτέλες πελατών.

Τώρα η μεγάλη διαφορά που έχει σε ότι περιγράφεις εσύ παραπάνω είναι ότι δεν χρειάζετε να κρατάμε τα αρχεία (διαδρομές αρχείων) στην βάση και να γεμίζουμε την βάση.

Δεν διαφωνώ με τον τρόπο που περιγράφεις παραπάνω.

Όταν δημιουργείς ένα νέο πελάτη δημιουργείται και ένας φάκελος για τα αρχεία του στην διαδρομή «“C:\WordFiles\Documents\Customers” » και όνομα φακέλου το id του πελάτη.

Κάθε φορά που κάνεις μια εκτύπωση, το αρχείο που δημιουργείτε από το πρότυπο αποθηκεύεται στον φάκελο του πελάτη, αν για κάποιο λόγο δεν βρει τον φάκελο του πελάτη τον δημιουργεί ξανά.
Όσο αναφορά το παράδειγμα το μόνο δεσμευτικό είναι ότι όλα τα αρχεία ανεξαρτήτου τύπου (.doc,.pdf,…) πρέπει να είναι σε ένα φάκελο ανά πελάτη και ο φάκελος αυτός να έχει όνομα δεσμευτικό ως προς τον πελάτη (πχ Customer_ID).

Για οποιαδήποτε απορία η διευκρίνηση είμαι στην διάθεση σου.
__________________
Βραχνάκης Γιώργος
vrahnakisg@gmail.com
Απάντηση με παράθεση
  #9  
Παλιά 13-06-17, 17:56
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 02-04-2013
Περιοχή: Κύπρος
Μηνύματα: 738
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από vraxnakisg Εμφάνιση μηνυμάτων
Καλησπέρα Γιώργο,

Η σκοπιμότητα της λίστας των πελατών είναι ότι μπορείς να ανοίξεις πολλές καρτέλες πελατών.

Τώρα η μεγάλη διαφορά που έχει σε ότι περιγράφεις εσύ παραπάνω είναι ότι δεν χρειάζετε να κρατάμε τα αρχεία (διαδρομές αρχείων) στην βάση και να γεμίζουμε την βάση.

Δεν διαφωνώ με τον τρόπο που περιγράφεις παραπάνω.

Όταν δημιουργείς ένα νέο πελάτη δημιουργείται και ένας φάκελος για τα αρχεία του στην διαδρομή «“C:\WordFiles\Documents\Customers” » και όνομα φακέλου το id του πελάτη.

Κάθε φορά που κάνεις μια εκτύπωση, το αρχείο που δημιουργείτε από το πρότυπο αποθηκεύεται στον φάκελο του πελάτη, αν για κάποιο λόγο δεν βρει τον φάκελο του πελάτη τον δημιουργεί ξανά.
Όσο αναφορά το παράδειγμα το μόνο δεσμευτικό είναι ότι όλα τα αρχεία ανεξαρτήτου τύπου (.doc,.pdf,…) πρέπει να είναι σε ένα φάκελο ανά πελάτη και ο φάκελος αυτός να έχει όνομα δεσμευτικό ως προς τον πελάτη (πχ Customer_ID).

Για οποιαδήποτε απορία η διευκρίνηση είμαι στην διάθεση σου.


Καλησπέρα Γιώργο,

Η σκοπιμότητα της λίστας των πελατών είναι ότι μπορείς να ανοίξεις πολλές καρτέλες πελατών.

Πως δηλαδή μπορώ να ανοίξω διαφορετικές καρτέλες πελατών φίλε μου? Εχω δοκιμάσει να κάνω διπλό κλίκ σε ολα τα πεδία και σε διάφορους πελάτες, δεν ανοίγει κάτι (?) Εκτός αν εννοείς ότι μέσω αυτή της φόρμας μπορώ να δώ υπό μορφή λίστας όλους τους πελάτες, σε αυτό ναι, συμφωνώ!

Φιλικά
Απάντηση με παράθεση
  #10  
Παλιά 14-06-17, 03:04
Super Moderator
Όνομα: ΓΙΩΡΓΟΣ
Έκδοση λογισμικού Office: Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 14-01-2014
Μηνύματα: 234
Προεπιλογή

Καλημέρα Γιώργο,

Για να ανοίξεις μια καρτέλα πελάτη σε νέο παράθυρο θα πρέπει να κάνεις διπλό κλικ στην κεφαλίδα της γραμμής (μαύρο βελάκι) από την λίστα πελατών.

Ευχαριστώ.
Συνημμένα Thumbnails
Εξαγωγή δεδομένων σε Word Template File-img.jpg  
__________________
Βραχνάκης Γιώργος
vrahnakisg@gmail.com
Απάντηση με παράθεση
Απάντηση στο θέμα


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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
Εξαγωγή δεδομένων σε πίνακα στην word γιώργοςΚ Access - Ερωτήσεις / Απαντήσεις 33 20-10-14 14:17
Εξαγωγή εγγραφής σε word agantos Access - Ερωτήσεις / Απαντήσεις 16 18-04-12 15:54
Εξαγωγή και αποθήκευση δεδομένων φόρμας σε word nasos23 Access - Ερωτήσεις / Απαντήσεις 1 15-03-12 09:10
Εξαγωγή πίνακα σε ascii file stavros Access - Ερωτήσεις / Απαντήσεις 13 07-12-09 19:05


Η ώρα είναι 15:56.