georgemarios Δημοσ. 19 Σεπτεμβρίου 2012 Δημοσ. 19 Σεπτεμβρίου 2012 Ακριβως αυτό μου δουλέυει..... όταν ανοιξω μετα τη ΒΔ, οι τιμες ειναι ενημερωμένες..... Σου ανεβαζω ενα αρχειο, εχει ενα exe που εκανα εγω, μαζι με τα αρχεια που χρησιμοποιησα Η επιλογη των αρχειων γινεται με OpenFileDialogs Δοκιμασε να το τρεξεις μπας και φταιει κατι άλλο..... https://rapidshare.com/files/2217921892/tmp.zip και εδω ο κωδικας (με τα OpenFileDialogs) > Imports Microsoft.Office.InteropImports Imports Microsoft.Office.Core.MsoTriState Imports Microsoft.Office.Interop.PowerPoint Imports Microsoft.Office.Interop Imports System.Data.OleDbModule Imports System.Data.OleDb Imports System.Windows.Forms Module Module1 Sub Main() Dim myApp = New PowerPoint.Application() myApp.Visible = msoTrue Dim pptFilePath = "C:\tmp\Trials.pptx" Dim dlg As New OpenFileDialog dlg.Filter = "PowerPoint (*.pptx)|*.pptx" dlg.InitialDirectory = "c:\" If dlg.ShowDialog() = DialogResult.OK Then pptFilePath = dlg.FileName End If Dim MyPresentation = myApp.Presentations.Open(pptFilePath, msoTrue, msoTrue, True) ' get the first slide Dim MyFirstSlide = MyPresentation.Slides(1) Dim sqlQueries As New ArrayList Dim sqlres As String Try For i = 1 To MyFirstSlide.Shapes.Item(1).Table.Rows.Count Dim row = MyFirstSlide.Shapes.Item(1).Table.Rows.Item(i) 'Get desired values from ppt table Dim firstColVal = row.Cells(2).Shape.TextFrame.TextRange.Text.Trim() Dim secondColVal = row.Cells(3).Shape.TextFrame.TextRange.Text.Trim() 'Build the sql update command for the db Console.WriteLine("This is val of secondColVal " + secondColVal) Console.WriteLine("This is val of firstColVal " + firstColVal) sqlQueries.Add("UPDATE SHIPS SET PROBLEMS = '" & secondColVal & "' WHERE NAME='" & firstColVal & "'") Next Dim dbPath = "C:\tmp\database.accdb" Dim dlg1 As New OpenFileDialog dlg1.Filter = "Access (*.accdb)|*.accdb" dlg1.InitialDirectory = "c:\" If dlg1.ShowDialog() = DialogResult.OK Then dbPath = dlg1.FileName End If 'MSAccess stuff 'Open connection to db Dim connection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;data source=" & dbPath) connection.Open() 'Perform each query one-by-one For Each query In sqlQueries Dim cmd = New OleDbCommand(query, connection) Dim icount = cmd.ExecuteNonQuery Next 'Close connection connection.Close() Catch ex As Exception MsgBox(ex.Message) End Try MyPresentation.Close() End Sub End Module Πω ρε φιλε... κατι τετοιες ωρες γουσταρω C γιατι θα ειχα βρει το προβλημα σε κωδικα χωρις να ζαλιζω τον κοσμο εδω και ποσες μερες. Ουτε ενας κώδικας απο αυτους που έχει δωσει ο migf1 τελευταια δεν μου έχει ξεφυγει στο tracing. Εδω τωρα με αυτο παιδευομαστε ποσες μερες.... αισχος ! Και δεν μπορω ουτε το loop να αλλαξω για να έχει παραπανω διαφάνειες... ελεος Γιατι δεν το κανεις στη C τότε; 1
Star_Light Δημοσ. 20 Σεπτεμβρίου 2012 Μέλος Δημοσ. 20 Σεπτεμβρίου 2012 E ξεκινησε σε VB τωρα να το αλλαξω? αφου τελειωνουμε τωρα. Παντως ενω έχεις κανει import το namespace System.Windows.Forms Εμενα συνεχιζει να μου βγαζει συντακτικα σφάλματα οτι δεν έχει οριστει ο τυπος OpenFileDialog και το DialogResult . Εσενα πως σου παιζουν ολα με την μια δεν μπορω να καταλαβω ! Έχω και reference σε εκδοση 14.0 του MS. P.S Το δικο σου προγραμμα οντως δουλευει το δοκιμασα τωρα . Ελεος... και σε μενα κανει ενα καρο νουμερα και εχουν τον ιδιο ακριβως κωδικα. Aπλα πριν κατεβασω το δικο σου zip εκανα paste τον κώδικα στο δικο μου.
georgemarios Δημοσ. 20 Σεπτεμβρίου 2012 Δημοσ. 20 Σεπτεμβρίου 2012 Ε ναι, ειπαμε, δεν ειναι μονο ο κωδικας, Ειναι και τα references και σε αλλες περιπτωσεις διαφορα settings που μπορει να εχεις στο project σου. Για το OpenFileDialog και το DialogResult χρειαζεται και reference στο System.Windows.Forms και δε ξερω τι άλλο. Εγω αυτο που κανω πάντα ειναι να προσθετω απο το menu μια νεα φορμα στο προτζεκτ, οποτε αυτοματα προστιθενται και οτι αλλο χρειαζεται. Μετα σβηνω τη φορμα. 1
Star_Light Δημοσ. 20 Σεπτεμβρίου 2012 Μέλος Δημοσ. 20 Σεπτεμβρίου 2012 Ε ναι, ειπαμε, δεν ειναι μονο ο κωδικας, Ειναι και τα references και σε αλλες περιπτωσεις διαφορα settings που μπορει να εχεις στο project σου. Για το OpenFileDialog και το DialogResult χρειαζεται και reference στο System.Windows.Forms και δε ξερω τι άλλο. Εγω αυτο που κανω πάντα ειναι να προσθετω απο το menu μια νεα φορμα στο προτζεκτ, οποτε αυτοματα προστιθενται και οτι αλλο χρειαζεται. Μετα σβηνω τη φορμα. Οφειλω να σου δωσω συγχαρητηρια. Ηταν πολυ καλη η συνεργασια και διαθετεις και πολυ καλες ικανοτητες στον προγραμματισμο. Ευχαριστω και παλι.
Star_Light Δημοσ. 30 Σεπτεμβρίου 2012 Μέλος Δημοσ. 30 Σεπτεμβρίου 2012 Καλημερα και παλι ! Κανενα καλο βιβλιο (free) ή tutorial για να δω λιγο τα loop που έχουν σχεση με τις διαφανειες στο Powerpoint υπάρχει? Δοκιμασα να χρησιμοποιησω το For i=1 to ActivePresentations.Slides.Count αλλα μου ελεγε οτι δεν βρισκει το δημοσιο μέλος ActiverPresentations. Θελω να βαλω και loop μεσα στο προγραμμα να υποστηριζει περισσοτερες απο μια διαφανειες.... Ψαχνω στα τυφλα και ειναι λιγο αποτυχια.....
georgemarios Δημοσ. 30 Σεπτεμβρίου 2012 Δημοσ. 30 Σεπτεμβρίου 2012 Ok, σκεψου το λογικα Στην εφαρμογη σου ανοιγεις ενα presentation (το MyPresentation) το οποιο περιεχει ενα array απο slides τα οποια περιεχουν με τη σειρα τους διαφορα πραγματα (στη περιπτωση σου απο ενα table με 2 στηλες και καμποσες γραμμες) Στην αρχη, πηρες το 1ο slide και εκανες πραγματα μαζι του (στη VB τα arrays ξεκινανε απο 1) > Dim MyFirstSlide = MyPresentation.Slides(1) Το μονο λογικο που σου απομενει ειναι να παρεις και τα υπολοιπα slides με ενα for και να κανεις τα ιδια πραγματα Πχ > For s = 1 To MyPresentation.Slides.Count MyFirstSlide = MyPresentation.Slides(s) For i = 1 To MyFirstSlide.Shapes.Item(1).Table.Rows.Count Dim row = MyFirstSlide.Shapes.Item(1).Table.Rows.Item(i) 'Get desired values from ppt table Dim firstColVal = row.Cells(2).Shape.TextFrame.TextRange.Text.Trim() Dim secondColVal = row.Cells(3).Shape.TextFrame.TextRange.Text.Trim() 'Build the sql update command for the db Console.WriteLine("This is val of secondColVal " + secondColVal) Console.WriteLine("This is val of firstColVal " + firstColVal) sqlQueries.Add("UPDATE SHIPS SET PROBLEMS = '" & secondColVal & "' WHERE NAME='" & firstColVal & "'") Next Next Tip επειδη υπαρχουν και slides που ειναι αδεια ή μπορει να μην εχουν αυτα που θελεις (πχ να εχουν μια εικονα αντι για πινακα) πρεπει να κανεις ελεγχο για τη ορθοτητα σου slide (οσο αυτο γινεται) Παραδειγμα για να ελεγξεις αν το slide ειναι αδειο > For s = 1 To MyPresentation.Slides.Count MyFirstSlide = MyPresentation.Slides(s) If MyFirstSlide.Shapes.Count < 1 Then ' <------- check if slide empty Continue For ' <------- if slide empty, skip If For i = 1 To MyFirstSlide.Shapes.Item(1).Table.Rows.Count '....... stuff here Next Next
geo1st487 Δημοσ. 30 Σεπτεμβρίου 2012 Δημοσ. 30 Σεπτεμβρίου 2012 Στην αρχη, πηρες το 1ο slide και εκανες πραγματα μαζι του (στη VB τα arrays ξεκινανε απο 1) Οι πινακες στη VB ξεκινανε απο 0. ' example Dim MyArray(10) As Integer Στον παραπανω πινακα μπορεις να αποθηκευσεις 11 στοιχεια. Το πρωτο στοιχειο ειναι το MyArray(0) και το τελευταιο (11ο) MyArray(10).
georgemarios Δημοσ. 30 Σεπτεμβρίου 2012 Δημοσ. 30 Σεπτεμβρίου 2012 Oooops, I stand corrected... Την επαθα γιατι θεωρουσα πως το MyPresentation.Slides ειναι array. Αλλα το πρωτο slide στο αρχειο ειναι το MyPresentation.Slides(1), αν βαλεις 0 χτυπαει invalid range exception...... Πραγματικα, δε θα ξεκινουσα με τιποτα σοβαρο προτζεκτ στη VB (.νετ ή οχι), είναι πολυ χύμα σαν γλώσσα....
Star_Light Δημοσ. 30 Σεπτεμβρίου 2012 Μέλος Δημοσ. 30 Σεπτεμβρίου 2012 Ευχαριστω παιδια!!!! Ειχα στο μυαλο μου κατι τέτοιο για loop -> > Dim var1 as Slide , var2 As Long , var3 As Long For each var1 In ActivePresentationSlides For var2= Slides.Shapes.Count To 1 Step -1 ....................... statements ......................... Next Next Αλλα ηταν πιο απλο ...... Τωρα σχετικα με τα arrays και στην C ξεκινάνε απο 0 αλλα φτάνουν μεχρι το (συνολικο μήκος) - 1 απο εκει και πανω εχεις overflow και UB . πχ > int my_array[5] , i = 0; for( ; i<5; i++) my_array[i] = i ; my_array[0] = 0 my_array[1]= 1 my_array[2] = 2 my_array[3]= 3 my_array[4] = 4 και ως εδω το my_array[5] αν παει να προσπελαστει θα περιμενεις το απροσμενο που λενε . P.S Μ αρεσε και η VB αλλα πιο πολυ μ αρεσει η C εννοειται
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα