Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

vb.net Γράψιμο σε Access

Îåêßíçóå áðü ôï ìÝëïò AlKiS. Τελευταία δημοσίευση από το μέλος maria58 στις 29-11-2011, 18:49. Υπάρχουν 27 απαντήσεις.
Σελίδα 2 από 2 (28 εγγραφές)   < 1 2
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  12-09-2011, 00:40 67211 σε απάντηση της 67209

    Απ: vb.net Γράψιμο σε Access

    AlKiS:

    Δεν με πειράζει να αλλάξει το πρόγραμμα, ας μην μείνει τίποτα ίδιο απο τον πηγαίο κώδικα που που έγραψα!! το μόνο που με νοιάζει είναι να βρεθεί ένας τρόπος να βάζω δεδομένα μέσα σε αυτό το access αρχείο με Visual Basic 2010. 

    Οποιοσδήποτε τρόπος είναι καλοδεχούμενος..

    Οπότε.. καμιά ιδέα??

     

    στον έχω πει τον τρόπο παραπάνω χωρίς να πειράξεις την βάση και με την παραδοχή ότι δεν υπάρχει κάποιο πεδίο υποχρεωτικό

    και είναι αυτός

    Antonios Chatzipavlis:

    OleDbCommand command = new OleDbCommand();

    command.Connection = conn;

    command.CommandText= "INSERT INTO myTable (col1, col2) VALUES (@p_col1, @p_col2)";

    command.Parameters.Add ("@p_col1", OleDbType.String).Value = textBox1.Text;

    ...

    command.ExecuteNonQUery();

    θα πρέπει να αντικαταστήσεις τροπο στον κώδικα που κάνεις insert με αυτό τον τρόπο

     


    Antonios Chatzipavlis

  •  12-09-2011, 01:30 67212 σε απάντηση της 67211

    Απ: vb.net Γράψιμο σε Access

    Μου βγάζει πρόβλημα σε όλες τις σειρές του κώδικα αυτού που έγραψες...

    Μπορείς σε παρακαλώ να αλλάξεις τον κώδικα έτσι ώστε να δουλεύει και να αλλάζει μόνο το πεδίο "Betrieb"?

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

    Οπότε άσε τα υπόλοιπα σε εμένα, αλλά σε παρακαλώ κάνε μου πόστ ένα ολοκληρωμένο κώδικα που να αποθηκεύει νέα δεδομένα στο πεδίο Betrieb (ή οποιοδήποτε πεδίο θέλεις, δν είναι το πεδίο που με νοιάζει, το να γίνει η αποθήκευση έστω και σε ένα πεδίο με νοιάζει) 


  •  12-09-2011, 10:42 67214 σε απάντηση της 67209

    Απ: vb.net Γράψιμο σε Access

    Όπως σου έχει πει ο Αντώνης τόσες φορες, το πρόβλημα δεν είναι η έκδοση της Access αλλά ο κώδικας που έχεις γράψει. Ή θα γράψεις ένα σωστό insert/update sql statement με τα πεδία που έχει ο κάθε πίνακας, ή θα φροντίσεις να προσθέσεις ένα primary key στον πίνακα για να δουλέψει ο CommandBuilder. Το πιο σωστό φυσικά είναι να γράψεις το σωστό statement. Από την άλλη, πίνακας χωρίς κλειδί είναι "κακός" πίνακας, καθώς μπορείς άνετα να βρεθείς με διπλές εγγραφές.

    Αλήθεια, γατί επιμένεις να μην μετατρέψεις το παλιό αρχείο σε καινούριο? Θα το χρησιμοποιήσει κανείς άλλος μετά? Ή μήπως πρόκειται για άσκηση μαθήματος με αρχική βάση σε Access 2000? Αν το χρησιμοποιεί και άλλη εφαρμογή που βασίζεται στην έλλειψη κλειδιού, ίσως αντιμετωπίσεις προβλήματα.

    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  12-09-2011, 12:15 67218 σε απάντηση της 67214

    Απ: vb.net Γράψιμο σε Access

    Παναγιώτης Καναβός:
    Όπως σου έχει πει ο Αντώνης τόσες φορες, το πρόβλημα δεν είναι η έκδοση της Access αλλά ο κώδικας που έχεις γράψει. Ή θα γράψεις ένα σωστό insert/update sql statement με τα πεδία που έχει ο κάθε πίνακας, ή θα φροντίσεις να προσθέσεις ένα primary key στον πίνακα για να δουλέψει ο CommandBuilder. Το πιο σωστό φυσικά είναι να γράψεις το σωστό statement. Από την άλλη, πίνακας χωρίς κλειδί είναι "κακός" πίνακας, καθώς μπορείς άνετα να βρεθείς με διπλές εγγραφές.

    Αλήθεια, γατί επιμένεις να μην μετατρέψεις το παλιό αρχείο σε καινούριο? Θα το χρησιμοποιήσει κανείς άλλος μετά? Ή μήπως πρόκειται για άσκηση μαθήματος με αρχική βάση σε Access 2000? Αν το χρησιμοποιεί και άλλη εφαρμογή που βασίζεται στην έλλειψη κλειδιού, ίσως αντιμετωπίσεις προβλήματα.


    Καταλαβαίνω, αλλά αυτό που είπα στο παραπάνω πόστ είναι οτι ΘΕΛΩ να κάνω ένα σωστό inser/update spa statement. όμως όλες οί σειρές κώδικα που έγραψε ο Αντώνης μου βγάζουν λάθος.

    (Αυτές) [code]OleDbCommand command = new OleDbCommand();

    command.Connection = conn;

    command.CommandText= "INSERT INTO myTable (col1, col2) VALUES (@p_col1, @p_col2)";

    command.Parameters.Add ("@p_col1", OleDbType.String).Value = textBox1.Text;

    ...

    command.ExecuteNonQUery();[/code]


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

    Σχετικά με αυτό που ανέφερες για το Primary Key, το έβαλα αλλά και πάλι δεν δούλεψε.

    Σημείωση: Στον πίνακα αυτό θα υπάρχουν πολλές διπλές εγγραφές. Για την ακρίβεια θέλω να μπορούν να υπάρχουν και 100 εγγραφές ολόιδιες, όχι μόνο 2πλες.


    Το Access αυτό έχει γραφτεί με Microsoft Access 1997, ούτε καν το 2000 δεν μπορεί να το επεξεργαστεί !


    Το να κάνω convert το αρχείο αυτό δεν είναι επιλογή. Το αρχείο του πελάτη πρέπει να μείνει ως έχει γιατί μέσα του έχει πολλά macros και βλακίες όπου μπορεί να δει αυτός πόσες αγορές έγιναν κτλ κτλ κτλ. Και η επιχείρησή του ΔΕΝ θα πάρει πιο καινούργιο Access.

    Άρα το μπαλάκι πέφτει σε εμένα


    Και τέλος, έκανα έναν νέο table στην βάση δεδομένων που το ονόμασα "POS" έβαλα εκεί τα ίδια πεδία με τον άλλο πίνακα

    και ενώ στον άλλο πίνακα ΔΕΝ δουλεύει στον καινούργιο πίνακα δουλεύει!! Στο ίδιο αρχείο μιλάμε τώρα!

    Τώρα απλώς ελπίζω ότι κάποιος θα μπορέσει να μου κάνει τις απαραίτητες μετατροπές που μου λέτε εσύ και ο Αντώνης έτσι ώστε το πρόγραμμα να δουλεύει και στο table που το θέλω (table:Journal)


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


  •  12-09-2011, 12:29 67219 σε απάντηση της 67218

    Απ: vb.net Γράψιμο σε Access

    Λογικό να σου βγάζουν λάθος αφου είναι σε C#.Εκ παραδρομής και απο την δύναμη της συνήθειας στις έδωσα σε αυτη και όχι σε VB. Αλλά πέρα απο το διαφορετικό declaration του command ολά τα άλλα είναι ίδια. Δεν νομίζω ότι είναι δα και πυρηνική φυσική να το αλλάξεις. Αλλά ακόμα και έτσι στο δίνω dim command as new oledbcommad(). Α και να μην ξεχάσεις να βγάλεις το ; στο τέλος των άλλων γραμμών. Απο εκει και πέρα νομίζω ότι είμαι ξεκάθαρος στο τι πρέπει να κανείς
    Antonios Chatzipavlis

  •  12-09-2011, 13:30 67220 σε απάντηση της 67219

    Απ: vb.net Γράψιμο σε Access

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

    Εγώ ο άνθρωπος ηλεκτρολόγος σπουδάζω...


    Θα προσπαθήσω να το κάνω να δουλέψει, αλλά αν δεν τα καταφέρω σε πειράζει να μου γράψεις εσύ τον κώδικα για να γράφει σε ένα και μόνο πεδίο (όπως είχα προτείνει και στο προηγούμενο πόστ μου)???

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

    Post Edit -> Entry 1:

    Έγραψα αυτό στο κουμπί Commit

        Private Sub btnCommit_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles btnCommit.Click
     
            Dim command As New oledbcommad()
            'OleDbCommand command = new OleDbCommand();
     
            command.Connection = conn
     
            command.CommandText = "INSERT INTO myTable (col1, col2) VALUES (@p_col1, @p_col2)"
     
            command.Parameters.Add("@p_col1", OleDbType.String).Value = txtFirstName.Text
     
            '...
     
            command.ExecuteNonQUery()
        End Sub

    δυστυχώς όμως μου βγάζει λάθη. Είναι υπογραμμισμένα με μπλέ τα εξής:
    1) Dim command As New --> oledbcommad() <---
    2) command.Connection = --> conn <--
    3) command.Parameters.Add("@p_col1", --> OleDbType.String <--).Value = txtFirstName.Text
    Προφανώς τα βελάκια δεν τα έχω μέσα στον κώδικα, είναι για να δείξω τι έχει υπογραμμιστεί με μπλε.

    Αφού έκανες τον κόπο να μου βρεις κώδικα, να ανοίξεις την βάση δεδομένων κτλ, ας το κάνουμε σωστά τουλάχιστον,
    σε παρακαλώ, να σε πάρω τηλέφωνο να μπεις στον υπολογιστή μου 10 λεπτά να το κάνουμε να δουλέψει?

    Αν πάρει πάνω απο 10 λεπτά τότε θα σε κλείσω και δεν πειράζει..
    Δεν θα σε κρατήσω ώρα, αλλά 10 λεπτά ας το προσπαθήσουμε..
    Το σταθερό σου το έχω (απο την αναγνώριση κλήσεων όταν με πήρες τηλ), αν μου πεις ναι (οτι δεν σε πειράζει σε να σε πάρω τηλ) θα σε πάρω.
    αν έχεις πολύ δουλειά τότε πες μου όχι και δεν θα σε ενοχλήσω

    Όπως και νάχει, ευχαριστώ για την προσπάθεια.



  •  12-09-2011, 18:28 67222 σε απάντηση της 67220

    Απ: vb.net Γράψιμο σε Access

    Dim command As New oledbcommad()
    θα έπρεπε να είναι
    Dim command As New oledbcommand()
    :)


    "When the darkness rises up from inside - that is normal.
    It's when you reach down to pull it up - that the noxious warnings sound."
    Tuzak, Farscape
  •  12-09-2011, 21:11 67228 σε απάντηση της 67222

    Απ: vb.net Γράψιμο σε Access

    hey, βρήκα τι φταίει!! 

    Η παλιά βάση δεδομένων έχει κάποια πεδία που δέχονται τιμές "Ναι/Οχι" 

    Όταν διέγραψα αυτά τα κουτιά τότε το πρόγραμμα άρχισε να περνάει τιμές μέσα χωρίς πρόβλημα.

    Δυστυχώς όμως τα πεδία αυτά είναι απαραίτητα! 

    Τώρα που ξέρουμε πιο ακριβώς είναι το πρόβλημα μήπως μπορούμε να το λύσουμε?

    Εγώ σκέφτηκα να βάζω σε αυτά τα πεδία τιμή False γιατί λέω το πεδίο "Ναι/Οχι" είναι σαν boolean


    και έτσι έκανα αλλά δεν δούλεψε πάλι! οπότε λέω 0/1 θα είναι, βάζω 0 αλλά πάλι τπτ..


    Οπότε ρωτώ: τι πρέπει να γράψω έτσι ώστε ένα πεδίο   "Ναι/Οχι" σε Access να πάρει τιμή "Οχι" ??  


  •  12-09-2011, 21:16 67229 σε απάντηση της 67222

    Απ: vb.net Γράψιμο σε Access

    dimos.homatas:
    Dim command As New oledbcommad()
    θα έπρεπε να είναι
    Dim command As New oledbcommand()
    :)


    Οκ, μου είπε να κάνω και import το System.Data.OleDb και το έκανα.
    Τώρα όμως μου βγάζει μπλέ γραμές στα εξής:
    command.Connection = conn
    command.Parameters.Add("@p_col1"OleDbType.String).Value = txtFirstName.Text
    



  •  12-09-2011, 21:53 67230 σε απάντηση της 67229

    Απ: vb.net Γράψιμο σε Access

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
        Private Sub btnCommit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCommit.Click
            If inc <> -1 Then
                Dim cb As New OleDb.OleDbCommandBuilder(da) ' Δεν δουλεύει πάντα σωστά αυτό. Σου έδωσαν ήδη την λύση.
                Dim dsNewRow As DataRow
    
                ' QuotePrefix - QuoteSuffix Gets or sets the beginning-end character or characters 
                ' to use when specifying database objects (for example, tables or columns) 
                ' whose names contain characters such as spaces or reserved tokens.
                cb.QuotePrefix = "["
                cb.QuoteSuffix = "]"
    
                MessageBox.Show(cb.GetInsertCommand.CommandText) ' γιά κοίταξε εδώ γιά κακούς (reserved) χαρακτήρες "/" κλπ
    
                dsNewRow = ds.Tables("AddressBook").NewRow()
    
                dsNewRow.Item(1) = txtFirstName.Text
                dsNewRow.Item(2) = txtSurname.Text
    
                ds.Tables("AddressBook").Rows.Add(dsNewRow)
    
                If da.Update(ds, "AddressBook") Then
                    ds.AcceptChanges()
    
                    MsgBox("New Record added to the Database")
    
                    btnCommit.Enabled = False
                    btnAddNew.Enabled = True
                    btnUpdate.Enabled = True
                    btnDelete.Enabled = True
                End If
            End If
        End Sub
  •  12-09-2011, 22:15 67231 σε απάντηση της 67230

    Απ: vb.net Γράψιμο σε Access

    Σε ευχαριστώ πολύ! θα το δοκιμάσω και θα σου πω αν δούλεψε.

    btw για να  ξεκαθαρίσω κάτι, τα 2 text λένε όνομα και επίθετο (άρα string) αλλά τα εγώ βάζω διάφορα στη βάση δεδομένων

    (πάντα όμως προτού το κάνω τα μετατρέπω cint(txtFirstName.Text) cbool(txtFirstName.Text) κτλ κτλ αναλόγως με το τι θέλω να περάσω και σε πιο πεδίο της βάσης δεδομένων)

    Σχετικα με το: Dim cb As New OleDb.OleDbCommandBuilder(da) ' Δεν δουλεύει πάντα σωστά αυτό. Σου έδωσαν ήδη την λύση.

    Ίσως αλλά δεν δουλεύει ούτε η λύση...... θέλει λίγο φτιάξιμο.


  •  18-11-2011, 00:20 68198 σε απάντηση της 67230

    Απ: vb.net Γράψιμο σε Access

    Libra Storm:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
        Private Sub btnCommit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCommit.Click
            If inc <> -1 Then
                Dim cb As New OleDb.OleDbCommandBuilder(da) ' Δεν δουλεύει πάντα σωστά αυτό. Σου έδωσαν ήδη την λύση.
                Dim dsNewRow As DataRow
    
                ' QuotePrefix - QuoteSuffix Gets or sets the beginning-end character or characters 
                ' to use when specifying database objects (for example, tables or columns) 
                ' whose names contain characters such as spaces or reserved tokens.
                cb.QuotePrefix = "["
                cb.QuoteSuffix = "]"
    
                MessageBox.Show(cb.GetInsertCommand.CommandText) ' γιά κοίταξε εδώ γιά κακούς (reserved) χαρακτήρες "/" κλπ
    
                dsNewRow = ds.Tables("AddressBook").NewRow()
    
                dsNewRow.Item(1) = txtFirstName.Text
                dsNewRow.Item(2) = txtSurname.Text
    
                ds.Tables("AddressBook").Rows.Add(dsNewRow)
    
                If da.Update(ds, "AddressBook") Then
                    ds.AcceptChanges()
    
                    MsgBox("New Record added to the Database")
    
                    btnCommit.Enabled = False
                    btnAddNew.Enabled = True
                    btnUpdate.Enabled = True
                    btnDelete.Enabled = True
                End If
            End If
        End Sub

    Ναί, τελικά το πρόβλημα ήταν ο χαρακτήρας "/" που είχες ένα πεδίο.

    Μόλις σταμάτησα να παίρνω αυτό το πεδίο, όλα καλά!!


    Ευχαριστώ πολύ, για ακόμα μια φορά έδωσες τη λύση :)


  •  29-11-2011, 18:49 68420 σε απάντηση της 67209

    Απ: vb.net Γράψιμο σε Access

Σελίδα 2 από 2 (28 εγγραφές)   < 1 2
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems