|
| Iniciado por jmsouchez, 19,ago. 2020 11:16 - 2 respuestas |
| |
| | | |
|
| |
| Publicado el 19,agosto 2020 - 11:16 |
Bonjour,
J'interroge une base EBP sous SQL SERVER. En lecture, tout va bien, les requêtes SELECT fonctionnent parfaitement. En écriture, je cherche à créer une ligne de commande mais je suis confronté au problème de l'identifiant unique de la ligne. Je pensais qu'il était affecté automatiquement mais à priori, non. Une idée, s'il vous plait ou un retour d'expérience ?
LocInsEBP = "INSERT INTO SaleDocumentLine (Id, DocumentId, LineType, LineOrder, Description, DescriptionClear, ItemId"", IsReferencedItem, Quantity, RealQuantity, UnitId, StoreHouseId"", IsPrintable, QuantityDecimalNumber, PricesDecimalNumber, PurchasePrice, CostPrice)" VALUES (0, '"+ReqLecEBP.DocumentId+"', "+ReqLecEBP.LineType+", "+LocNumLigne+", '"+ReqLecEBP.Description+"', '"+ReqLecEBP.DescriptionClear+"', '"+ReqLecEBP.ItemId"', '"+ReqLecEBP.IsReferencedItem+"', "+Table_LigneDetail.COL_NB_METRE+", "+Table_LigneDetail.COL_NB_METRE+", '"+ReqLecEBP.UnitId+"', '"+ReqLecEBP.StoreHouseId+"', "+ReqLecEBP.IsPrintable+", "+ReqLecEBP.QuantityDecimalNumber+", "+ReqLecEBP.PricesDecimalNumber+", "+ReqLecEBP.PurchasePrice+", "+ReqLecEBP.CostPrice+")" SI PAS HExécuteRequêteSQL(ReqInsEBP,"MaConnexionSQL",hRequêteSansCorrection,LocInsEBP) ALORS info("Erreur exécution requête ReqInsEBP : " + HErreurInfo() + RC + SQL.MesErreur + RC + LocInsEBP) FIN
Question : comment affecter l'ID de la ligne de commande en création ? Merci pour vos réponses. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 953 mensajes |
|
| Publicado el 19,agosto 2020 - 11:52 |
bonjour Jean-Marc,
il faudrait regarder sur des documents existants, voir les valeurs, mais j'ai l'impression que se sont des guid ( résultat de la fonction DonneGuid() ) à contrôler aussi la description de la table SaleDocumentLine sous SQL Server... quel est le type de la colonne Id
voir aussi, si vous ne spécifiez pas la valeur de Id dans votre requête, si SQL Server ne va pas justement lui attribuer une valeur. Là vous indiquez explicitement la valeur 0, faite déjà un test en enlevant Id de votre requête , un peu comme ceci :
LocInsEBP = "INSERT INTO SaleDocumentLine (DocumentId, LineType, LineOrder, Description, DescriptionClear, ItemId"", IsReferencedItem, Quantity, RealQuantity, UnitId, StoreHouseId"", IsPrintable, QuantityDecimalNumber, PricesDecimalNumber, PurchasePrice, CostPrice)" VALUES ('"+ReqLecEBP.DocumentId+"', "+ReqLecEBP.LineType+", "+LocNumLigne+", '"+ReqLecEBP.Description+"', '"+ReqLecEBP.DescriptionClear+"', '"+ReqLecEBP.ItemId"', '"+ReqLecEBP.IsReferencedItem+"', "+Table_LigneDetail.COL_NB_METRE+", "+Table_LigneDetail.COL_NB_METRE+", '"+ReqLecEBP.UnitId+"', '"+ReqLecEBP.StoreHouseId+"', "+ReqLecEBP.IsPrintable+", "+ReqLecEBP.QuantityDecimalNumber+", "+ReqLecEBP.PricesDecimalNumber+", "+ReqLecEBP.PurchasePrice+", "+ReqLecEBP.CostPrice+")" SI PAS HExécuteRequêteSQL(ReqInsEBP,"MaConnexionSQL",hRequêteSansCorrection,LocInsEBP) ALORS info("Erreur exécution requête ReqInsEBP : " + HErreurInfo() + RC + SQL.MesErreur + RC + LocInsEBP) FIN |
| |
| |
| | | |
|
| | |
| |
| Publicado el 19,agosto 2020 - 13:58 |
Bonjour Christophe,
Oui, j'ai déjà essayé cela et voici les messages d'erreur correspondant : - Id = 0 : Conflit de types d'opérandes<ESP>: int est incompatible avec uniqueidentifier - Id = NULL : Impossible d'insérer la valeur NULL dans la colonne 'Id', table 'CDO_0895452f-b7c1-4c00-a316-c6a6d0ea4bf4.dbo.SaleDocumentLine'. Cette colonne n'accepte pas les valeurs NULL. - Id non mis dans la requête : Impossible d'insérer la valeur NULL dans la colonne 'Id', table 'CDO_0895452f-b7c1-4c00-a316-c6a6d0ea4bf4.dbo.SaleDocumentLine'. Cette colonne n'accepte pas les valeurs NULL.
Dans SQL Server, le champ ID de la table SaleDocumentLine est configuré comme suit : Type de données = uniqueidentifier Clé primaire = True Est calculé = False Longueur = 16 La valeur de l'Id correspond à "262A3BB6-3061-44E9-90F2-FFFCD2E9C4FE"
Après un ultime essai, il faut affecter la valeur "NEWID()" et l'insertion fonctionne !
Merci pour ton aide. |
| |
| |
| | | |
|
| | | | |
| | |
|