2009-10-18 5 views
1

Utilisation d'Access 2003Comment supprimer les lignes vides?

Tableau 1

ID Name Value 

001 Raja 100 
002 Ramu 200 


004 Raqu 500 



008 Ravi 250 

...

Ici, je veux supprimer les lignes vides dans ma table?

Delete from table1 ...? 

Sortie

ID Nom attendu Valeur

001 Raja 100 
002 Ramu 200 
004 Raqu 500 
008 Ravi 250 

...,

Besoin d'aide de requêtes.

+0

Ceci n'a pas de clé, donc n'est pas une table (ce qui est la moitié du problème). – onedaywhen

Répondre

5
Delete from table1 
where ID=' ' 
and Name=' ' 
and Value=' ' 

ou

Delete from table1 
where ID is null 
and Name is null 
and Value is null 
+0

Attention aux espaces blancs, par exemple. onglets ou retours chariot. Cela peut provoquer l'échec de sql parce que le champ n'est pas NULL et pas un seul espace. Vous pouvez utiliser certaines fonctions intégrées dans ms-access, par ex. isnumeric() pour affiner les critères de suppression. – heferav

+0

IsNumeric()? Comment cela va-t-il aider? –

1

Si vos champs alow chaînes de longueur nulle et peuvent avoir un espace blanc en eux, voici une solution:

DELETE FROM table1 
    WHERE Len(Trim(ID & ''))=0 
    AND Len(Trim(Name & ''))=0 
    AND Len(Trim(Value & ''))=0; 

Je suppose que vous écrivez votre SQL à exécuter dans Access lui-même, comme Trim() et Len() sont des fonctions Access/VBA (les deux sont fournis par le service d'expression Access en utilisant VBA, donc cela ne fonctionnerait pas via ODBC ou OLEDB). Maintenant, cela ignore d'autres types de problèmes dans ces champs, tels que les tabulations ou les caractères Cr/Lf. Si ce qui précède ne supprime pas toutes les lignes, alors vous devrez fouiller dans les champs pour voir quels sont les caractères réels, puis les nettoyer. J'espère aussi que les noms de vos champs sont faux, car NAME et VALUE sont des mots réservés Access et doivent être évités dans les noms d'objets à n'importe quel niveau dans Access/Jet/ACE.

0

Je recommande une solution plus universelle:

DELETE tblYourTable.*, tblYourTable.[OneFieldThatIsAlwaysEmpty] 
FROM tNewTable 
WHERE tNewTable.[OneFieldThatIsAlwaysEmpty] Is Null; 

Cela nécessite, bien sûr que vous avez un champ dans votre table qui est vraiment vide (null)

L'avantage est que vous n'avez pas avoir à définir tous les champs uniques dans votre tableau. Dans les réponses ci-dessus, ce n'est pas un problème, car la table d'exemple n'a que deux ou trois champs. Mais habituellement les tables sont plus grandes.

Notez qu'une requête Delete ne fonctionnera pas lorsque votre table n'est pas une table dans Access mais une "table liée" qui prend des données, par ex. d'Excel. Dans ce cas, vous devez d'abord transférer vos données dans une table True Access.

(Cela a été testé dans Access 2010)

Questions connexes