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

 

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

VB.NET και AS400

Îåêßíçóå áðü ôï ìÝëïò alex_VB. Τελευταία δημοσίευση από το μέλος alex_VB στις 24-05-2010, 18:32. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  19-04-2010, 22:51 58165

    VB.NET και AS400

    Καλησπέρα! θα ήθελα από την VB.NET εφαρμογή μου να αντλήσω δεδομένα από AS400 DBMS. Έχετε καμίά ιδέα για τα βήματα που θα πρέπει να κάνω?


    www.myautos.gr
  •  20-04-2010, 10:09 58172 σε απάντηση της 58165

    Απ: VB.NET και AS400

    Δεν έχω ασχοληθεί ποτέ, αλλά αφού δεν απαντά κανείς άλλος...
    Το έψαξες καθόλου; με ένα απλό googling βρήκα αυτό: http://www.codeproject.com/KB/vb/Accessing_AS400.aspx

    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  23-04-2010, 09:38 58276 σε απάντηση της 58165

    Απ: VB.NET και AS400

    Κάνε reference το IBM.Data.DB2.iSeries (IBM.Data.DB2.iSeries.dll)
    και μετά ένα μικρό κομμάτι κώδικα να δεις στο περίπου

    Public Sub GetData()
            Dim iCon As IBM.Data.DB2.iSeries.iDB2Connection
            Dim myAdapter As New iDB2DataAdapter
            Dim myDs As New DataSet
            Dim strSQL As String
            Try
                '@@@ initialize as400 settings
                InitializeAs400ConnectionSettings()
                '@@@
                strSQL = "select * from library.table"
                iCon = New IBM.Data.DB2.iSeries.iDB2Connection(String.Format("DATASOURCE={0};userid={1};password={2}", mSystem, mUserID, mPassword))
                iCon.Open()
                Dim cmd As New IBM.Data.DB2.iSeries.iDB2Command(strSQL, iCon)
    
    
                myAdapter.SelectCommand = cmd
                myAdapter.Fill(myDs, "xxx")
                DataGrid1.DataSource = myDs
                DataGrid1.DataBind()
            Catch ex As Exception
                Throw ex
            Finally
            End Try
      End Sub
    
    
        Public Sub InitializeAs400ConnectionSettings()
            mUserID = System.Configuration.ConfigurationSettings.AppSettings.Get("AS400UserID").ToString()
            mPassword = System.Configuration.ConfigurationSettings.AppSettings.Get("AS400Password").ToString()
            mSystem = System.Configuration.ConfigurationSettings.AppSettings.Get("AS400DataSource").ToString()
            mLSLIB = System.Configuration.ConfigurationSettings.AppSettings.Get("AS400Schema").ToString()
        End Sub


  •  23-04-2010, 11:09 58285 σε απάντηση της 58276

    Απ: VB.NET και AS400

    Ο λόγος που όποιος έχει δουλέψει με AS400 δεν απάντησε είναι επειδή η αρχική ερώτηση είναι εξαιρετικά ασαφής. Το AS400 είναι μηχάνημα, όχι εφαρμογή ή βάση δεδομένων. Όταν ρωτάς "Πως μπορώ να τραβήξω δεδομένα από το AS400" είναι σαν να λες "Πως μπορώ να τραβήξω πληροφορίες από το Windows 2008". Τα δεδομένα μπορεί να είναι σε κάποια βάση DB2 ή σε flat files. Ακόμα και σε DB2 να είναι όμως, πάλι σε flat files αποθηκεύονται και πολλές εφαρμογές μιλάνε απευθείας με τα flat files.

    Ακόμα όμως και αν ξέρεις ότι τα δεδομένα είναι σε DB2 έχεις το θέμα ΠΩΣ θα μιλήσεις με τη DB2. Χρησιμοποιεί διαφορετικούς drivers από την DB2 για άλλα λειτουργικά και η IBM χρεώνει χοντρά. Κατά κανόνα σου προτείνει να χρησιμοποιήσεις ODBC το οποίο όμως είναι γελοιωδώς αργό. Οι άνθρωποι έχουν μείνει κυριολεκτικά 15 χρόνια πίσω, όταν η δημιουργός του ODBC Microsoft το αντικατέστησε με το OLE DB. Η IBM έχει βγάλει και κάποιους .NET drivers αλλά τους χρεώνει και αυτούς, ανάλογα με την έκδοση του access πακέτου που έχεις αγοράσει εσύ ή ο πελάτης σου. Αν έχεις έκδοση 5 π.χ. θα πάρεις .NET 1.1. Αν θέλεις .ΝΕΤ 2.0, να αγοράσεις την 6. Τέλος, οι drivers της IBM έχουν πρόβλημα με τα codepages καθώς θεωρούν ότι πρέπει ντε και καλά να μεταφράσουν τα strings στο system locale του client, άσχετα από τη γλώσσα του χρήστη ή αν τα αρχικά δεδομένα είναι Unicode. Άντε να περάσεις κυριλλικά σε ελληνικό μηχάνημα ....

    Όλως περιέργως, τους καλύτερους και γρηγορότερους drivers τους βγάζει δωρεάν η .... Microsoft, στο Feature Pack του SQL Server! Εκεί υπάρχει ένας OLE DB driver για iSeries ο οποίος είναι πολύ γρήγορος, φυσικά δουλεύει σωστά με τα Unicode και τα codepages αλλά .... εγκαθίσταται μόνο αν βρει SQL Server Enterprise ή Developer στο μηχάνημα, καθώς βγήκε για να μπορεί ο SQL Server να τραβάει δεδομένα από την DB2, όχι για να πάει κόντρα στην IBM.

    Τέλος, εφόσον έχεις συνδεθεί μέσω ADO.NET με τη DB2 μπορείς να γράψεις απλό ADO.NET κώδικα για να τραβήξεις δεδομένα. Απλά θα πρέπει να προσέξεις ότι η DB2 δεν έχει ακριβώς πίνακες και schemas αλλά μπλέκει και catalogs στη μέση. Μην ξεχνάς ότι στην πραγματικότητα οι "πίνακες" σου είναι αρχεία που αποθηκεύονται σε folders. Έτσι ίσως χρειαστεί αντί για το όνομα του πίνακα στο select να δώσεις <catalog>.<schema>.<table>, για παράδειγμα SELECT * FROM MyCatalog.MySchema.MyTable

    Τέλος, Zeon, δεν υπάρχει κανένας λόγος να χρησιμοποιήσει τα AppSettings για να φτιάξεις ένα connection string. Αυτό είναι κατάλοιπο του .NET 1.0 και να πω την αλήθεια δεν καταλαβαίνω γιατί πολλοί το χρησιμοποιούνε ακόμα. Μπορείς να προσθέσεις άνετα οποιοδήποτε είδος settings στην εφαρμογή σου, ακόμα και Connection string μέσω των properties του Project σου, από το tab Settings. Μετά μπορείς να το διαβάσεις στον κώδικα απλά με ένα Settings.Default.MyConnectionString αντί γι αυτό που γράφεις.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  24-05-2010, 18:30 58793 σε απάντηση της 58276

    Απ: VB.NET και AS400

    Ευχαριστώ πολύ. Ηθελε κάποιες αλλαγές αλλά δούλεψε.


    www.myautos.gr
  •  24-05-2010, 18:32 58794 σε απάντηση της 58285

    Απ: VB.NET και AS400

    Η απάντηση σου έπαιξε σημαντικό ρόλο. Ευχαριστώ ακόμα μία φορά
    www.myautos.gr
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems