Συμβουλή συστήματοςΑυτό το άρθρο ισχύει για διαφορετικό λειτουργικό σύστημα από αυτό που χρησιμοποιείτε. Το περιεχόμενο του άρθρου που ενδέχεται να μην σας αφορά έχει απενεργοποιηθεί.
Εάν προσπαθήσετε να ορίσετε με προγραμματισμό την τιμή κειμένου από έναν κόμβο XML στο Microsoft Office InfoPath 2007 ή στο Microsoft Office InfoPath 2003, ενδέχεται να εμφανιστεί ένα μήνυμα σφάλματος.
Στο InfoPath 2007, ενδέχεται να λάβετε ένα μήνυμα λάθους παρόμοιο με το ακόλουθο:
Το InfoPath δεν είναι δυνατό να ολοκληρώσει αυτήν την ενέργεια, εξαιτίας ενός σφάλματος στον κώδικα της φόρμας.
Στο InfoPath 2003, ενδέχεται να λάβετε ένα μήνυμα λάθους παρόμοιο με το ακόλουθο μήνυμα λάθους:
Παρουσιάστηκε ένα σφάλμα χρόνου εκτέλεσης. Θέλετε να εντοπίσετε σφάλματα;
Παρουσιάστηκε το παρακάτω σφάλμα: '#PCDATA' είναι nil περιεχόμενο.
Αυτό το σφάλμα δημιουργείται, όταν προσπαθείτε να ορίσετε με προγραμματισμό την τιμή κειμένου από έναν κόμβο XML που έχει τοxsi: nil = "true"Χαρακτηριστικό. Όταν αυτή η ιδιότητα ορίζεται στην τιμήTrue, οποιαδήποτε τιμή κειμένου του κόμβου XML παράγει XML που δεν είναι έγκυρη. Επομένως, το Microsoft Office InfoPath δεν αποδέχεται την τιμή και λαμβάνετε το μήνυμα λάθους.
Για να επιλύσετε αυτό το ζήτημα, προσθέστε κώδικα που ελέγχει τοxsi: nil = "true"χαρακτηριστικό και, στη συνέχεια, καταργεί το χαρακτηριστικό (Εάν υπάρχει το χαρακτηριστικό) κατά το χρόνο εκτέλεσης, πριν από τον κωδικό ορίζει την τιμή κειμένου του κόμβου.
Παράδειγμα κώδικα που μπορεί να προκαλέσει αυτό το σφάλμα
Για παράδειγμα, αυτό το σφάλμα μπορεί να προκύψει όταν χρησιμοποιείτε κώδικα που μοιάζει με τον ακόλουθο κώδικα.
Το InfoPath 2007
//Create a Navigator object to access the main DOM.
XPathNavigator xnDoc = this.MainDataSource.CreateNavigator();
//Create a Navigator object for the field that you want to set.
XPathNavigator xnmyDate = xnDoc.SelectSingleNode("/my:myFields/my:myDate", this.NamespaceManager);
//Set the value of the myDate field.
xnmyDate.SetValue("2006-10-12");
//Clean up.
xnDoc = null;
xnmyDate = null;
InfoPath 2003
{
// Receive a reference to the element to be filled.
var objDataElement = XDocument.DOM.selectSingleNode("/my:myFields/my:field1");
//Set the value of the element.
objDataElement.text = "10.0";
}
Παράδειγμα κώδικα που μπορεί να αποφύγετε αυτό το σφάλμα
Το InfoPath 2007
Για να αποφύγετε αυτό το σφάλμα, μπορείτε να χρησιμοποιήσετε το ακόλουθο παράδειγμα κώδικα.
//Create a Navigator object to access the main DOM.
XPathNavigator xnDoc = this.MainDataSource.CreateNavigator();
//Create a Navigator object for the field that you want to set.
XPathNavigator xnmyDate = xnDoc.SelectSingleNode("/my:myFields/my:myDate", this.NamespaceManager);
//Remove the "nil" attribute.
if (xnmyDate.MoveToAttribute("nil", "http://www.w3.org/2001/XMLSchema-instance"))
xnmyDate.DeleteSelf();
//Set the value of the myDate field.
xnmyDate.SetValue("2006-10-12");
//Clean up.
xnDoc = null;
xnmyDate = null;
InfoPath 2003
{
// Receive a reference to the element to be filled.
var objDataElement = XDocument.DOM.selectSingleNode("/my:myFields/my:field1");
//Determine whether the xsi:nil attribute is set for this
//element. If so, remove the xsi:nil attributes so that
//the value can be set.
if (objDataElement.getAttribute("xsi:nil"))
objDataElement.removeAttribute("xsi:nil");
//Set the value of the element.
objDataElement.text = "10.0";
}
Για την αναπαραγωγή αυτής της συμπεριφοράς, πρέπει να δημιουργήσετε τη φόρμα και προσθέστε τον κώδικα στο παράδειγμα στη φόρμα. Στη συνέχεια, πρέπει να ελέγξετε τη φόρμα. Για να δημιουργήσετε τη φόρμα, ακολουθήστε τα εξής βήματα:
Δημιουργία φόρμας
Εκκίνηση του Microsoft Office InfoPath.
Σχεδίαση μιας νέας κενής φόρμας.
Στο παράθυρο εργασιών, κάντε κλικ στο κουμπί"Φόρμες του Office" (Office Forms). Βεβαιωθείτε ότιΑυτόματη δημιουργία αρχείου προέλευσης δεδομένωντο πλαίσιο ελέγχου είναι επιλεγμένο.
Προσθήκη ενόςΠλαίσιο κειμένουΈλεγχος στη φόρμα και στη συνέχεια προσθέστε έναΚουμπίελέγχου στη φόρμα.
Στο παράθυρο εργασιών, κάντε κλικ στο κουμπίΑρχείο προέλευσης δεδομένων.
ΣτοΑρχείο προέλευσης δεδομένωνσε λίστα, κάντε δεξιό κλικΠεδίο1 (Field1), και στη συνέχεια κάντε κλικ στο κουμπίΙδιότητες (Properties).
Για ναΙδιότητες πεδίου ή ομάδαςεμφανίζεται το παράθυρο διαλόγου.
Ορισμός τουΤύπος δεδομένωνη ιδιότητα του πεδίου σεΔεκαδικός (διπλό), και στη συνέχεια κάντε κλικ στο κουμπίOk. Για να αποθηκεύσετε το πρότυπο.
Προσθήκη δέσμης ενεργειών για τηνΜε κλικ (OnClick)συμβάν του κουμπιού ως εξής:
Κάντε δεξιό κλικ στο κουμπί και στη συνέχεια κάντε κλικ στο κουμπίΙδιότητες κουμπιού.
Για ναΙδιότητες κουμπιούεμφανίζεται το παράθυρο διαλόγου.
Στο InfoPath 2007, κάντε κλικ στο κουμπίΕπεξεργασία κώδικα φόρμας. Ξεκινά το Microsoft Visual Studio Tools for Applications.
Στο InfoPath 2003, κάντε κλικ στοΠρόγραμμα επεξεργασίας δέσμης ενεργειών της Microsoftτο κουμπί.
Εμφανίζεται το πρόγραμμα επεξεργασίας δέσμης ενεργειών της Microsoft.
ΣτοΜε κλικ (OnClick)συμβάν του κουμπιού, εισαγάγετε το ακόλουθο παράδειγμα κώδικα.
Το InfoPath 2007
//Create a Navigator object to access the main DOM.
XPathNavigator xnDoc = this.MainDataSource.CreateNavigator();
//Create a Navigator object for the field that you want to set.
XPathNavigator xnmyDate = xnDoc.SelectSingleNode("/my:myFields/my:myDate", this.NamespaceManager);
//Set the value of the myDate field.
xnmyDate.SetValue("2006-10-12");
//Clean up.
xnDoc = null;
xnmyDate = null;
InfoPath 2003
{
// Receive a reference to the element to be filled.
var objDataElement = XDocument.DOM.selectSingleNode("/my:myFields/my:field1");
//Set the value of the element.
objDataElement.text = "10.0";
}
Αποθηκεύστε τη δέσμη ενεργειών σας και στη συνέχεια, κλείστε το πρόγραμμα επεξεργασίας δέσμης ενεργειών της Microsoft.
Στο InfoPath 2007, κάντε κλικ στο κουμπίΑποθήκευση (Save)Στο διακομιστήFILEΜενού (Menu).
Στο InfoPath 2003, κάντε κλικ στο κουμπίΑποθήκευση (Save)Στο διακομιστήFILEμενού και στη συνέχεια κάντε κλικΑποθήκευση (Save)ΣτοMicrosoft Office InfoPathπαράθυρο διαλόγου.
ΣτοΑποθήκευση ωςπαράθυρο διαλόγου, πληκτρολογήστεXmlNode, και στη συνέχεια κάντε κλικ στο κουμπίΑποθήκευση (Save).
Κάντε κλικFILE, και στη συνέχεια κάντε κλικ στο κουμπίClose (Κλείσιμο).
Ελέγξτε τη φόρμα
Εκκίνηση του InfoPath.
Στο InfoPath 2007, κάντε διπλό κλικXmlNodeunderΠρόσφατα χρησιμοποιημένα φορμών.
Στο InfoPath 2003, κάντε κλικ στο κουμπίXmlNodeunderΣυμπλήρωση φόρμας.
Κάντε κλικ στο κουμπί.
Εμφανίζεται το μήνυμα λάθους που αναφέρεται στην ενότητα "Συμπτώματα" (Symptoms).
Στο InfoPath 2007, κάντε κλικ στο κουμπίOkΓια να κλείσετε το μήνυμα λάθους.
Στο InfoPath 2003, κάντε κλικ στο κουμπίΟΧΙ,, και στη συνέχεια κάντε κλικ στο κουμπίOkΓια να κλείσετε το μήνυμα λάθους.
Ανοίξτε τη φόρμα σε λειτουργία σχεδίασης.
Τροποποίηση τουΜε κλικ (OnClick)συμβάν του κουμπιού. Για να το κάνετε αυτό, ακολουθήστε τα εξής βήματα: (Use the tools in the Windows Recovery Environment to repair Windows Vista. To do this, follow these steps:):
Κάντε δεξιό κλικ στο κουμπί και στη συνέχεια κάντε κλικ στο κουμπίΙδιότητες κουμπιού.
Για ναΙδιότητες κουμπιούεμφανίζεται το παράθυρο διαλόγου.
Κάντε κλικ στην καρτέλαΠρόγραμμα επεξεργασίας δέσμης ενεργειών της Microsoftτο κουμπί.
Εμφανίζεται το πρόγραμμα επεξεργασίας δέσμης ενεργειών της Microsoft.
Τροποποιήστε τον κώδικα για τοΜε κλικ (OnClick)συμβάν του κουμπιού ως εξής.
Το InfoPath 2007
//Create a Navigator object to access the main DOM
XPathNavigator xnDoc = this.MainDataSource.CreateNavigator();
//Create a Navigator object for the field we want to set
XPathNavigator xnmyDate = xnDoc.SelectSingleNode("/my:myFields/my:myDate", this.NamespaceManager);
//Set the value of the myDate field
xnmyDate.SetValue("2006-10-12");
//Clean up
xnDoc = null;
xnmyDate = null;
InfoPath 2003
{
// Receive a reference to the element to be filled.
var objDataElement = XDocument.DOM.selectSingleNode("/my:myFields/my:field1");
//Determine whether the xsi:nil attribute is set for this
//element. If so, remove the xsi:nil attributes so that
//the value can be set.
if (objDataElement.getAttribute("xsi:nil"))
objDataElement.removeAttribute("xsi:nil");
//Set the value of the element.
objDataElement.text = "10.0";
}
Δείτε σε προεπισκόπηση τη φόρμα ξανά και στη συνέχεια κάντε κλικ στο κουμπί.
Εμφανίζεται μήνυμα λάθους επιστρέφεται. Για ναΠλαίσιο κειμένουτο στοιχείο ελέγχου εμφανίζει μια τιμή10.0.
Για πρόσθετες πληροφορίες σχετικά με τον τρόπο εντοπισμού σφαλμάτων δέσμης ενεργειών, κάντε κλικ στον αριθμό του άρθρου παρακάτω για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:
827002
(http://support.microsoft.com/kb/827002/
)
Τρόπος εντοπισμού σφαλμάτων σε μια δέσμη ενεργειών σε μια φόρμα του Microsoft Office InfoPath 2003
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:826998
(http://support.microsoft.com/kb/826998/en-us/
)
Πόση προσπάθεια καταβάλλατε για να χρησιμοποιήσετε αυτό το άρθρο;
Πολύ λίγη
Λίγη
Μέτρια
Μεγάλη
Πολύ μεγάλη
Πείτε μας για ποιον λόγο και με ποιον τρόπο θα μπορούσαμε να βελτιώσουμε αυτές τις πληροφορίες
Σας ευχαριστούμε! Τα σχόλιά σας θα μας βοηθήσουν να βελτιώσουμε το περιεχόμενο υποστήριξης. Για περισσότερες επιλογές βοήθειας, επισκεφτείτε την αρχική σελίδα της Βοήθειας και υποστήριξης.