Avatar billede stinejh1980 Nybegynder
25. april 2006 - 14:56 Der er 13 kommentarer og
1 løsning

check for dubeletter - opdatering

http://www.eksperten.dk/spm/32696

I dette svar får jeg besvaret mit spsm - bortset fra at det er for gammelt så man kan ikke bruge set og let mere.

Er der nogen som kan fortælle mig hvordan jeg opdatere denne kode.

Jeg har forsøgt således

Function Tjek()
strordrenr = Request("ordrenr")

OpenGemDb()

    strSQL = "SELECT * FROM Tabel WHERE ordrenr='" & strordrenr & "';"
        ObjRs = objComm.ExecuteReader()
   
    If ObjRs.????? Then
        strSQL = "INSERT INTO Tabel (ordrenr) VALUES('" & strordrenr & "');"
        Conn.Execute strSQL
       
        response.Redirect(default.html)
    Else
        LblFejl.text = " Ordrenr eksistere allerede - tryk rediger"
    End If

CloseDB()
End Function
Avatar billede stinejh1980 Nybegynder
25. april 2006 - 14:58 #1
Er der nogen som kan hjælpe mig med en bedre løsning så mine brugere ikke kan gemme med samme ordrenr.

Ordre nummeret er giver fra mit regnskabsprogram.
Avatar billede fennec Nybegynder
25. april 2006 - 14:58 #2
If ObjRs.eof Then
Avatar billede fennec Nybegynder
25. april 2006 - 15:01 #3
Hvorfor ikke bare bruge det nummer, som du har som primarykey på tabellen.
Avatar billede fennec Nybegynder
25. april 2006 - 15:03 #4
Det kan trækkes ud med denne kode hvis det ellers er sat til "autonummer" (Access)

strSQL = "INSERT INTO Tabel (ordrenr) VALUES('" & strordrenr & "');"
Conn.Execute strSQL
set rs = conn.execute("select @@IDENTITY as ID")
newId = rs("ID")
Avatar billede stinejh1980 Nybegynder
25. april 2006 - 15:10 #5
Det er fordi brugerne taster info ind fra en ordre og gemmer i en ny tabel. Så skal jeg tjekke at de ikke allerede har indtastet pågældende ordre før de gemmer.

Jeg prøvede først med
Function Tjek()
Dim wOrdrenr, wtjek

OpenGemDb()
strSQL = "SELECT OrdreNr AS wOrdrenr FROM tabel;"

    if  TxtOrdreNr.text = wOrdrenr then
        LblFejlGem.text = "Posten er allerede oprettet - vælg rediger"
    end if

ObjConn.Close()
End Function
Avatar billede fennec Nybegynder
25. april 2006 - 15:21 #6
Ok, så skal du bare bruge den kode du har vist, men med EOF:

strSQL = "SELECT * FROM Tabel WHERE ordrenr='" & strordrenr & "';"
ObjRs = objComm.ExecuteReader()

If ObjRs.eof Then
  strSQL = "INSERT INTO Tabel (ordrenr) VALUES('" & strordrenr & "');"
  Conn.Execute strSQL
  response.Redirect(default.html)
Else
  LblFejl.text = " Ordrenr eksistere allerede - tryk rediger"
End If
Avatar billede stinejh1980 Nybegynder
25. april 2006 - 15:41 #7
så får jeg denne fejl:

'eof' er ikke medlem af 'System.Data.OleDb.OleDbDataReader'

Min kode ser således ud:

Sub BtnGem_Click(sender As Object, e As EventArgs)
dim wLinieNr as integer
dim strOrdrenr (Skal jeg ikke skrive as string??)

strOrdrenr = Request("ordrenr")

strSQL = "SELECT * FROM Tabel WHERE ordrenr='" & strordrenr & "';"

ObjConn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.Mappath("db/GemDb.MDB") & ";")
ObjComm = New OleDbCommand(strTjek, objConn)
ObjConn.Open()

ObjRs = objComm.ExecuteReader()

If ObjRs.eof Then
  strSQL = "INSERT INTO Tabel (ordrenr) VALUES('" & strordrenr & "');"
  Conn.Execute strSQL
  response.Redirect(default.html)
Else
  LblFejl.text = " Ordrenr eksistere allerede - tryk rediger"
End If

ObjConn.Close()


//Tjekker om feltyerne er udfyldt
Hvis ja:

LblFejlGem.text = "Du har nu gemt"

wLinieNr = Find_Nyt_LinieNr()

OpenGemDb()

strSQL = "INSERT INTO tabel VALUES(felter til DB);"


'response.write(strConn)

objComm = New OLEDBcommand(strSQL, objConn)
objComm.ExecuteNonQuery()
objConn.Close()

End Sub
Avatar billede stinejh1980 Nybegynder
25. april 2006 - 15:45 #8
Men jeg vil gerne have koden således:

Tjekker om alle felter er fyldt ud
hvis nej:
    LblFejlGem - du skal udfylde ...........
Hvis ja:
    Tjekker om ordre nummer eksisterer
    Hvis ja:
        LblFejGem - Ordre er allered gemt - vælg rediger
    ellers
        Indsætter i Db
    end if
end if
Avatar billede fennec Nybegynder
25. april 2006 - 15:55 #9
Du har gang i en eller anden connection type som jeg ikke har set før. Dette er hvad jeg ville skrive:

Set ObjConn = Server.CreateObject("ADODB.Connection")
ObjConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.Mappath("db/GemDb.MDB") & ";"

strOrdrenr = Request("ordrenr")
strSQL = "SELECT * FROM Tabel WHERE ordrenr='" & strordrenr & "';"
set ObjRs = ObjConn.Execute(strSQL)

If ObjRs.eof Then
  strSQL = "INSERT INTO Tabel (ordrenr) VALUES('" & strordrenr & "');"
  Conn.Execute strSQL
  response.Redirect(default.html)
Else
  LblFejl.text = " Ordrenr eksistere allerede - tryk rediger"
End If
Avatar billede stinejh1980 Nybegynder
25. april 2006 - 15:57 #10
Man kan jo ikke bruge set mere
Avatar billede fennec Nybegynder
25. april 2006 - 16:01 #11
Selvfølgelig kan man det. Jeg bruger den 100 gange daglig :o)
Så er det fordi du kører en eller anden mærkelig udgave af ASP.
Avatar billede stinejh1980 Nybegynder
25. april 2006 - 16:16 #12
HI HI HI

Jeg kan da vist ikke læse mere. Jep jeg bruger ASP.NET. Har ikke lige set mig for.

Er det ok jeg opretter et spsm til dig på 30 point og flytter resten til .NET??
Avatar billede fennec Nybegynder
25. april 2006 - 16:26 #13
Helt i orden, men du behøver ikke oprette et nyt ?. Vi skal bare begge lave et svar, også acceptere du dem begge. Så bliver point delt lige mellem os (30 til hver).

.o) <-- One Eyed Jack
Avatar billede stinejh1980 Nybegynder
29. juni 2006 - 13:35 #14
Efter som arne ikke svarer får du points
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester