Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    493

    recuperare l'ultimo id inserito o il prossimo

    salve a tutti

    da giorni mi sto rompendo il capo in questo malefico problema.

    devo ricavarmi il numero che il database access assegnerà tramite contatore a chiave primaria all'id del nuovo messaggio.

    in pratica ho lo stesso problema di questo 3d
    http://forum.html.it/forum/showthrea...%40%40IDENTITY

    il fatto è che le ho provate di tutte ma non so come impostare il codice.
    per ora ho fatto così
    Codice PHP:
    <%
    Dim cn,cmnumes
    Set cn 
    Server.CreateObject("ADODB.Connection")
    cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="Server.MapPath("/mdb-database/provo.mdb")
    set rs=cn.execute ("SELECT @@IDENTITY as ident FROM messaggi")
    numes=rs("ident"'ho provato anche numes=rs(0) 
    %> 
    ma numes mi restitruisce sempre 0 invece che (attualmente) 5

    sapete come si fa?

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Il nuovo non lo puoi sapere... perché nel frattempo potrebbe essere già stato eliminato...
    Poi recuperare solo l'ultimo che è stato inserito.

    Roby

  3. #3
    @@IDENTITY funziona SOLO *immediatamente dopo* una INSERT, altrimenti che senso avrebbe?

    se vuoi farlo in un momento diverso puoi usare MAX(ID), ma NON SEMPRE funziona...


  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    la query SELECT @@IDENTITY la devi fare subito dopo insert cioè
    cn.Execute("INSERT INTO messaggi.....)
    set rs=cn.execute ("SELECT @@IDENTITY as ident FROM messaggi")
    numes=rs("ident") 'ho provato anche numes=rs(0)
    altrimenti non funziona
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    493
    no no avete ragionissima infatti mi serve dopo una insert

    ho fatto una insert con dreamweaver

    come faccio a richiamare il valore?

    ho provato numes=MM_editCmd.CommandText ("ident")
    e numes=MM_editCmd("ident")

    ma dà errore

    questo è il codice della pagina asp


    Codice PHP:
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>

    <%
    Dim MM_editAction
    MM_editAction 
    CStr(Request.ServerVariables("SCRIPT_NAME"))
    If (
    Request.QueryString <> ""Then
      MM_editAction 
    MM_editAction "?" Server.HTMLEncode(Request.QueryString)
    End If

    ' boolean to abort record edit
    Dim MM_abortEdit
    MM_abortEdit = false
    %>
    <%
    If (CStr(Request("MM_insert")) = "form1") Then
      If (Not MM_abortEdit) Then
        ' 
    execute the insert
        Dim MM_editCmd
    numes

        Set MM_editCmd 
    Server.CreateObject ("ADODB.Command")
        
    MM_editCmd.ActiveConnection MM_provo_STRING
        MM_editCmd
    .CommandText "INSERT INTO messaggi (mess) VALUES (?)" 
        
    MM_editCmd.CommandText "SELECT @@IDENTITY as ident FROM messaggi" 
        
    numes=MM_editCmd.ActiveConnection("ident"
        
    MM_editCmd.Prepared true
        MM_editCmd
    .Parameters.Append MM_editCmd.CreateParameter("param1"2021255Request.Form("mess")) ' adVarWChar
        MM_editCmd.Execute
        MM_editCmd.ActiveConnection.Close

        ' 
    append the query string to the redirect URL
        Dim MM_editRedirectUrl
        MM_editRedirectUrl 
    "?n="&numes
        
    If (Request.QueryString <> ""Then
          
    If (InStr(1MM_editRedirectUrl"?"vbTextCompare) = 0Then
            MM_editRedirectUrl 
    MM_editRedirectUrl "?" Request.QueryString
          
    Else
            
    MM_editRedirectUrl MM_editRedirectUrl "&" Request.QueryString
          End 
    If
        
    End If
        
    Response.Redirect(MM_editRedirectUrl)
      
    End If
    End If
    %>
    <!
    DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <
    html xmlns="http://www.w3.org/1999/xhtml">
    <
    head>
    <
    meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <
    title>a</title>
    </
    head>

    <
    body>
    <
    form action="<%=MM_editAction%>" method="post" name="form1" id="form1">
      <
    table align="center">
        <
    tr valign="baseline">
          <
    td nowrap="nowrap" align="right">Mess:</td>
          <
    td><input type="text" name="mess" value="" size="32" /></td>
        </
    tr>
        <
    tr valign="baseline">
          <
    td nowrap="nowrap" align="right"></td>
          <
    td><input type="submit" value="Inserisci record" /></td>
        </
    tr>
      </
    table>
      <
    input type="hidden" name="MM_insert" value="form1" />
    </
    form>


    </
    p>
    numes= <%=numes%>
    </
    body>
    </
    html

  6. #6
    si recupera come una qualunquissima select...

  7. #7
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    E comunque devi prima eseguire la INSERT e poi fare la SELECT

    Roby

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    493
    Originariamente inviato da optime
    si recupera come una qualunquissima select...
    ovvero?

  9. #9
    Originariamente inviato da tretretre
    ovvero?
    non hai MAI fatto una SELECT? dai, un po' di buona volontà...

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    493
    l'ho fatta si ma con DW mi ci perdo!!
    cmq ci sono riuscito...grazie a voi ovviamente!

    Codice PHP:
        Dim MM_editCmdnumes,

        
    Set MM_editCmd Server.CreateObject ("ADODB.Command")
        
    MM_editCmd.ActiveConnection MM_provo_STRING
        MM_editCmd
    .CommandText "INSERT INTO messaggi (mess) VALUES (?)" 
        
    MM_editCmd.Prepared true
        MM_editCmd
    .Parameters.Append MM_editCmd.CreateParameter("param1"2021255Request.Form("mess")) ' adVarWChar
        MM_editCmd.Execute
      [B][COLOR=red]  MM_editCmd.CommandText = "SELECT @@IDENTITY as ident FROM messaggi" 
    Set numes = MM_editCmd.Execute
        numes=numes("ident")[/COLOR] [/B] 
        MM_editCmd.ActiveConnection.Close 
    mi dà esattamente l'ultimo id anche se ci sono record eliminati prima.

    grazieee!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.