Enregistrement spécifique

ter82 - 6 avril 2013 à 16:38
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 7 avril 2013 à 13:40
Bonjour,

Bon je débute, après une longue recherche sur internet, je coince...

Je suis sous visual basic 5 pro. J'ai créé une base de données (mdb, access 7.0) et j'aimerai pouvoir accéder à une donnée spécifique (un peu comme sous excel, accéder à la cellule A1)

alors j'arrive à afficher le champs
Text1.Text = data1.Recordset.Fields(1)

il me manque la commande pour sélectionner la ligne. En cherchant j'ai lu plein de trucs, parrcouru plein de mots clés : clé primaire (que j'ai défini ds ma bdd), seek, select, index, query, find, movenext... finalement... je suis complètement perdu... et n'ai jamais réussi à écrire une ligne qui m'affiche un enregistrement précis.

Je me tourne donc vers vous et cette formidable communauté dont les sujets m'ont déjà beaucoup aidés, en esperant un jour pouvoir vous rendre l'appareil.

ter82

6 réponses

Utilisateur anonyme
6 avril 2013 à 20:03
Bonjour,

Donc tu travailles en VB5 et pas en VB.net. Avant toute chose, veux-tu confirmer cela svp.

Sinon, si tu es vraiment en VB 2005, tu n'as vraiment pas besoin d'un recordset. Je N'ai plus Access et que n'ai jamais utilisé Acces 7. Je présume que tu vas devoir écrire une instruction SQL pour trouver La ligne dont tu as besoin. Mais, rendu-là, cela fait trop longtemps pour moi...
0
Profil bloqué
6 avril 2013 à 20:55
Salut
VB5 est maintenant une antiquité


La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
Merci, pour ces réponses rapides,

Tu as l'air d'avoir raison cmarcotte je vais chercher du côté sql

Alain, effectivement, j'ai essayé visual studio après avoir passé qq jours sur vb5. Tout de suite on voit que vb5 est une antiquité, mais en faisant un copier coller de mes codes, visual studio m'affichait plein d'erreur. Soit le code fonctionne différemment, soit je ne l'insert pas où il faut...

Alors, je vais décrire un peu mon projet. C'est mon tout 1er programme. Je suis prof d'EPS. L'idée c'était de créer des applications .... pour une tablette windows... lié à un pico projecteur par exemple... là pour l'instant je suis juste ds le domaine des idées...

celle sur laquelle je travaille, c'est :
un chrono avec start, qui me donne à chaque stop le temps du coureur1, coureur2, coureur3, coureur4 (4 boutons stop les uns sur les autres). Puis en cliquant sur un des temps j'associe le temps à un élèves ; à la fin j'exporte ma séance sous excel avec les temps de tous les élèves

Le chrono c'est ok
L'import élève c'est ok
L'enregistrement des tps pour chaque élève, voilà où j'en suis : j'ai essayé de faire dialoguer mon projet avec excel (lecture / ecriture sur excel en aller retour, j'ai d'ailleurs trouvé) ms ça plantait régulièrement, excel ne se fermant pas correctement.

Voici mes questions :
Est ce que ça vaut le coup que je repasse mon code sous visual studio 2012 ?
Dans ce cas, est-ce que mon code crée sera totalement différent ? Sera-t-il totalement à réécrire?
Pour lier, une variable (un temps) à une autre (un élève) puis l'enregistrer et l'exporter sous excel, quelle méthode est préférable? J'ai vu qu'il y avait plein de chose différente, ms avoue que sur les bases de données je m'y perds un peu : addnew, put, ADO... je nage



Je vous livre mes codes pour ceux que ça peut intéresser et pour illustrer

J'ai eu du mal à avoir un chrono aussi précis qu'un chrono manuel, mais ça fonctionne maintenant voilà le code (le timer sert juste à avoir un visuel du chrono qui défile), pour la précision je passe par timeGetTime:

Private Declare Function timeGetTime Lib "winmm.dll" () As Integer
Private Declare Function timeBeginPeriod Lib "winmm.dll" (ByVal uPeriod As Integer) As Integer
Private Declare Function timeEndPeriod Lib "winmm.dll" (ByVal uPeriod As Integer) As Integer
Dim debut As Long ' debut chrono
Dim fin As Long ' fin chrono
Dim inter As Long ' tps intermediaire visuel chrono
Dim resultat As Long ' resultat millisec final (tps2- tps1)
Dim result As Long 'resultats visuel chrono en actio
Dim sec As Integer ' secondes
Dim min As Integer ' minutes
Dim cent As Integer ' millièmes

