pitipilot
Messages postés112Date d'inscriptionmercredi 19 mai 2010StatutMembreDernière intervention14 mai 2021
-
9 mai 2011 à 11:38
pitipilot
Messages postés112Date d'inscriptionmercredi 19 mai 2010StatutMembreDernière intervention14 mai 2021
-
10 mai 2011 à 15:41
Bonjour, je suis actuellement en train de manipuler une BDD SQL Server en VBA et je me heurte à plusieurs problèmes. Tout d'abord voici une partie de mon code :
Public Sub DTPicker1_CallbackKeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer, ByVal CallbackField As String, CallbackDate As Date)
End Sub 'Macro calendar'
Sub Action_Bouton()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim Date_Debut, Date_Fin As String
Dim Jour, Jour1, Jour2 As Date
Dim i As Integer
Dim champ0 As String
Dim champ1 As String
Dim champ2 As String
Set cn = New ADODB.Connection 'Connexion à la DB'
With cn
.ConnectionString "Provider SQLOLEDB;Data Source=Masource;Initial Catalog=MaBDD;Uid=Login;Trusted_Connection=yes" 'Chaîne de connexion Sql Server'
.Open
End With
Set rs = New ADODB.Recordset 'Lecture de la DB'
With rs
.ActiveConnection = cn
.Open "SELECT * FROM Actions_OPE"
'Sélection de la table Actions_OPE'
End With
i = 1
rs.MoveFirst 'placement du curseur au premier enregistrement'
Do Until rs.EOF 'Actions à effectuer jusqu'au dernier enregistrement'
'Copie dans les cellules Excel'
Range("A" & i).Value = Format(champ0, "dd:mm:yyyy:hh:mm")
Range("B" & i).Value = champ1
Range ("C" & i)/value= champ2
i = i + 1
Loop
End Sub
Voici mes problèmes :
[list]
[*] Ma chaine "champ2" retourne quelques fois une valeur nulle. Du coup, j'ai le message d'erreur "Utilisation incorrecte de Null". Comment pourrais je en VBA, faire en sorte que lorsque ma chaine contient la valeur NULL de mettre un blanc dans la cellule?
[*] J'aimerais extraire de ma BDD seulement les champ à une date donnée. Le problème est que je ne connais pas la syntaxe pour y arriver car lorsque que j'ajoute "WHERE TIMEstmp=DateVoulue" j'ai une erreur de syntaxe
[*] Une fois le filtre par date ajouté, j'aimerai choisir la date via un calendar excel. Puis utiliser la date "CallbackDate" déclarée tout en haut du code dans ma requête SQL?
4u4me4us
Messages postés780Date d'inscriptionlundi 22 janvier 2007StatutMembreDernière intervention30 octobre 20133 10 mai 2011 à 12:02
Tu dis "Le champ TimeStmp contient des dateTime en mm/jj/aaaa hh:mm:ss". Oui ok! Mais il a était créer en qu'elle format? Es-t-il vraiment un champs date ou est-il un champ string. Il faut que tu regarde la création de la table pour répondre à cette question.
4u4me4us
Messages postés780Date d'inscriptionlundi 22 janvier 2007StatutMembreDernière intervention30 octobre 20133 10 mai 2011 à 12:09
Ok tu as dis "
Maintenant, il me dis qu'il n'y a aucun résultat, surement une erreur de format de date"
je te conseil de faire Fait la requête suivante "SELECT TimeStmp FROM Actions_OPE" et regarde les valeurs que tu as. Comme tu as mis = si le champs à la moindre diff avec TriDate l'enregistrement sera exclut. Là je t'invite à prendre tout les valeur pour réfléchir à une requête plus "ouverte"
pitipilot
Messages postés112Date d'inscriptionmercredi 19 mai 2010StatutMembreDernière intervention14 mai 20211 10 mai 2011 à 12:22
Eh bien les TimeStmp que je reçois sont par exemples : 03/05/2011 10:02
Moi je voudrais pouvoir trier ça par date grâce à mon DTPickers. Donc grâce à celui ci je sélectionne une date genre 03/05/2011 mais il ne me trouve rien alors qu'il y'a des enregistrements liés à cette date. J'ai donc pensé que c'était l'heure qui manquait dans ma requête; j'ai donc utilisé un Like pour trier juste par JJ/MM/AAAA mais même résultat.
Donc soit ma valeur TriDate est en string ce que je ne pense pas sinon ma syntaxe de requête ne serait pas bonne (Where TimeStmp = " & TriDate & "")