2013-02-14 3 views
3

J'obtenu une base de données ADO avec une table nommée t_codemeaning, ci-dessous sont la structure de la table:Comment ajouter plusieurs lignes d'un composant TMemo à une base de données MS Access?

t_codemeaning 
    codemenaing_code AS Text 
    codemenaing_title AS Text 
    codemenaing_description AS Text 

ajouter toutes table dans mon ADOQuery1.

je clique sur un bouton avec ce script Delphi:

ADOQuery1.edit; 
ADOQuery1codemeaning_title.value := edit1.text; 
ADOQuery1codemeaning_description.value := memo1.lines.text; 
ADOQuery1.post; 

Lorsque j'ajoute la seule ligne dans la note, alors tout va bien.

Mais quand j'ajoute beaucoup de plusieurs lignes de texte dans memo1, il me montre une erreur:

opération en plusieurs étapes a généré des erreurs. Vérifiez chaque valeur de statut.

Comment résoudre ce problème?


Mon dernier progrès, je fait une nouvelle chaîne aValue variables et ajouter le memo1.lines.text en elle:

aValue:=memo1.lines.text; 
    aValue := StringReplace(StringReplace(aValue, '#10', '', [rfReplaceAll]), '#13', '', [rfReplaceAll]); 

Et je changer le script pour ADOQuery1codemeaning_description.value .... en :

ADOQuery1codemeaning_description.value := aValue; 

encore obtenu la même erreur ...

+3

Ceci est causé par les fins de ligne "CRLF" dans votre code. Lorsque vous affectez les lignes, il est codé en une chaîne. Vous devez échapper aux fins de ligne au format attendu par la machine ADO. En d'autres termes, la chaîne de mémo multiligne transmet des caractères non valides à l'ADO. –

+0

est-ce que "CRLF" fait référence à # 13 # 10? –

+0

J'ajoute le script: –

Répondre

9

Définissez votre description le champ Memo dans la base de données (au lieu de Text), puis supprimez tous vos champs persistants de ADOQuery1 et ajoutez-les de nouveau pour que le type ADOQuery1codemeaning_description soit .

Pas besoin d'échapper ou de remplacer CRLF.

Questions connexes