2009-09-23 13 views
0

J'utilise le code ci-dessous pour insérer des données dans une table SQL à partir d'une grille de données, la grille de données a 5 lignes mais seulement 4 sont insérées dans la table, la première rangée est manquée. J'ai réduit le problème à updateTable ci-dessous. Pouvez-vous repérer le problème? Après une heure d'essai je ne peux pas.C# Insérer dans la table SQL manque la première ligne de ma grille de données

private void updateTable(OdbcConnection conn) 
{ 
       int iCols = _DGV.ColumnCount; 
       int iRows = _DGV.RowCount; 
       int iIndex = 1; 

       string strSql = GetInsertStatement(iCols); 

       foreach(DataGridViewRow dr in _DGV.Rows) 
       { 
        if (!dr.Visible) 
        { 
         continue; 
        } 

        iIndex++; 

        OdbcCommand cmd = new OdbcCommand(); 
        for (int j = 0; j <= iCols - 1; j++) 
        { 
         if (_DGV.Columns[j].Visible == false) 
         { 
          continue; 
         } 
        try 
        { 
         conn.Open(); 
         cmd.Connection = conn; 
         cmd.CommandText = strSql; 
         cmd.ExecuteNonQuery(); 
        } 
        catch (Exception ex) 
        { 

        } 
        finally 
        { 
         conn.Close(); 
        } 
       } 
} 

Répondre

0

Peut-être:

int iIndex = 0; 
+0

iIndex ne ressemble pas à elle est utilisée partout. – Jonas

+0

Je l'avais essayé sans succès, le code n'est pas le mien, il appartient à un collègue qui est actuellement absent du travail malade. –

+0

@ Jonas, vous avez raison. Tellement bizzare. @Jade M, pourquoi vérifie-t-il .Visible tout le temps? Je pense qu'un autre code non montré cache quelque chose. – lod3n

1

Êtes-vous sûr que chaque ligne de la grille est visible? IE, à la fin de votre boucle (comme il est écrit), iIndex == iRows?

0
for (int j = 0; j <= iCols - 1; j++) 
{ 
    if (_DGV.Columns[j].Visible == false) 
    { 
    continue; 
    } 
} 

j <= iCols - 1; Je pense que le problème est ici, essayer de changer cela pour <= iCols

+0

Pouvez-vous s'il vous plaît fournir quelques explications à l'auteur de la question pourquoi cela résout son problème? Voir [réponse] – jkalden

+0

Je suis sûr que ce problème est déjà résolu: D Je ne remarque tout simplement pas quand cette question a été posée – Noah

Questions connexes