2012-09-13 4 views
0

Encore une fois Je suis coincé sur la même base de données. Cette fois, je crée une requête de mise à jour qui supprime 1 de chaque partie d'une table lorsqu'un bouton est enfoncé. Mais lorsqu'une partie est déjà à 0, elle passe à -1. Comment puis-je empêcher cela de se produire?Code SQL dans une requête de mise à jour

je SQL pour y parvenir,

UPDATE [ASM-00065 WIP] 
SET [ASM-00065 WIP].[Current Stock] = [ASM-00065 WIP]![Current Stock]-1; 

Répondre

4

je pourrais être la compréhension de votre question correctement, mais voulez-vous mettre à jour toutes les lignes de cette table pour cette colonne, et soustraire 1 d'eux? Dans ce cas, vous pouvez utiliser:

UPDATE [ASM-00065 WIP] 
SET [ASM-00065 WIP].[Current Stock] = [ASM-00065 WIP]![Current Stock]-1 
WHERE [ASM-00065 WIP].[Current Stock] > 0 
+0

brillant merci –

+0

Est-ce que je peux créer une autre partie qui me permette d'enlever deux choses d'une table mais qui en retire 1 de tout le reste? –

+0

Vous pouvez utiliser une syntaxe similaire à celle fournie par bluefeet: UPDATE [ASM-00065 WIP] SET [Stock actuel] = IIF (Condition de soustraction 2 ET [Current Stock]> 1, [Current Stock] - 2, IIF ([Stock actuel]> 0, [Stock actuel] -1, [Stock actuel])); – tranceporter

0

Vous pouvez ajouter une condition pour filtrer les lignes que vous mettrez à jour:

UPDATE [ASM-00065 WIP] SET [ASM-00065 WIP].[Current Stock] = [ASM-00065 WIP]![Current Stock]-1 WHERE [ASM-00065 WIP]![Current Stock] > 0; 
1

est MS-Access vous pouvez utiliser IIF()

UPDATE [ASM-00065 WIP] 
SET [Current Stock] 
    = IIF([Current Stock]>0, [Current Stock]-1, [Current Stock]); 
+0

Y at-il un moyen que je peux créer le code SQL ou même utiliser VBA pour informer l'utilisateur que certains des enregistrements dans le table = 0 quand ils appuient sur le bouton. Je veux le créer afin qu'ils ne puissent pas supprimer les données de la table si un ou plusieurs enregistrements = 0 –

+1

@MichaelMcWilliams vous devez utiliser VBA pour leur notifier l'événement 'OnClick' qu'il existe des enregistrements qui répondent à votre condition. Vous pouvez utiliser un 'MsgBox' pour afficher la note. – Taryn

+1

Je vais avoir un coup de couteau ici en utilisant VBA. Si j'ai des problèmes, postez-les ici –