Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 37
  1. #1

    Ciclo while che mangia l'ultimo record

    Ciao a tutti ragazzi ho due cicli in sequenza molto semplici che operano in questo modo...


    Select * from tabella A

    While recordset.eof <> true
    insert in tabella B
    recordset.movenext
    wend


    Select * from tabella B

    While recordset2.eof <> true
    insert in tabella C
    recordset2.movenext
    wend


    Il problema è questo... ipotizzando che il primo recordset mi dia 10 record come risultato me ne vengono inseriti 9 nella tabella B ed estratti quei 9 dal secondo recordset me ne vengono inseriti, al ciclo successivo, 8 nella tabella C.

    In pratica mi viene mangiato sempre l'ultimo record.
    Come è possibile una cosa così strana?

  2. #2
    so che è lo stesso, ma se fai

    recordset.movefirst
    do
    insert in tabella B
    recordset.movenext
    if recordset.eof then exit do
    loop

    cambia qualcosa?

  3. #3
    Il problema non è il primo che viene saltato... ma sistematicamente viene scartato l'ultimo in ordine di tabella... ed essendo dentro a un while come può uscire dal ciclo per eof se in realtà c'è ancora un record che non viene considerato?

  4. #4

  5. #5
    Si e il risultato è il medesimo...

  6. #6
    e se al posto della insert metti una response.write, ne stampa 9 o 10?

  7. #7
    Ho un response write per ogni select e ogni insert e ne stampa a video 9 su 9 regolarmente inseriti ma in realtà mancherebbe il decimo che non viene nè inserito nè ovviamente stampato a video... Sembra che il ciclo esca... "un giro prima"...

  8. #8
    la cosa è strana... posta la select

  9. #9
    Set castingS3 = Server.CreateObject("ADODB.Recordset")
    castingS3.ActiveConnection = MM_GMConnect_STRING
    castingS3.Source = "SELECT * FROM CAST_SEARCH WHERE CAST_S_STEP = 2 ORDER BY CAST_S_ID_ANAG ASC"
    castingS3.CursorType = 0
    castingS3.CursorLocation = 2
    castingS3.LockType = 1
    castingS3.Open()


    while castingS3.eof <> true

    set insS3 = Server.CreateObject("ADODB.Command")
    insS3.ActiveConnection = MM_GMConnect_STRING
    insS3.CommandText = "INSERT INTO CAST_SEARCH (CAST_S_ID_ANAG, CAST_S_STEP) VALUES (" & castingS3.fields.item("CAST_S_ID_ANAG").value & ", 3)"
    response.write "

    no search: " & insS3.CommandText
    insS3.CommandType = 1
    insS3.CommandTimeout = 0
    insS3.Prepared = true
    insS3.Execute()

    castingS3.movenext

    wend

  10. #10
    Ho effettuato alcuni test e ho riscontrato queste cose...

    Dopo aver commentato praticamente ogni passo del mio codice mi ritrovo con questa situazione.

    Recordset A (select * from tabella A) = record trovati 91
    Reinserisco in tabella B i 91 record.

    Recordset B (select * from tabella B) = record trovati 89!!!!
    Questo controllo lo ho fatto con un ciclo + variabile contatore subito dopo l'apertura del recordset senza altri processi in mezzo... Come mai da una select * vengono evitati 2 record di cui uno è l'ultimo in lista e l'altro non lo ho ancora identificato...

    Inserisco gli 89 trovati nella tabella C

    Recordset C (select * from tabella C) = record trovati 88!!!
    Mi ha perso nuovamente l'ultimo record per strada quando è sottointeso che nel database sono presenti... in entrambe i casi....

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.