Private Sub Command1_Click()
debut = timeGetTime()
Timer1.Enabled = True
Command1.Visible = False
Command2.Visible = True
End Sub

Private Sub Command10_Click()
Command1.Visible = True
Command2.Visible = False
Command7.Visible = False
Command8.Visible = False
Command9.Visible = False
Text1 = "00:00:000"
Text2 = "00:00:000"
Text3 = "00:00:000"
Text4 = "00:00:000"
End Sub

Private Sub Command11_Click()
Form2.Visible = False
Form3.Visible = True
End Sub

Private Sub Command12_Click()
Form2.Visible = False
Form4.Visible = True
End Sub

Private Sub Command13_Click()
Form2.Visible = False
Form5.Visible = True
End Sub

Private Sub Command14_Click()
Form2.Visible = False
Form6.Visible = True
End Sub

Public Sub Command2_Click()
Timer1.Enabled = False
fin = timeGetTime()
resultat = fin - debut
sec = resultat \ 1000
cent = resultat Mod 1000
min = sec \ 60
sec = sec Mod 60
Text1.Text = Format(min, "00") & ":" & Format(sec, "00") & ":" & Format(cent, "000")
TextX1 = Text1.Text
Command2.Visible = False
Command7.Visible = True
End Sub

Private Sub Command3_Click()
Form2.Visible = False
Form1.Visible = True
End Sub

Public Sub Command7_Click()
fin = timeGetTime()
resultat = fin - debut
sec = resultat \ 1000
cent = resultat Mod 1000
min = sec \ 60
sec = sec Mod 60
Text2.Text = Format(min, "00") & ":" & Format(sec, "00") & ":" & Format(cent, "000")
TextX2 = Text2.Text
Command7.Visible = False
Command8.Visible = True
End Sub

Public Sub Command8_Click()
fin = timeGetTime()
resultat = fin - debut
sec = resultat \ 1000
cent = resultat Mod 1000
min = sec \ 60
sec = sec Mod 60
Text3.Text = Format(min, "00") & ":" & Format(sec, "00") & ":" & Format(cent, "000")
TextX3 = Text3.Text
Command8.Visible = False
Command9.Visible = True
End Sub
Public Sub Command9_Click()
fin = timeGetTime()
resultat = fin - debut
sec = resultat \ 1000
cent = resultat Mod 1000
min = sec \ 60
sec = sec Mod 60
Text4.Text = Format(min, "00") & ":" & Format(sec, "00") & ":" & Format(cent, "000")
TextX4 = Text4.Text
End Sub

Public Sub Timer1_Timer()
inter = timeGetTime()
result = inter - debut
sec = result \ 1000
cent = result Mod 1000
min = sec \ 60
sec = sec Mod 60
Text1.Text = Format(min, "00") & ":" & Format(sec, "00") & ":" & Format(cent, "000")
End Sub




Ensuite j'ai réussi à importer mes élèves depuis excel :

Public Sub Command1_Click()
Dim classeur_excel As New Excel.Application
'DisplayAlerts=False sert à désactiver les messages d'erreur d'EXCEL
classeur_excel.DisplayAlerts = False
'C'est dans la propriété FileName que l'on indique le chemin du classeur auquel on se connecte
classeur_excel.Workbooks.Open filename:=App.Path & "\import_export.xls", ReadOnly:=False, Editable:=True


