2008-11-24 12 views
4

Je reçois une erreur vba 3271; Valeur de propriété incorrecte Cela se produit lorsque vous essayez d'ajouter un champ Mémo dans un querydef. Des idées sur la façon de contourner cela?Microsoft Access Ajout Querydef pour le champ Mémo

Exemple:

public sub TestMemoField 
    Dim qdf As QueryDef 
    Set qdf = CurrentDb.QueryDefs("AppendRecord") 
    qdf.Parameters("@SomeBigText").value = string(1000,"A") 
    qdf.Execute 
end sub 

Merci à l'avance.

Répondre

4

Apparemment, vous ne pouvez pas avoir un paramètre supérieur à 255 caractères (http://support.microsoft.com/kb/275116).

Il est possible d'utiliser un jeu d'enregistrements ou d'utiliser:

qdf.SQL="INSERT INTO Sometable (SomeField) Values('" & String(1000, "A") & "')" 
-1

Um, qu'est-ce que vous essayez de faire? Pourquoi utilisez-vous des paramètres? Pourquoi ne pas simplement exécuter SQL dans le code, comme ceci:

Public Sub TestMemoField 
    Dim strSQL As String 

    strSQL = "UPDATE MyTable SET MyField='" & String(1000,"A") & "'" 
    CurrentDb.Execute strSQL, dbFailOnError 
End Sub 

Je ne pas utiliser les paramètres dans les requêtes enregistrées sauf quand je dois tirer une valeur d'un contrôle sur un formulaire à utiliser dans une requête enregistrée . Maintenant, ma réponse ne sera peut-être pas bonne si votre back-end n'est pas Jet ou s'il y a quelque chose sur les critères et la structure de votre requête sauvegardée qui rend important l'utilisation d'une requête sauvegardée au lieu d'utiliser simplement la fonction -le- voler SQL. Mais vous n'avez fourni pratiquement aucune information (y compris en omettant le SQL du querydef que vous exécutez), il est donc plutôt difficile de fournir une réponse utile.

+0

L'une des raisons d'utiliser une requête Ajout stockée est que vous utilisez les autorisations au niveau utilisateur d'Access et que vous devez utiliser l'option WITH WITH OWNERACCESS OPTION pour l'exécuter en tant qu'utilisateur différent. – DGM

+0

Eh? Vous pouvez toujours l'exécuter en tant qu'utilisateur et fournir des critères lors de l'exécution. Il n'y a aucune raison de définir le paramètre pour permettre à un utilisateur de sélectionner un sous-ensemble de données. Maintenant, si les valeurs à ajouter à l'exécution sont ce que vous définissez en tant que paramètres, c'est différent, mais vous pouvez facilement contourner cela en collectant les données à partir des contrôles d'un formulaire et en définissant les contrôles de formulaire en tant que paramètres. Mais pour les requêtes SELECT, je vois très peu de raisons de définir des paramètres dans un QueryDef sauvegardé. –

Questions connexes