Naviguer dans un base de donnee

Brodeur - 16 juil. 2001 à 10:47
 noisy - 16 juil. 2001 à 14:30
Bonjour, mon probleme est un peu complexe a expliquer alors, je vais l'expliquer par un exemple.
J'ai une base de donnee avec une colone ou il y a que des dates. Ce que je voudrais, c'est que mon programme verifie toute les dates une par une jusqu'a trouver une date precise.
Je pense qu'on pourrais faire une boucle en utilisant une fonction du genre : "passer a la ligne suivant" mais je ne connait pas cette fonction et je voudrais aussi savoir comment faire pour connaitre automatiquement le nombre de lignes d'une base de donnee.
Voila, j'espere que j'ai ete assez clair.
Merci de votre aide.

Brodeur

PS : bonjour Renaud, ca va ? :big)

9 réponses

ça dépends de ta base...
si c'est du Access, jpeux t'aider, sinon, bin jm'y connais pas trop (jsuis preque débutant)
Alors met moi u message si T en access
0
Bonjour,
Ton problème n'est pas si compliqué.
En principe quelque soit la façon dont tu accède à la table de ta base de données, tu devais avoir une méthode MoveNext pour passer à l'enregistrement suivant et RecordCount pour connaître le nombre d'enregistrements.

JP.
0
Je suis avec une base access dans visual basic.
Merci.
0
J'ai essaiyer d'utiliser MoveNext, mais je ne sais pas bien comment ca marche. J'avais ecris "data1.movenext" , mais ca marhce pas. T'aurais pas un exemple ?
Merci

Brodeur
0

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

Posez votre question
OK, alors c'est très simple!
Tu crée unADODC ( tu cherches dans composant "Microsoft ADODC connection", lA connection est facile dans propriété du ADODC)
Ensuite, pour te balader, si tu as créé des boutons avancer ou reculer, tu tapes ce code:
avancer:
If ADODC1.Recordset.EOF Then
ADODC1.Recodset.Movefirst
Else
ADODC1.Recordset.MoveNext
End If
pour reculer, c'est à peu près le mêem code sauf que tu remplace EOF (End Of File) par BOF (Beginning Of File)
MoveFirst par MoveLast et Movenext par MovePrevious

Sinon, pour ta fonction de vérification, je ferais à peu près ça (Avec une textbox nommée TxtDate liée au champ "Date" de ta BDD):
Private Function RechDate (Date as Date, ADODC1 as ADODC, TxtDate as textbox) as boolean
ADODC1.Recordset.MoveFirst
RechDate = false
While Not ADODC1.Recordset.EOF then
If TxtDate.text = Date then
RechDate = true
Exit While
End if
Wend
End Function

MAis après tu as des milliards de possibilités :)
0
-------------------------------
Réponse au message :
-------------------------------

J'ai essaiyer d'utiliser MoveNext, mais je ne sais pas bien comment ca marche. J'avais ecris "data1.movenext" , mais ca marhce pas. T'aurais pas un exemple ?
Merci

Brodeur

-------------------------------
Réponse au message :
-------------------------------

Bonjour,
Ton problème n'est pas si compliqué.
En principe quelque soit la façon dont tu accède à la table de ta base de données, tu devais avoir une méthode MoveNext pour passer à l'enregistrement suivant et RecordCount pour connaître le nombre d'enregistrements.

JP.

-------------------------------
Réponse au message :
-------------------------------

Bonjour, mon probleme est un peu complexe a expliquer alors, je vais l'expliquer par un exemple.
J'ai une base de donnee avec une colone ou il y a que des dates. Ce que je voudrais, c'est que mon programme verifie toute les dates une par une jusqu'a trouver une date precise.
Je pense qu'on pourrais faire une boucle en utilisant une fonction du genre : "passer a la ligne suivant" mais je ne connait pas cette fonction et je voudrais aussi savoir comment faire pour connaitre automatiquement le nombre de lignes d'une base de donnee.
Voila, j'espere que j'ai ete assez clair.
Merci de votre aide.

Brodeur

PS : bonjour Renaud, ca va ? :big)
0
N'utilisant que rarement les ctrl d'accès aux données, j'avais oublié cette possibilité.
Effectivement avec le ctrl Data tu n'y arrivera pas.
Pour ma part, j'utilise plutôt le codage ADO, ce qui donnerait dans ton cas :

Public Sub ScanTab()

Dim rstTitles As ADODB.Recordset
Dim strCnn As String
Dim strMessage As String
Dim intCommand As Integer
Dim MyDate As String

' Ouvre le jeu d'enregistrements de la table Titles.
strCnn = "Provider=sqloledb;Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; "
Set rstTitles = New ADODB.Recordset
rstTitles.CursorType = adOpenStatic
' Utilise le curseur client pour activer la propriété AbsolutePosition.
rstTitles.CursorLocation = adUseClient
'rstTitles.Open Source, ActiveConnection, CursorType, LockType, Options
rstTitles.Open "Titles", strCnn, , , adCmdTable

' Entrer une date...
MyDate = InputBox("Entrer une date", "Test", Date)
rstTitles.MoveFirst
' Comparer la date saisie à l'enregistrement en cour.
Do While (rstTitles!pubdate <> MyDate)
' Afficher la valeur et la position de l'enregistrement actuel par rapport au nb total
Debug.Print rstTitles.AbsolutePosition & " of " & rstTitles.RecordCount & " => " & rstTitles!pubdate
rstTitles.MoveNext
Loop

rstTitles.Close
Set rstTitles = Nothing

End Sub
0
Bonjour,

Plutot que de faire un MoveNext. Faite une recherche avec la comande SQL "Select" Ca va etre beaucoup plus simple et beaucoup plus rapide. Il faut utiliser ADO et avoir une connection avec la BD (deja ouverte) [cnxConnection].Ca donne a peux pret ceci:

Dim RstQuery As ADODB.Recordset
Dim strSQl As String
strSQl "SELECT * FROM Table1 WHERE champDate [" & dtDate & "]"

RstQuery.Open(strSQl,cnxConnection)
If Not rstQuery.EOF Then
...

P.S. Vous pouvez utiliser la requete SQL comme DataSource du DataBar (si vraiment vous voulez utiliser ce machin).
0
N'utilises pas de Data, mais un ADODC
Tu l'a dans les composants VB quand tu fais "projet""Composant"
tu choisis "Microsoft ADO Data Control"
et tu auras une nouvelle icône dans ta boîte à outils
après, tu crée ta chaîne de connection
0
Rejoignez-nous