Text(0).Text = Application.ActiveWorkbook.ActiveSheet.Cells(1, 1).Text
X = Text(0).Text
Text(1).Text = Application.ActiveWorkbook.ActiveSheet.Cells(2, 1).Text
X1 = Text(1).Text
Text(2).Text = Application.ActiveWorkbook.ActiveSheet.Cells(3, 1).Text
X2 = Text(2).Text
Text(3).Text = Application.ActiveWorkbook.ActiveSheet.Cells(4, 1).Text
X3 = Text(3).Text
Text(4).Text = Application.ActiveWorkbook.ActiveSheet.Cells(5, 1).Text
X4 = Text(4).Text
Text(5).Text = Application.ActiveWorkbook.ActiveSheet.Cells(6, 1).Text
X5 = Text(5).Text
Text(6).Text = Application.ActiveWorkbook.ActiveSheet.Cells(7, 1).Text
X6 = Text(6).Text
Text(7).Text = Application.ActiveWorkbook.ActiveSheet.Cells(8, 1).Text
X7 = Text(7).Text
Text(8).Text = Application.ActiveWorkbook.ActiveSheet.Cells(9, 1).Text
X8 = Text(8).Text
Text(18).Text = Application.ActiveWorkbook.ActiveSheet.Cells(10, 1).Text
X9 = Text(18).Text
Text(19).Text = Application.ActiveWorkbook.ActiveSheet.Cells(11, 1).Text
X10 = Text(19).Text
Text(20).Text = Application.ActiveWorkbook.ActiveSheet.Cells(12, 1).Text
X11 = Text(20).Text
Text(24).Text = Application.ActiveWorkbook.ActiveSheet.Cells(13, 1).Text
X12 = Text(24).Text
Text(26).Text = Application.ActiveWorkbook.ActiveSheet.Cells(14, 1).Text
X13 = Text(26).Text
Text(16).Text = Application.ActiveWorkbook.ActiveSheet.Cells(15, 1).Text
X14 = Text(16).Text
Text(17).Text = Application.ActiveWorkbook.ActiveSheet.Cells(16, 1).Text
X15 = Text(17).Text
Text(15).Text = Application.ActiveWorkbook.ActiveSheet.Cells(17, 1).Text
X16 = Text(15).Text
Text(14).Text = Application.ActiveWorkbook.ActiveSheet.Cells(18, 1).Text
X17 = Text(14).Text
Text(13).Text = Application.ActiveWorkbook.ActiveSheet.Cells(19, 1).Text
X18 = Text(13).Text
Text(12).Text = Application.ActiveWorkbook.ActiveSheet.Cells(20, 1).Text
X19 = Text(12).Text
Text(11).Text = Application.ActiveWorkbook.ActiveSheet.Cells(21, 1).Text
X20 = Text(11).Text
Text(10).Text = Application.ActiveWorkbook.ActiveSheet.Cells(22, 1).Text
X21 = Text(10).Text
Text(9).Text = Application.ActiveWorkbook.ActiveSheet.Cells(23, 1).Text
X22 = Text(9).Text
Text(21).Text = Application.ActiveWorkbook.ActiveSheet.Cells(24, 1).Text
X23 = Text(21).Text
Text(22).Text = Application.ActiveWorkbook.ActiveSheet.Cells(25, 1).Text
X24 = Text(22).Text
Text(23).Text = Application.ActiveWorkbook.ActiveSheet.Cells(26, 1).Text
X25 = Text(23).Text
Text(25).Text = Application.ActiveWorkbook.ActiveSheet.Cells(27, 1).Text
X26 = Text(25).Text
Text(27).Text = Application.ActiveWorkbook.ActiveSheet.Cells(28, 1).Text
X27 = Text(27).Text


classeur_excel.Save
classeur_excel.Quit
classeur_excel.DisplayAlerts = True
Set classeur_excel = Nothing
End Sub




voici mes variables publiques ecrites dans un module :
Public X As String ' élève 1 de l'import excel
Public X1 As String
Public X2 As String
Public X3 As String
Public X4 As String
Public X5 As String
Public X6 As String
Public X7 As String
Public X8 As String
Public X9 As String
Public X10 As String
Public X11 As String
Public X12 As String
Public X13 As String
Public X14 As String
Public X15 As String
Public X16 As String
Public X17 As String
Public X18 As String
Public X19 As String
Public X20 As String
Public X21 As String
Public X22 As String
Public X23 As String
Public X24 As String
Public X25 As String
Public X26 As String
Public X27 As String
Public TextX1 As String 'resultats chrono 1
Public TextX2 As String 'resultats chrono 2
Public TextX3 As String 'resultats chrono 3
Public TextX4 As String 'resultats chrono 4


voilà, merci bon we
0
J'ai trouvé :

Data1.RecordSource = _
" Select FINAL.NOM From FINAL Where FINAL.NumELEVE = '3' "
Data1.Refresh

Par contre mes questions sur le passage de vb5 à visual studio (difficulté, gain ds les projets) et les methodes efficaces de gestions de données (avec export excel) demeurent... j'ai d'autres projet en tête
0

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

Posez votre question
Bonjour ter82.

À partir du 22 juillet 2012, je suis passé de vb6 à vb2010. Pour chaque projet, je n'ai pu conserver que le cahier des charges.
En ce qui concerne les méthodes efficaces de gestion de données, je suis ignare.

Cordialement.

Étant illettré, je signe d'une croix : ×
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
7 avril 2013 à 13:40
J'ai trouvé :

Data1.RecordSource = _
" Select FINAL.NOM From FINAL Where FINAL.NumELEVE = '3' "


Juste pour se rincer la bouche, maintenant (et j'attendais ).
VB5, VB6 ou VB.Net (et même VBA) : rien à voir avec la version utilisée, hein ... et tout à voir, tout bêtement, avec la syntaxe d'une requête
Et maintenant ===>> à ma sieste, pour ne pas m'énerver
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Rejoignez-nous