Requête SQL ne retourne pas de résultats pour un seul champ
Je vais avoir un problème à l'aide de VBA pour exécuter une requête SQL et de copier les résultats dans une feuille de calcul Excel.
Lorsque le sous excecutes, copie les lignes qui sont des multiples de 256 (donc les lignes de 256, 512, 768, etc, sont les seuls qui sont remplis dans Excel). J'ai pas de problème de copier l'un des autres champs de la base de données. Aussi, lorsque j'exécute la même requête à MySQL, il fonctionne très bien. Étant relativement nouveau pour SQL et VBA, je ne vois aucune raison pourquoi ce champ doit être la cause du problème. La seule chose que je peux penser, c'est que son contenu est une chaîne qui commence toujours avec un trait de soulignement (et je ne le mentionne parce que c'est la seule différence entre elle et les autres champs).
N'quelqu'un a des idées pour lesquelles cela peut se produire?
Acclamations,
Liam
EDIT:
Voici un extrait du code en question. Pour être honnête, je ne sais pas si le fait de voir le code va faire une différence, vu que ça marche très bien, pour d'autres situations, mais là encore, c'est pourquoi je suis newbie 🙂
Dim con As ADODB.Connection
Dim rst As ADODB.Recordset
Set con = New ADODB.Connection
Set rst = New ADODB.Recordset
con.ConnectionString = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=ipaddress;UID=userID;PWD=password;DATABASE=jiradb;OPTION=16427;"
con.Open
sql = "SELECT TEMPO_DATA FROM gssd_worklog WHERE WORK_DATE BETWEEN '2012-01-01' AND '2012-03-31'"
'Open Recordset'
rst.Open sql, con
'Copy Data to Excel'
Set ws = ActiveSheet
ws.Range("A2").CopyFromRecordset rst
Et où en êtes-vous de la définition
rst
?Désolé à ce sujet, les déclarations sont maintenant dans le post original
OriginalL'auteur Liam Barrett | 2012-04-19
Vous devez vous connecter pour publier un commentaire.
J'ai couru dans un problème similaire hier et j'ai trouvé ce thread, en faisant des recherches donc voulu ajouter ma "solution" dans le cas où il aide à quelqu'un d'autre.
Pour affiner la description du problème, j'ai trouvé qu'elle s'applique à un domaine en particulier dans mon dataset et, fait intéressant, chaque champ si j'ai commandé à nouveau la requête. L'ajout de fuite ou de retirer plus tôt champs n'a rien changé à mon problème de colonne.
Vérifier les types a révélé qu'il était du même type que celle des autres champs de travail, donc aucune idée non plus.
Toutefois, comme il est un domaine spécifique (dans ce cas, un champ de texte), j'ai décidé d'essayer de changer ma requête SQL pour lancer le champ de problème, en train de changer:
......
...et tout à coup, toutes les données s'affiche (y compris toute fuite colonnes).
OriginalL'auteur mark e cooke
Je pense que votre problème est avec votre dernière ligne, lorsque vous essayez de copier le dossier sur la feuille de calcul. Essayez quelque chose comme ceci (code modifié à partir de http://msdn.microsoft.com/en-us/library/aa223845(v=office.11).aspx):
Vous avez ce problème avec chaque requête que vous essayez de sous?
Non, seulement sur cette requête, j'ai essayé d'autres, et ils fonctionnent tous très bien. C'est assez étrange. La seule chose à laquelle je pense, c'est qu'il doit être le contenu réel de la base de données de terrain qui est en quelque sorte à l'origine du problème.
Ça doit être le problème, peut-on comparer les résultats que vous obtenez à partir de l'interrogation de la base de données directement avec les données que votre sous est-coller?
En fait, j'ai pensé à elle, basée sur le code que vous m'avez donné. Merci un million, ne pourrait pas le faire sans votre aide! Je suis encore un nouvel utilisateur, je ne peux donc pas répondre à ma propre question avant 6 heures, mais je ne peux mettre ma solution ici plus tard si vous êtes curieux de voir ça
OriginalL'auteur Lamak
Je crois que j'ai trouvé la solution, grâce à Lamak aide:
Le problème semble avoir été d'essayer de copier tous les champs de l'enregistrement de déterminer à la fois, de la copie de l'enregistrement de champ par champ, et rangée par rangée, semble résoudre le problème.
OriginalL'auteur Liam Barrett
J'ai eu un problème similaire, à l'aide d'un jeu d'enregistrements. Il serait de retour d'un ensemble de client les résultats dans la requête SQL, mais ne serait pas coller les résultats dans la feuille de calcul de certains clients.
Suite à la pointe de jeter mes données, j'ai creusé plus profondément dans ma requête et a remarqué qu'il y avait des valeurs null cachés dans le jeu de résultats. À partir de l'apparition de la valeur null dans le jeu d'enregistrements, pas de résultats au-delà de cette valeur null (commandé par la colonne) serait collé sur ma feuille de calcul.
Ou en pseudo-code:
où la colonne c contient une valeur null.
Donc ma solution : Supprimer les doublons et les valeurs null dans le jeu de résultats dans SQL avant de l'utiliser dans Excel.
OriginalL'auteur user3744274