J'ai cette colonne problème est dans MSSQL Ces colonnes ont été définies comme Bigint. et je les ai changés en Varcharne dans MSSQL à l'aide de Studio de gestion. P> La seule raison pour laquelle je veux le changer de Int à Varcharne / chaîne de sorte que je puisse avoir "0" au début. Comme dans INT, je ne peux pas mettre "0" au début. P> Je pensais que je devais aussi changer de jeu de données afin que j'ai également mis à jour le jeu de données dans WPF.
Dans les ensembles de données modifiées la même colonne pour la même table de ContactNO code> et d'autres personnes comme suit ce e-g
faxno code> etc.
System.int64 code> à
System.string code> p>
5 Réponses :
à partir de Après avoir changé dataSet1.xsd code> Image que vous avez téléchargée,
maxlength code> Propriété de
ContactNO code> est
-1 code>. p>
contactNO code> à partir de
System.int64 code> à
System.string code> Vous devez également modifier
contact code> " Code> Maxlength code> à partir de
-1 code> à
30 code>. p>
Déjà fait ça .. mais ce n'est pas utile :( a toujours la même erreur.
Vous avez utilisé LINQ vers des classes SQL? À droite?
Je soupçonne que vous avez un champ dans AgentAccount que vous n'avez pas mis à jour pour être une chaîne, et c'est toujours un int. En tant que tel, la distribution échoue. Sélectionnez AgentAccount dans le code, appuyez sur F12 pour passer à la définition, puis mettez à jour le champ pour être une chaîne. Alors tout devrait fonctionner. P>
Étant donné que vous avez apporté des modifications dans la base de données sous-jacente, tout ce que vous avez à faire dans votre programme est régénérer votre code de données Tapé. Cela devrait résoudre tous ces problèmes. P>
Essayez ceci: p>
Fermer toutes les fenêtres et ouvrir Répétez le processus pour plus de jeux de données dactylographiés que vous pourriez avoir. (Je vois un nommé rmsdatabase2dataset. XSD dans la capture d'écran). P>
Enfin, sauvegardez tout et faites une reconstruction complète du projet. P> DataSet1.xsd code> (concepteur). Faites quelque chose sur la surface designer qui le force à régénérer le code. La plupart des temps déplacent même l'une des tables un peu devraient faire le tour; Mais si cela ne fait pas que cliquez sur le bouton droit de la souris et ajoutez un adaptateur factice, enregistrez-le puis supprimez-le et enregistrez à nouveau. (L'intention est de rendre la régénération du code généré automatiquement). P>
Si vous souhaitez afficher des zéros de premier plan uniquement dans UI, vous pouvez utiliser le format de chaîne pour les liaisons ou vous pouvez également utiliser des convertisseurs. Mais si vous devez enregistrer les valeurs avec des zéros de premier plan, dans la base de données, il est préférable de modifier le type à Varchar. P>
Deuxièmement, utilisez-vous des ensembles de données ou LINQ vers des classes SQL? Le code de l'échantillon a la fois qu'il semble, je suppose que vous obtenez les données à l'aide d'adaptateurs dans DataclassesDataContext.Agentaccount Property. P>
Assurez-vous que la requête renvoie des données sinon vous ne pourrez pas obtenir l'exception, car il n'y aura pas d'objet à couler. P>
Tout en faisant les mêmes étapes dans un jeu de données simple, tout fonctionne bien, coz lorsque vous modifiez le fichier de données.Contactno et enregistrez le fichier, il réfléchit dans tous les endroits pertinents. P>
Après avoir traversé votre code de manière approfondie, ce qui n'est pas montré ici, il y avait deux domaines problématiques. p>
One était des annotations de données et l'autre était toujours en train de jeter sur Dongint dans les xaml.cs p>
Lorsque vous modifiez des types de données comme celle-ci, il peut être très fidèle, et nous devons passer par chaque fichier du code où ce champ est manipulé. p>
Je suis heureux que vous avez résolu votre problème, nous comprenons tous la frustration de frapper un mur de briques :) p>
Il est possible que cela soit causé par un paramètre de MSSERVER: P>
Allez à Options et UNICK STRUT> Empêchez les modifications qui nécessitent des récréations de table. Comme vous semblez peut-être changer la table dans certaines parties de votre projet, mais les modifications ne sont pas enregistrées dans la base de données. Donc, il y aura une exception moulée, car elle recherchera un Bigint et non un Varchar. p>
Les changements gagnent Save Sir. Une fois que le changement est implémenté que cette erreur de moulage spécifiée.
Monsieur, mon programme fonctionne avec Bigint, mais lorsque je passe à Nvarchars, mon programme commence à donner une erreur. Cela signifie donc que le type de données de colonne modifie. J'ai déjà ce que j'ai vérifié "empêcher les changements d'économie",
quelque chose comme ca. J'ai également changé de valeur dans DataSet et et l'agentsAccount Classe avait des attributs privés, alors j'ai aussi changé de long à la chaîne. Privé long _Contactno; code>
Merci beaucoup de problème résolu.
Essayez de supprimer le tableau modifié à partir du DataSet1.xsd et de l'ajoutez-l'ajouter.
En côté, quel est le point de "d'un à Blah sélectionner un" pourquoi pas seulement écrire "bla", c'est la même chose.
Êtes-vous sûr de vouloir changer la base de données pour pouvoir afficher les numéros avec un 0 précédent? On dirait que c'est mieux fait dans l'interface graphique lorsque vous montrez les valeurs? Rappelez-vous simplement que ce sera une douleur à faire des choses comme trier / filtrer en fonction de ces chiffres si vous les transformez en chaînes.
Il devrait totalement être fait par le format de la chaîne au lieu de formater la base de données
@ user3690202 Il n'ya pas beaucoup de filtrage et de tri, uniquement / filtrant surtout avec des boîtes de CompteID ou de combo, etc. C'est une petite application.
@Majkelodev désolé, je n'ai pas eu ton point? Vous voulez dire que je ne devrais pas mettre à jour le type de données dans la base de données ??
Son point est le même que le mien - changer la base de données pour ajouter un 0 au début n'est pas une bonne chose à faire. En fait, c'est une chose très stupide à faire.
@ user3690202 Que faire dans cette situation alors ?? Dans MySQL et PHP, c'était la chose la plus la plus simple à faire. Mais maintenant, alors que j'ai déménagé sur .net, même changer de jeu de données est si difficile. XD Cependant, il existe un code de branche de colonne pour le compte bancaire. Il n'y a aucun moyen de savoir combien de zéros auront au début. Je veux dire en contact non je peux concaténer 0 au début à montrer à droite. Mais comment concaténer les zéros avec un code de branche si je n'ai aucune idée de la quantité de zéros existant ou même si elles existent ou non.
Par exemple, si vous souhaitez avoir 6 chiffres de longue chaîne de INT, vous pouvez faire comme suit: VAR TEST = FINSINT.TOSTRING ("000000");
@Oluwafemi a supprimé et recréé dataset AgentAccounts tablek, toujours la même erreur ..
@Majkelodev Oui, mais comment savoir si l'utilisateur est entré dans un code Brach avec 2 zéros et en DB ces zéros ont été supprimés. Comme il n'ya aucun moyen de savoir combien de chiffres y a-t-il. Aucune spécification ??
Quel type de source est votre
cmdakent code> attendre et quel type est
question code>? et avez-vous mis à jour votre
Classe de modèle d'agentsAccounts code>?
OK, si vous devez être capable de différencier entre 001234 et 0001234, vous avez raison, vous devez modifier le type à une chaîne, car ce n'est plus vraiment un chiffre.
Mettez un point d'arrêt sur cmB.itemsSource = Requête et dites-le de quelle requête est à ce moment-là. Dites-nous quels agentsAccounts sont, mettez-nous aussi du code ci-dessus. Ensuite, nous pouvons vous aider.
@Oluwafemi
cmdAgent code> est le nom d'une combinaison, je ne sais pas quel type il s'agit ou il devrait être ?. Il y a un
var code> utilisé avec la requête, comme vous pouvez le voir dans la photo ci-dessus, pas sûr de son type également. Qu'est-ce que vous entendez par agencAccounts Model Class ?? Il n'y a pas de classe modèle pour agentsAccounts, je pense ..
Je voulais dire
cmdagent.itemsSource code> et sur
dc.agentaccounts code> Définissez votre curseur sur
AgentAccounts Code> et appuyez sur
F12 code> pour aller à la définition et mettez à jour le
Classe Code> Survolez sur
Query code> Mode de débogage pour voir le type.
@Oluwafemi j'ai survolé la requête et j'ai mis à jour la capture d'écran .. Plus ajout également la capture d'écran d'agentsAccounts lorsqu'il est appuyé sur
F12 code>
Faites la même chose pour agencAccount. Il devrait y avoir des propriétés à mettre à jour.
Pas sûr monsieur ?? Faites de la même chose pour agencAccount?
Ceci.getable () Code> Définit le curseur sur
AgentAccount code> et
F12 code>
Parfois, nettoyez et reconstruisez des erreurs de réparation
et +1 à @oluwafemi pour supprimer tout contenu DBML et réadmettre les tables. pas seulement une table.
@SizzlingCode: Veuillez ignorer quelqu'un qui vous dit de conserver un numéro de fax comme
Bigint code>. Les numéros de téléphone ne sont pas des "chiffres" car vous ne faites jamais d'opérations mathématiques sur eux ou de les trier. Ce sont des chaînes et ce champ n'aurait jamais dû être un
Bigint code> en premier lieu. Donc, vous avez raison de le changer. Un type numérique pour les numéros de téléphone ne peut pas seulement ne pas stocker de zéros de premier plan, mais il ne peut pas également stocker des extensions ni des numéros internationaux tels que +1 12 1231 1231 B>. En outre, votre dernière image avec
gettable code> est inutile car ce n'est pas une définition. Quelle est la définition de la catégorie code> AgentAccount code>?