Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   Εκτύπωση πίνακα με VBA (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/238-ektiposi-pinaka-me-visual-basic-applications.html)

Giorgos 18-11-09 20:18

Εκτύπωση πίνακα με VBA
 
Καλησπέρα.

Έχω δυο βασικά προβλήματα

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

2. Θέλω να κάνω εκτύπωση μέσω κώδικα.. το είχα φτιάξει παλιά και δούλευε αλλά το διέγραψα γιατί εκτύπωνα με Report και τώρα δεν μπορώ να το ξαναφτιάξω..

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

kon73 19-11-09 13:15

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

Καλώς ήρθες στο Forum και σου στέλνω τις απαντήσεις σου στο ερώτημά σου.


Public Sub ViewRecordPerField(ByVal TblName As String)
'Απαιτήσεις είναι στα Reference το Microsoft DAO 3.6 Object Library
'Παράδειγμα κλήσης ViewRecordPerField("TblItems")
Dim Fld As Object, IntTabInd As String, Tbl As TableDef, Dbs As Database, RcdSetTable As DAO.Recordset
Set Dbs = CurrentDb
Set Tbl = Dbs.TableDefs(TblName)
Set RcdSetTable = Dbs.OpenRecordset("Select * From " & TblName)
If Not RcdSetTable.EOF And Not RcdSetTable.BOF Then
RcdSetTable.MoveFirst
Do While Not RcdSetTable.EOF
For Each Fld In Tbl.Fields
Debug.Print RcdSetTable.Fields(Fld.Name).Value
Next Fld
RcdSetTable.MoveNext
Loop
End If
End Sub

Function PrintObject(ByVal RptName As String)
'Κλήση του Print Dialog
'Παράδειγμα PrintObject("RptItems")
On Error Resume Next
Application.Echo False
DoCmd.OpenReport RptName, acViewPreview
DoCmd.RunCommand acCmdPrint
DoCmd.Close acReport, RptName
Application.Echo True
End Function

Giorgos 19-11-09 20:46

Κωστα σε ευχαριστώ πολύ αλλα απο δική μου παράληψη δεν σου το εθεσα σωστά... σου ξαναστέλνω το ερώτημα ως αφορά την ερώτηση "οριζοντια" και ένα κώδικα που εφτιαξα παλιά για εκτύπωση με κώδικα...

Giorgos 19-11-09 20:48

Υ.Γ εκτύπωση κατευθείαν στον εκτυπωτή και οχι σε text

Giorgos 19-11-09 21:07

2) Υ.Γ μπορείς να μου πεις κώστα εάν μπορώ να βάλω και WHERE στον πρώτο κώδικα που μου έστειλες?

WHERE είτε με αναζήτηση στο όνομα του πεδίου, είτε με αναζήτηση στα δεδομένα που έχει το πεδίο...

πχ. όνομα πεδίου "Pelates" WHERE Pelates = ....!!!!
ή Στοιχειο καταχωρημένο στο πεδίο "ΠΑΠΑΔΟΠΟΥΛΟΣ" WHERE Pelates = " & ΠΑΠΑΔΟΠΟΥΛΟΣ

kon73 19-11-09 22:40

Μετατρέποντας ελαφρά τον κώδικα για το Where και βάζοντας μόνο το ID του πελάτη ας υποθέσουμε πως ονομάζεται CustomerID και όχι Name (Επίθετο έχουμε)

Στην κλήση της συνάρτησης αντί ρουτίνας που ήταν προστήθεται και το ID του πελάτη που θέλουμε να καλέσουμε.

