2009-10-24 6 views
1

J'ai la même copie d'accès s'exécutant dans 3 villes en ce moment. Ils fonctionnent parfaitement bien. Ils sont 99% les mêmes avec une différence mineure. Chacun d'entre eux a deux vues qui utilisent une connexion ODBC différente à différentes villes DB (toutes ces bases de données sont SQL Server 2005). Les vues agissent comme source de données pour quelques requêtes très simples.Recordset renvoie le nombre de lignes correct mais avec tous les champs vides

Cependant, alors que j'ai essayé de faire une nouvelle copie pour une nouvelle ville, j'ai trouvé que l'une des requêtes internes simples renvoie le bon nombre de lignes mais toutes les données sont vides tandis que l'autre fonctionne correctement.

J'ai vérifié les données de ces deux vues, les données sont correctes.

Le seul problème causant sont comme

Select * from View_Top where Name = "ABC" 

lorsque les enregistrements en retour, même rs! Nom me donne une chaîne vide.

S'il vous plaît aider

+0

Veuillez publier la définition de VIEW_TOP et toutes les vues dont elle dépend. Vous utilisez probablement un OUTER JOIN et en tirant les colonnes du mauvais côté du JOIN. –

+1

Bien que ce ne soit probablement pas la cause de votre problème, NAME est un mot réservé dans Access/Jet/ACE et c'est une bonne idée d'éviter les mots réservés. Des variantes de la version d'Access installées pourraient conduire à des résultats différents de ce type de problème sur différents PC. Mais il s'agit plutôt d'une recommandation générale plutôt que d'une cause probable du problème. –

+0

À partir de cet emplacement, pouvez-vous exécuter la même requête à partir de MS SQL Management Studio et obtenir des résultats? – JeffO

Répondre

0

Eh bien la requête ressemble un peu de mal à moi, essayez d'utiliser "au lieu de" pour délimiter votre chaîne ABC ...

0

Sans la définition de VIEW_TOP il est difficile de dire où votre erreur est, mais si vous obtenez des lignes mais que les colonnes sont NULL, j'imagine que VIEW_TOP (ou quelque chose qui en dépend) inclut un OUTER JOIN et que vous tirez les colonnes du mauvais côté du JOIN

0

définition view_top

" Nom, compte, AccountCode, montant, date .... »

Déclarations: Choisir

Select Name, Account, AccountCode, Amount, Date 
From View_Top Where Name = 'xxx' 

Je trouve que si je laisse de côté le montant, tout fonctionne.

Bien que je ne comprends toujours pas pourquoi.

0
SELECT 
    acc.FIRM, 
    acc.OFFICE, 
    acc.ACCOUNT, 
    a.CONV_CODE, 
    a.OTHER_AMT AS AMOUNT, 
    a.TRANS_DATE, 
    a.DESCRIPTN, 
    a.JRNAL_TYPE 
FROM AccTrans AS a LEFT OUTER JOIN ACC AS acc ON a.ACCNT_CODE = acc.ACCNT_CODE 
WHERE 
    (acc.SUN_DB = 'IF1') AND 
    (ANAL_T0 <> '') AND 
    (a.TRANS_DATE < '20091022') AND 
    (a.JRNAL_TYPE = 'MATCH'); 

Ceci est la définition de la vue. En effet, dans Access je suis capable d'afficher le résultat de cette requête, il a des données. C'est pourquoi je sais que le jeu d'enregistrements renvoie le bon nombre de lignes (en comptant la boucle dans le code). désolé pour mes erreurs, j'utiliser le compte dans la clause where, les instructions select devraient être comme

select Firm, Office, Account, Trans_Date.... from 
view_top 
where account = 'ABC' 

la requête renvoie le bon nombre de ligne, mais toutes les données de ligne (même le champ de compte) sont une chaîne vide.

puis j'ai découvert ce qui cause vraiment le problème est le champ AMOUNT, si je omets le montant, tout fonctionne. mais je ne comprends pas pourquoi.