I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Det kan de vel også hvis din app håndterer exception fornuftigt.
Og den situation skal du jo håndtere alligevel (ihvertfald hvis du skal kunne klare mere end en samtidig bruger - fordi du kan riskere at 2 begge laver SELECT inden de begge forsøger at lave INSERT
Brugerne sidder med ordren foran sig på papir og taster den ind, så de vil aldrig rette i den samme ordre samtidig.
Det er bare for at fortælle brugerne at de har oprettet ordren i mit system engang så det ikke bliver dobbeltarbejde eller for at fortælle dem at de har trykket på knappen 2 gange.
Det ideelle ville være denne funktion på gem knappen:
Tjekker om alle felter er fyldt ud hvis nej: LblFejlGem - du skal udfylde ........... Hvis ja: Tjekker om ordre nummer eksisterer Hvis ja: LblFejlGem - Ordre er allerede gemt ellers Indsætter i Db end if end if
try 'insert statements catch ex as exception lblfejlgem.text= "Der er opstået en fejl: "+ ex.ToString() finally 'if "der ikke er en exception" then objComm = New OLEDBcommand(strSQL, objConn) objComm.ExecuteNonQuery() objConn.Close() 'end if end try
Nu fik jeg det til at virke: try 'insert statements catch ex as exception objComm = New OLEDBcommand(strSQL, objConn) objComm.ExecuteNonQuery() catch ex as exception LblFejlGem.text = ex.ToString() Finally objConn.Close() end try
Men brugeren forstår nok ikke meget af: System.Data.OleDb.OleDbException: De ønskede ændringer af tabellen blev ikke gennemført, fordi de ville give dublerede værdier i indekset, den primære nøgle eller relationen. Rediger dataene i det eller de felter, der indeholder dublerede data, fjern indekset, eller omdefiner indekset, så dublerede indtastninger tillades, og forsøg igen. at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr) at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) at System.Data.OleDb.OleDbCommand.ExecuteNonQuery() at ASP.tabel_aspx.BtnGem_Click(Object sender, EventArgs e) in U:\IT\Projekt program\Program\side.aspx:line 756
Jeg vil gerne fange hvilken type exception det er - for hvis jeg bare skriver: "Ordren er allerede oprettet" så kommer den jo også frem selvom det ikke er det der er fejlen.
Jeg løste den selv med: try //insert statements objComm = New OLEDBcommand(strSQL, objConn) objComm.ExecuteNonQuery() catch exc as system.exception If instr(1, exc.message, "duplicate data") then LblFejlGem.text="Du har allerede gemt denne ordre - Tryk rediger for at rette ordren" else LblFejlGem.text= "Du har fået en fejl: <br /> <br />" + exc.ToString() end if Finally objConn.Close() end try
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.