Public Function ViewRecordPerField(ByVal TblName As String, CustID As Variant)
'Απαιτήσεις είναι στα Reference το Microsoft DAO 3.6 Object Library
'Παράδειγμα κλήσης ViewRecordPerField("TblItems")
Dim Fld As Object, Tbl As TableDef, RcdSetTable As DAO.Recordset, TempTxt as String
Set Tbl = CurrentDb.TableDefs(TblName)
Set RcdSetTable = Dbs.OpenRecordset("Select * From " & TblName & " Where AccEidosCode=" & CustID)
If Not RcdSetTable.EOF And Not RcdSetTable.BOF Then
For Each Fld In Tbl.Fields
TempTxt=TempTxt & Fld & vblf
Next
'Καλούμε το PrintTemp
PrintTemp "tmp.txt", TempTxt
End If
End Function

Function PrintTemp(tmpName$, oText$) ' Όνομα ή και διαδρομή αρχείου, κείμενο που θα εκτυπωθεί.
Dim fso As Object, oStream As Object, oWs As Object
Set oStream = fso.CreateTextFile(tmpName, True, True)
oStream.Write oText
oStream.Close
Set oWs = CreateObject("WScript.Shell")
oWs.Run "NotePad.exe /p tmpName"
End Function

Giorgos 21-11-09 14:26

kωστα καλημερα.. 8ελω να επικοινωνησω μαζι σου τηλεφωνικά εάν μπορείς.. σου στέλνω το e-mail μου Kapsalis_Giorgos παπάκι windowslive.com εαν θες στείλε μου το τηλ. σου και τη ώρες μπορείς να σε καλεσω.

Σε Ευχαριστώ.

Edit από Admin: Αλλαγή του E-Mail προς αποφυγή SPAM.
Παρακαλώ, χρησιμοποιείτε τα προσωπικά μηνύματα για ιδιωτικές συνομιλίες.

kon73 21-11-09 19:22

Αγαπητέ φίλε Γιώργο,

Στο Forum θα πρέπει να μην απευθυνόμαστε σε συγκεκριμένο άτομο καθότι είναι έτσι ένας τρόπος που αποκλείουμε τους υπόλοιπους χρήστες του Forum να απαντήσουν και αυτοί.

Για οτιδήποτε κρίνεις πως χρίζει προσωπικού επιπέδου ερωτήσεις μπορείς να χρησιμοποιήσεις το PM (Προσωπικό μήνυμα σε συγκεκριμένο χρήστη).

Επίσης για λόγους Spam δεν δημοσιεύουμε ποτέ το email μας. Δηλαδή οι Spammers χρησιμοποιώντας Robot σαρώνουν όλο το Internet και κατά επέκταση και το Forum Και διαβάζουν το email σου.

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

Giorgos 23-11-09 08:17

Καλημέρα
τρέχω των πρακάτω κωδικα με access.adp 2007 και βαση SQL (μετατροπή απο 2003 σε 2007) και στο "SetTbl=CurrentDb.TableDefs(TblName)" και εδω μου βγαζει error 91.. εαν το τρεξω με mdb δουλευει κανονικά.. εχω βρει στο διαδικτιο αυτο "CurrentData.AllTables" με αυτο ανοιγει την βάση και διαβαζει τους πινακες.. αλλα δεν μπορω να το προσαρμοσω στον παρακάτω κωδικα που ειναι σαφέστατα πιο λειτουργικος..
Επισης με το ξεκίνημα του κώδικα μου χτυπάει και εδώ "PrintTemp"

Σας ευχαριστώ

Dim Fld As Object, Tbl As TableDef, RcdSetTable As DAO.Recordset, TempTxt as String
Set Tbl = CurrentDb.TableDefs(TblName)
Set RcdSetTable = Dbs.OpenRecordset("Select * From " & TblName & " Where AccEidosCode=" & CustID)
If Not RcdSetTable.EOF And Not RcdSetTable.BOF Then
For Each Fld In Tbl.Fields
TempTxt=TempTxt & Fld & vblf
Next
'Καλούμε το PrintTemp
PrintTemp "tmp.txt", TempTxt
End If
End Function

Giorgos 23-11-09 08:21

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

Σε καλημερίζω και πάλι


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

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


Search Engine Optimization by vBSEO 3.3.2