Visualizzazione dei risultati da 1 a 4 su 4

Discussione: chiave primaria ID

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395

    chiave primaria ID

    buonasera, ho un problema con il passaggio di alcuni valori nel database.
    Ho una tabella con vari campi, il primo è ID formato testo. sembrava funzionare tutto bene ma mi sono accorto che in alcuni casi non mi fa alcune funzioni matematiche.
    Mi spiego meglio
    Impostando I0416MG come ID il tutto funziona perfettamente. impostandolo a I0417MG non mi esegue le funzioni matematiche. il fatto strano che su una tabella da quasi 1000 ID finora ne ho già incontrati 2 che non funzionano. Cambiando SOLO l'ID (e non gli altri campi del record) il tutto funziona.

    Praticamente alcuni ID non funzionano

    Qualcuno sa dirmi perchè???

    Grazie

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Scusa non capisco il nesso tra l'ID chiave primaria formato testo e le funzioni matematiche di cui parli.

    Roby

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395
    Allora proviamo a spiegare meglio.

    Ho una tabella giocatori, dove ho vari campi e il primo (univoco) è codicegiocatore (è l'ID che facevo riferimento prima)

    Attraverso una pagina inserisco dei risultati che poi vanno a finire in 2 altre tabelle, e fin qui tutto bene. Attraverso questa pagina mi faccio fare delle funzioni matematiche.

    La prima:
    codice:
    	SQL = "select Punteggi.CodiceGiocatore, punteggi.girifatti, punteggi.colpi from Punteggi "
    	SQL = SQL & "where CodiceGara = " & Request.QueryString("Cod")
    	SQL = SQL & "  and CodiceGiocatore = CodiceGiocatore "
    
    	Set scostam = Server.CreateObject("ADODB.Recordset")
    	scostam.open SQL,Conn,3,1
    	if not scostam.EOF then
    		while not scostam.EOF
    
    totg = scostam("girifatti")
    If totg > 0 then
    	If sspecialita = 1 OR sspecialita = 2 OR sspecialita = 3 Then
    		if totg = 3 Then
    		campopar = cint(spar * totg)
    		else
    		campopar = spar * totg
    		end if
    	end if
    	If sspecialita = 0 Then
    		if totg = 2 Then
    		campopar = cint(spar * totg)
    		end if
    		if totg = 4 Then
    		campopar = spar * totg
    		end if
    	End if	
    diff = Scostam("colpi") - campopar
    scostamento = diff / totg
    scostamento = formatnumber((scostamento),2)
    scostamento = replace(scostamento,  ",", ".")
    Else
    scostamento = -36
    End If
    
    			SQL= ""
    			SQL = SQL & "update punteggi set "
    			SQL = SQL & " scost = " & scostamento
    			SQL = SQL & " where CodiceGara = " & Request.QueryString("Cod")
    			SQL = SQL & " and CodiceGiocatore = '" & Scostam("CodiceGiocatore") & "'"
    
    'Response.Write "prima sql...: " & SQL & "
    "
    'Response.flush
    
    			set rs=Conn.execute (SQL)
    
    	If sTipogara = "C" Then
    			SQLC= ""
    			SQLC = SQLC & "update punteggiC set "
    			SQLC = SQLC & " scost = " & scostamento
    			SQLC = SQLC & " where CodiceGara = " & Request.QueryString("Cod")
    			SQLC = SQLC & " and CodiceGiocatore = '" & Scostam("CodiceGiocatore") & "'"
    
    'Response.Write "prima sql...: " & SQL & "
    "
    'Response.flush
    
    			set rs=Conn.execute (SQLC)
    	End If
    
    			Scostam.MoveNext
    		wend			
    	end if
    E fin qui funziona tutto.

    Poi sempre la stessa pagina esegue un'altra funzione:
    codice:
    	SQL = "select tabellapar.*, Punteggi.*, Giocatori.NomeGiocatore, Giocatori.Sesso from giocatori INNER JOIN (tabellapar RIGHT JOIN punteggi ON tabellapar.scost = punteggi.scost) ON Giocatori.CodiceGiocatore = Punteggi.CodiceGiocatore  WHERE CodiceGara = " & Request.QueryString("Cod") & ""
    
    'Response.Write "terza sql...: " & SQL & "
    "
    'Response.flush
    
    	Set par = Server.CreateObject("ADODB.Recordset")
    	par.open SQL,Conn,3,1
    
    	if not par.EOF then
    		while not par.EOF
    
    if sSpecialita = 1 AND sPar >= 33 Then
    
    if par("punteggi.scost") >= -11 and par("punteggi.scost") <= 18 then
    Spunti = par("minigolf") + 1
    Spuntisoc = par("minigolf")
    Snome = par("nomegiocatore")
    sPunti = Replace(sPunti, ",", ".")
    sPuntisoc = Replace(sPuntisoc, ",", ".")
    'Response.Write "giocatore: " & snome & " sPunti...: " & sPunti & "
    "
    'Response.flush
    else
    sPunti = 0
    Spuntisoc = 0
    End if
    
    			SQL2 = ""
    			SQL2 = SQL2 & "update punteggi set punteggio = " & Spunti
    			SQL2 = SQL2 & ", punteggiosocieta = " & Spuntisoc
    			SQL2 = SQL2 & " where CodiceGiocatore = '" & par("CodiceGiocatore")
    			SQL2 = SQL2 & "'   and CodiceGara = " & Request.QueryString("Cod")
    
    'Response.Write "quarta sql...: " & SQL2 & "
    "
    'Response.flush
    
    			set rs=Conn.execute (SQL2)
    
    	If sTipogara = "C" Then
    			SQL2C = ""
    			SQL2C = SQL2C & "update punteggiC set punteggioC = " & Spunti
    			SQL2C = SQL2C & " where CodiceGiocatore = '" & par("CodiceGiocatore")
    			SQL2C = SQL2C & "'   and CodiceGara = " & Request.QueryString("Cod")
    
    'Response.Write "quarta sql...: " & SQL2 & "
    "
    'Response.flush
    
    			set rs=Conn.execute (SQL2C)
    	End If
    
    End if
    ed è in questo pezzo di codice che il programma non sempre funziona perchè inserisce "sPunti" = 0 anche quando "par("punteggi.scost")2 si trova tra -11 e 18.

    tra le varie prove sono riuscito a capire che cambiando il codicegiocatore di quei pochi giocatori che non funzionano il programma funziona regolarmente.

    Spero di essermi spiegato alla meglio.

    Grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395
    up

    grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.