Nombre d'enregistrement (dataset,tableadapter,bindingsource)d'une table vb2005

vercomax Messages postés 547 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 11 septembre 2013 - 16 oct. 2006 à 16:46
vercomax Messages postés 547 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 11 septembre 2013 - 16 oct. 2006 à 23:19
Bonjour,

je souhaite connaitre le nombre d'enregistrements d'une table de ma base sans avoir à FILLer

pas de sur de bien me faire comprendre là

avant même d'utiliser,de visualiser, de filtrer une table
j'ai essayé MABASEDataSet.MATABLE.Rows.Count,  çà marche pas ...

MATABLEBindingSource.Count, non plus, ou du moins si que une fois  le MATABLETableAdapter.Fill(
Me.MABASEDataSet.MATABLE)



merci de votre aide.

5 réponses

cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
16 oct. 2006 à 17:38
Salut,

voici un truc qui devrais te servir ...

private function GetLineCount as int32
      Dim sqlconnection1 AsNew SqlClient.SqlConnection   '<!> à paramètrer <!>
      Dim sqlcmd
As
New SqlClient.SqlCommand

      sqlcmd.CommandType = CommandType.Text
      sqlcmd.CommandText = "Select count(ID) from MaTable"
      sqlcmd.Connection = sqlconnection1

      try
            sqlcmd.connection.open
      catch
            sqlcmd.connection.close
            try
                  sqlcmd.connection.open
            catch
                  messagebox.show("Erreur de connection au serveur",application.productname)
                  return nothing
            end try
      finally
            Dim
a
As SqlClient.SqlDataReader = sqlcmd.ExecuteReader

            Return a.GetInt32(0)

      end try
end function

Chris...
Web : Firstruner
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
16 oct. 2006 à 17:49
pardon, un peu d'explication :

la fonction doit retourner un nombre entier qui sera le nombre de ligne de la table


on créer un objet de connection à un serveur SQL (ça peux être Access, Oracle, Etc...) qu'il faudrat que tu paramètre


puis on créer un objet Command qui lui sera lié à la connection SQL et enverra la requette et nous retournera le résultat


on dit que cette commande est une requette en Texte (pas une proc. stockée ou autre...), que la requette SQL retournera le nombre de ligne comptées de la colonne ID de la table : MaTable. (je met ID en général pour l'index, ainsi cela évite de mettre parfois des choses comme [Index])

ensuit on attache la commande à la connection du serveur


on fait 1 première gestion d'erreur pour l'ouverture de la connection à la base, en cas d'échec on refait un autre essai, si celui-ci n'aboutis pas alors on informe que la connection n'est pas faisable. on referme la connection au cas où elle soit restée ouverte par une autre procédure. Attention si une autre procedure utilisait la connection avec un DataReader : le datareader est fichut, as toi de trouver la petite astuce pour garder mémoire de la connection ;) c'est pas long je te rassure.


sinon en cas de connection alors on créer l'objet DataReader qui nous permet d'accéder rapidement (et en utilisant moins de mémoire) à la base, mais en lecture seule !! attention.


puis là j'ai oublier une ligne importante : "a.read" désoler


a.read effectue la lecture de la 1ère ligne, comme tu fait un calcul de ligne tu n'aura qu'une ligne donc l'index de colonne sera 0 forcément.
ayant lu, tu retourne le nombre retourner par la requette SQL
getInt32 car on sait que la 1ère colonne étant un calcul de ligne retournera forcément de l'entier. (il existe aussi des astuces pour déterminé dynamiquement les type des colonnes ;) )
donc le code à la fin est :

            Dim a As SqlClient.SqlDataReader = sqlcmd.ExecuteReader
            a.read()
            Return a.GetInt32(0)

ou :

            Dim a
As SqlClient.SqlDataReader = sqlcmd.ExecuteReader

            if a.read then Return a.GetInt32(0)



Chris...


Web :
Firstruner
0
vercomax Messages postés 547 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 11 septembre 2013 2
16 oct. 2006 à 21:38
bon, j'y arrive pas, je pige pas
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
16 oct. 2006 à 21:42
as-tu des erreurs ?? si oui lequelles ?
où cela ne marche t'il as ?

Chris...
Web : Firstruner
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vercomax Messages postés 547 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 11 septembre 2013 2
16 oct. 2006 à 23:19
merci de m'aider, je verrai demain, someil now, scuse
bye bye :)
0
Rejoignez-nous