Bonjour tout le monde, je ne sais pas si je poste vraiment dans la bonne section mais je me lance.
En faite j'aurai aimé que ma base de données me retourne un booléen qui m'indiquerai si le code rentrée existe déjà ou non. J'ai donc ceci:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[proc_CLIENTLoadByMnemoTest]
(
@CLI_MNEMONIQUE char(32)
)
AS
BEGIN
SET NOCOUNT ON
DECLARE @Err int
SELECT
[CLI_NO],
[CLI_SCA_NUM],
[CLI_CODE],
[CLI_NOM],
[CLI_MNEMONIQUE],
[CLI_DTCREATION],
FROM [CLIENT]
WHERE
([CLI_MNEMONIQUE] = @CLI_MNEMONIQUE)
ORDER BY
([CLI_MNEMONIQUE])
SET @Err = @@Error
RETURN @Err
END
Mais avant d'envoyer ma chaine car forcement elle existe déjà j'aurai voulu rajouter un contrôle de comparaison ou une condition tel que, si la chaine rentrée n'est pas nouvelle, on ne fais pas le traitement, dans ce cas on en revient à mon code sous vb:
Protected Sub BtnTesterMnemonique_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnTesterMnemonique.Click
Dim IsUniqueMne As Boolean
Dim strMsg As String = String.Empty
Dim color As Drawing.Color = Drawing.Color.Green
IsUniqueMne = _FoncChiri.IsUniqueMnemoClientTest(txtMnemo.Text)
If IsUniqueMne Then
strMsg = "Code mnémonique disponible"
Else
strMsg = "Code mnémonique utilisé"
color = Drawing.Color.Red
End If
With lblMnemoniqueDisponible
.ForeColor = color
.Text = strMsg
End With
End Sub
Si je place unfiltre sous SQL ce serait aberrant mais je ne vois pas comment dans mon code je pourrai tester la nouvelle valeur sans annoncé qu'elle est déjà utilisé si on a rien touché.
En faite tout cela se situe sur une page de modification, c'est un traitement que l'utilisateur fait sur une page déjà existante.
En appel intermédiaire j'utilise:
Public Function IsUniqueMnemoClientTest(ByVal strMnemo As String) As Boolean
Dim _NomClient As New CLIENT()
Dim isClient As Boolean
_NomClient.ConnectionString = strChaine
isClient = _NomClient.LoadClientByMnemoTest(strMnemo)
If isClient Then
Return False
Else
Return True
End If
End Functionet
Public Function LoadClientByMnemoTest(ByVal strCode As String) As Boolean
Dim param As ListDictionary = Nothing
param = New ListDictionary()
param.Add("@CLI_MNEMONIQUE", strCode)
Return Me.LoadFromSql("proc_CLIENTLoadByMnemoTest", param, Data.CommandType.StoredProcedure)
End FunctionAu final pour etre plus clair:
1 on crée une page client
2 on peut modifier les données de cette page
3 sur cette seconde page on peut tester la variable mnémonique
4 en testant on a soit code déjà utilisé ou code disponible mais il devrai être disponible si on ne change pas le code qui nous est présenté lors du chargement de la page, or en testant vu qu'il existe déjà il va retourner code utilisé
Merci de m'avoir lu, si vous avez des idées n'hésitez pas.