Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Affinare la query SQL

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585

    Affinare la query SQL

    Ciao a Tutti,

    ho la mia pagina asp a cui do' in pasto il seguente codice che fa la seguente azione:

    aggiunge un record nuovo nella tabella t_mrg, e tutto funziona bene:

    Dim cmd, cn, sql

    Set cn = Server.CreateObject("ADODB.Connection")
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:\In etpub...fpdb\db1.mdb;"
    '
    sql = "INSERT INTO t_mrg " & _
    "SELECT t_proj_2012.*, t_riexam.* FROM t_proj_2012, t_riexam " & _
    "WHERE (((t_proj_2012.Numero) Not In (SELECT t_mrg.Numero FROM t_mrg)) AND ((t_proj_2012.Qualita)='Si'));"
    '
    Set cmd=CreateObject("adodb.command")
    With cmd
    Set .ActiveConnection = cn
    .CommandType=1 'adCmdText
    .CommandText = sql
    .Execute , , 128 '128=adExecuteNoRecords
    End With
    cn.Close
    Set cn=nothing


    Questo risultato mi soddisfa in parte perche' il record nuovo creato in tabella t_mrg,
    presenta un campo "Ore" con il valore ereditato dal campo "Ore" della tabella t_proj_2012,
    ma presenta anche un campo "Costi_interni" VUOTO, ereditato da t_riexam,
    che vorrei avesse lo stesso valore di "Ore" ereditato dalla tabella t_proj_2012.

    E' possibile in qualche modo fare cio', affinando la query ??? (tipo inserendo una clausola SET ... ma non so in che modo ...)

    Grazie mille in anticipo !!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585
    Sto provando una soluzione alternativa ...

    al codice postato,

    faccio un' aggiunta e dico: se arrivo all' ultimo record della tabella t_mrg definisco dei campi uguali, cioe' con lo stesso valore:

    ho provato cosi' ma non succede niente ...

    Set cn = Server.CreateObject("ADODB.Connection")
    cn.ConnectionString = "DSN=2_riwo.dsn"
    cn.Open
    '
    sql = "INSERT INTO t_mrg " & _
    "SELECT t_proj_2012.*, t_riexam.* FROM t_proj_2012, t_riexam " & _
    "WHERE (((t_proj_2012.Numero) Not In (SELECT t_mrg.Numero FROM t_mrg)) AND ((t_proj_2012.Qualita)='Si'));"
    '
    Set cmd=CreateObject("adodb.command")
    With cmd
    Set .ActiveConnection = cn
    .CommandType=1 'adCmdText
    .CommandText = sql
    .Execute , , 128 '128=adExecuteNoRecords
    End With
    '
    Set objRS2 = Server.CreateObject("ADODB.Recordset")
    sql2 = "select * from t_mrg"
    objRS2.Open sql2, cn
    if objRS2.eof then
    set objRS2("Costi_interni") = objRS2("Ore")
    end if
    '
    objRS2.Close
    Set objRS2 = Nothing
    cn.Close
    Set cn=nothing

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585
    Ho provato anche cosi' ma mi dice .. Operation not allowed ...


    Dim objConn2, objRS2, sql2
    '
    '
    Set objConn2 = Server.CreateObject("ADODB.Connection")
    objConn2.ConnectionString = "DSN=2_riwo.dsn"
    objConn2.Open
    Set objRS2 = Server.CreateObject("ADODB.Recordset")
    sql2 = "select top 1 * from t_mrg order by Numero Desc"
    objRS2.Open sql2, objConn2, 3, 3
    objRS2("Cost_external_firm") = objRS2("Ore")

    '
    objRS2.Close
    Set objRS2 = Nothing
    objConn2.Close
    Set objConn2=nothing

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585
    Ho provato a fare una verifica ed ottengo almeno la lettura del valore in db in questo modo:

    <%@ Language=VBScript %>
    <%
    Option Explicit

    dim strConn, conn, rs, i
    strConn="Provider = Microsoft.Jet.OLEDB.4.0; Data Source ="&_
    Server.MapPath("..\fpdb\ri_wkp2.mdb")&"; Persist Security Info = False"

    Set conn=Server.CreateObject("ADODB.Connection")
    conn.Open strConn

    set rs = Server.CreateObject("ADODB.Recordset")
    rs.open "select top 1 * from t_mrg order by t_mrg.Numero desc", conn, 1, 3

    for i=1 to 1
    if rs.eof<>true and rs.bof<>true then
    response.write "ciao" & rs("Ore")
    rs.movenext
    end if

    next

    rs.close
    set rs=Nothing
    conn.Close
    set conn=Nothing
    %>


    Pero', anche cosi', la mia pagina ASP continua a ripetermi il valore, andando in loop ...

    ma come mai ??????????????????

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585
    Risolto:

    <%@ Language=VBScript %>
    <%
    Option Explicit


    Dim objConn2, objRS2, i


    Set objConn2 = Server.CreateObject("ADODB.Connection")
    objConn2.ConnectionString = "DSN=2_riwo.dsn"
    objConn2.Open

    set objRS2 = Server.CreateObject("ADODB.Recordset")
    objRS2.open "select top 1 * from t_mrg order by t_mrg.Numero desc", objConn2, 1, 3

    for i=1 to 1
    if objRS2.eof<>true and objRS2.bof<>true then
    objRS2("Cost_internal") = objRS2("Ore")
    objRS2("Cost_external_firm") = objRS2("Costi_Contr")
    objRS2.movenext
    end if

    next

    objRS2.close
    set objRS2=Nothing
    objConn2.Close
    set objConn2=Nothing
    %>

  6. #6
    poi mi spiegherai la chicca del "for i=1 to 1...next"

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585
    Optime, Grazie !!

    Ho tolto il ciclo for che in questo caso e' inutile ....


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.