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

 

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

Πως ψάχνουμε εγγραφές με χρήση του dataset;

Îåêßíçóå áðü ôï ìÝëïò angarato_surion. Τελευταία δημοσίευση από το μέλος angarato_surion στις 27-01-2006, 12:04. Υπάρχουν 12 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  26-01-2006, 07:57 8941

    Πως ψάχνουμε εγγραφές με χρήση του dataset;

    Πως ψάχνουμε εγγραφές με χρήση του dataset;


    Υδροβάση(Hydrobase)
    profiles :
    codeplex
    sourceforge
    google code

    Υλοποιώ εφαρμογές υπό πληρωμή απλώς επικοινωνήστε μαζί μου
  •  26-01-2006, 09:59 8946 σε απάντηση της 8941

    Απ: Πως ψάχνουμε εγγραφές με χρήση του dataset;

    Ο πιο απλός και γρήγορος τρόπος είναι με τη μέθοδο Select του DataTable. Π.χ.

    DataRow[] rows = ds.Tables["MyTable"].Select("ID > 1 AND Name='Myname'");

    όπου ID και Name είναι columns του πίνακα MyTable και προφανώς ds είναι το DataSet. Η εντολή αυτή σου επιστρέφει ένα array εγγραφών που συμφωνούν με τα κριτήρια που περιέχονται στο Select. Αν θέλεις να κάνεις κάτι πιο εξειδικευμένο ξαναρώτησε...

    Στερνή μου γνώση να σε είχα πρώτα...
  •  26-01-2006, 10:31 8947 σε απάντηση της 8946

    Απ: Πως ψάχνουμε εγγραφές με χρήση του dataset;

    αν θελω να μου εμφανισει για τις γραμμες που ειναι ισες με καποια τιμη πως θα το κάνω;
    Υδροβάση(Hydrobase)
    profiles :
    codeplex
    sourceforge
    google code

    Υλοποιώ εφαρμογές υπό πληρωμή απλώς επικοινωνήστε μαζί μου
  •  26-01-2006, 10:40 8948 σε απάντηση της 8946

    Απ: Πως ψάχνουμε εγγραφές με χρήση του dataset;

    public void  Anazitisi(DataSet tdtsData,string onomakel,string timi,string onomapyn,string onomarx)
            {
               
                try
                {
                    string arxbasis;
                    int i;
                    DataTable tTable=new DataTable();
                   
                  
                    DataRow[] tRow;
                   
                  
                    XmlTextWriter xmlWriter;
                    if ((onomakel != null) && (timi != null) && (onomapyn != null)&&(onomarx!=null))
                    {
                        xmlWriter = new XmlTextWriter(onomapyn + "_" + "_" + onomakel + " " + hydrobase.arxapotel,Encoding.UTF8);
                        xmlWriter.WriteStartDocument(true);
                        xmlWriter.WriteStartElement(hydrobase.pyn);
                        //arxbasis = onomapyn + "_" + "_" + onomakel + " " + hydrobase.arxapotel;
                        tRow = tdtsData.Tables[0].Select(onomakel + "=" + timi);
                        for (i = 0; i < tRow.Length - 1; i++)
                        {
                            tTable.Rows.Add(tRow[ i ]);
                           
                        }
                        tTable.WriteXml(xmlWriter);
                        xmlWriter.Close();



                        }
                           // xmlnDoc.Save(xmlWriter);
                          

                           
                        }                  
                   
                  
               
                catch (Exception e)
                {
                    bclass.xeirismossfalmatwn(e); //αποθυκευει σε ενα αρχειο τα σφαλματα
                }
               


            }
    βγαζει το αυτο το σφαλμά  (System.NullReferenceException: Object reference not set to an instance of an object.
       at Hydrobase.hydrobaseADO.Anazitisi(DataSet tdtsData, String onomakel, String timi, String onomapyn, String onomarx) in D:\Τα_Προγραμματά_μου\.Net\Hydrobase\Hydrobase\hydrobaseADO.cs:line 130)

    για την γραμμή  tTable.Rows.Add(tRowIdea [I]); μπορει να μου καποιος τι στο καλο συμβαινει εδώ ; ο compiler δεν το ειχε βρει λαθος αλλα το προγραμμα που το χρησιμποποιησε το dll αυτο το εβγαλε.


    Υδροβάση(Hydrobase)
    profiles :
    codeplex
    sourceforge
    google code

    Υλοποιώ εφαρμογές υπό πληρωμή απλώς επικοινωνήστε μαζί μου
  •  26-01-2006, 10:45 8949 σε απάντηση της 8947

    Απ: Πως ψάχνουμε εγγραφές με χρήση του dataset;

    Όταν λες να τις εμφανίσει, τι εννοείς ακριβώς; Και όταν λες "τις γραμμές που είναι ίσες" φαντάζομαι ότι εννοείς τις εγγραφές που κάποιο πεδίο τους είναι ίσο με κάποια τιμή. Όπως έγραψα και πριν μπορείς να πάρεις αυτές τις εγγραφές με την Select σε ένα array από DataRow, π.χ.

    DataRow[] rows = ds.Tables["MyTable"].Select("Name = 'MyName'");

    Κατόπιν μπορείς να κάνεις ένα loop και να εμφανίσεις τα στοιχεία που θέλεις, π.χ.

    foreach(DataRow row in rows)
        Console.WriteLine("Name=" + row["Name"] + ", Surname=" + row["Surname"]);


    Στερνή μου γνώση να σε είχα πρώτα...
  •  26-01-2006, 11:53 8953 σε απάντηση της 8941

    Απ: Πως ψάχνουμε εγγραφές με χρήση του dataset;

    Φαντάζομαι με αυτά που λές ότι θα ήθελες να εφαρμόσεις κάποιο φίλτρο σε μια φόρμα

    Πεδία στην φόρμα

    ComboBox Name=cboOperator
    ComboBox Name=cboGridColumn02
    Button Name=btnApplyFilters
    Button Name=btnAddFilter
    Button Name=btnRemoveFilters
    Listbox Name=lstFilters
    TextBox Name=txtCriteria
    grid Name=grdInfo

    'Στο cboOperator  προσθέτουμε Items >,<,=,>=,<=,%

    ' Προσθέτει στό ListBox τα κριτήρια που θέλουμε

    Private Sub btnAddFilter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddFilter.Click
    Dim Criteria As String = "'" & txtCriteria.Text & "'"
    If Criteria.Length > 0 Then
    If IsNumeric(txtCriteria.Text) Then
    Criteria = txtCriteria.Text
    End If

    'cboOperator.SelectedIndex =6 είναι το Like εάν το εισαγάγουμε σέ άλλο index πρέπει να αλλαχθεί στον κώδικα
    If cboOperator.SelectedIndex = 6 Then
    Criteria = "Like '%" & txtCriteria.Text & "%'"
    lstFilters.Items.Add(CType(cboGridColumn02.SelectedItem, DataGridColumnStyle).MappingName & " " & Criteria)
    Else
    lstFilters.Items.Add(CType(cboGridColumn02.SelectedItem, DataGridColumnStyle).MappingName.ToString & " " & CType(cboOperator.SelectedItem, String) & " " & Criteria)
    End If
    cboGridColumn02.SelectedIndex = 0
    cboOperator.SelectedIndex = 0
    txtCriteria.Text = Nothing
    End If
    End Sub

    ' Εκτελεί το Φίλτρο που δημιουρήσαμε

    Private Sub btnApplyFilters_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnApplyFilters.Click
    If CType(btnApplyFilters.Tag, Byte) = 1 Then 'if Tag = 1 then Filter was used
    btnApplyFilters.Tag = 0
    ApplyFilters()
    Else
    btnApplyFilters.Tag = 1
    ApplyFilters()
    End If
    End Sub

    'Αφαιρεί το φίλτρο

    Private Sub btnRemoveFilters_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRemoveFilters.Click
    Dim i As Integer
    If lstFilters.Items.Count > -1 Then
    For i = lstFilters.Items.Count - 1 To i Step -1
    If lstFilters.GetSelected(i) = True Then
    lstFilters.Items.RemoveAt(i)
    End If
    Next
    btnApplyFilters.PerformClick()
    End If
    End Sub

    'Διαγραφή ένος κριτηρίου του φίλτρου από το ListBox

    Private Sub lstFilters_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles lstFilters.KeyDown
    If e.KeyData = Keys.Delete Then
    lstFilters.Items.RemoveAt(lstFilters.SelectedIndex)
    btnApplyFilters.PerformClick()
    End If
    End Sub

    ' Εφαρμογή του Φίλτρου και εμφάνιση των γραμμών που εκπληρούν τα κριτήρια στο Grid

    Private Sub ApplyFilters()
    Dim i As Integer
    Dim RowFilter As String
    For i = 0 To lstFilters.Items.Count - 1
    RowFilter &= CType(lstFilters.Items(i), String) & " And "
    Next
    Try
    If Not RowFilter Is Nothing AndAlso RowFilter.Length > 0 Then
    CType(grdInfo.DataSource, DataView).RowFilter = RowFilter.Remove(RowFilter.Length - 5, 5)
    Else
    CType(grdInfo.DataSource, DataView).RowFilter = Nothing
    End If
    Catch ex As Exception
    MessageBox.Show(ex.Message, ex.Source, MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1)
    End Try

    End Sub

     

    Tο παραπάνω μπορείς να το σκεφτείς και σαν μιά Template Φορμα που μπορείς νά την κάνεις Inherit σε άλλες φόρμες

    Σημείωση :Επειδή το παραπάνω έγινε γρήγορα και δέν έχει τεσταριστεί πλήρως ίσως νά χρειάζεται κάποιες διορθώσεις.


    Ιωάννης Μανουσάκης
  •  26-01-2006, 12:34 8955 σε απάντηση της 8953

    Απ: Πως ψάχνουμε εγγραφές με χρήση του dataset;

    κωδικα σε c# δεν εχεις μηπως καταλαβω τιποτα;
    Υδροβάση(Hydrobase)
    profiles :
    codeplex
    sourceforge
    google code

    Υλοποιώ εφαρμογές υπό πληρωμή απλώς επικοινωνήστε μαζί μου
  •  26-01-2006, 12:36 8956 σε απάντηση της 8955

    Απ: Πως ψάχνουμε εγγραφές με χρήση του dataset;

    μηπως ξερει γιατι μου πετaει αυτο το exception; δεν καταλαβαινω πιο απο τα 2 φταει
    Υδροβάση(Hydrobase)
    profiles :
    codeplex
    sourceforge
    google code

    Υλοποιώ εφαρμογές υπό πληρωμή απλώς επικοινωνήστε μαζί μου
  •  26-01-2006, 13:26 8960 σε απάντηση της 8941

    Απ: Πως ψάχνουμε εγγραφές με χρήση του dataset;

    ριξε μια ματιά εδώ
    http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=1930&lngWId=10

    κατέβασε το download πιστεύω οτι θα σε καλύψει


    Ιωάννης Μανουσάκης
  •  26-01-2006, 19:04 8976 σε απάντηση της 8960

    Απ: Πως ψάχνουμε εγγραφές με χρήση του dataset;

    Η OleDbConnection μπορει να διαβασει xml αρχεία; γιατι τα dataset τετοια αρχεια φορτώνουν.. μην πειτε για xpath δεν εβγαλαν σφαλατα αλλα δεν επστρεψαν κανενα αποτελεσμα παρολο που υπηρχαν εγγραφες..
    Υδροβάση(Hydrobase)
    profiles :
    codeplex
    sourceforge
    google code

    Υλοποιώ εφαρμογές υπό πληρωμή απλώς επικοινωνήστε μαζί μου
  •  27-01-2006, 00:18 8981 σε απάντηση της 8976

    Απ: Πως ψάχνουμε εγγραφές με χρήση του dataset;

    Παιδια αυτο το σφαλμα τι σημαίνει ;
    System.Data.SyntaxErrorException: Syntax error: Missing operand after 'Colletion' operator.
    at System.Data.ExpressionParser.Parse()
    at System.Data.DataExpression..ctor(DataTable table, String expression, Type type)
    at System.Data.Select..ctor(DataTable table, String filterExpression, String sort, DataViewRowState recordStates)
    at System.Data.DataTable.Select(String filterExpression)
    at Hydrobase.hydrobaseADO.Anazitisi(DataSet tdtsData, String onomakel, String timi, String onomapyn, String onomarx) in D:\Τα_Προγραμματά_μου\.Net\Hydrobase\Hydrobase\hydrobaseADO.cs:line 129


    επισης βγαίνει στο τμήμα

    tRow = tTable.Select(onomakel + " = " + timi);
    που ειναι το λάθος οπου tRow ειναι οτι και στο παραπανω κομμάτι κώδικα.
    ενω tTable είναι datatable
    Υδροβάση(Hydrobase)
    profiles :
    codeplex
    sourceforge
    google code

    Υλοποιώ εφαρμογές υπό πληρωμή απλώς επικοινωνήστε μαζί μου
  •  27-01-2006, 09:16 8985 σε απάντηση της 8981

    Απ: Πως ψάχνουμε εγγραφές με χρήση του dataset;

    Το σίγουρο είναι ότι πρέπει να αλλάξεις τον κώδικα της τελευταίας γραμμής σε :

    tRow = tTable.Select(onomakel + " = '" + timi + "'");

    Αυτό συμβαίνει γιατί για αλφαριθμητικές τιμές η Select περιμένει τα string να είναι enclosed σε μονά quotes. Όπως άλλωστε και η SQL. Δεν ξέρω αν θα σου λύσει το πρόβλημα, αλλά είναι ένα βήμα...

    Στερνή μου γνώση να σε είχα πρώτα...
  •  27-01-2006, 12:04 8988 σε απάντηση της 8985

    Απ: Πως ψάχνουμε εγγραφές με χρήση του dataset;

    το ειχα λυσει εδω και ωρα πριν δω το ποστ... το ελυσε αν εξερεσεις οτι μου προσθετει και μερικες αδειες γραμμες η οποίες γράφονται στο xml αρχειο που ειναι και το τελικο τους αποτελεσμα... αλλα δυστιχως γραφωονται με την ονομασια system.data.datarow δεν ειναι αστειο....
    Υδροβάση(Hydrobase)
    profiles :
    codeplex
    sourceforge
    google code

    Υλοποιώ εφαρμογές υπό πληρωμή απλώς επικοινωνήστε μαζί μου
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems