Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [DELPHI] problemi su ciclo

    Ciao a tutti,

    io ho un problema all'apparenza banale da cui non riesco ad uscire!

    Io ho una query su cui ciclo, estraggo dei dati e dovrei accodare tutti i dati estratti in una variabile... questo il codice:


    SQLQueryPrefix:='select id_fl from WORK_ORDER where id_fl = '+ StructForm_ElTree_TreeView.Selected.ColumnText[3] + ' or id_fl= ' + id_parent + '';
    BQuery := objUtils.GetRecordSet(SQLQueryPrefix);

    CodePrefix:='';
    while not BQuery.Eof do
    begin
    CodePrefix := CodePrefix+','+String(objUtils.GetValueFromField(S QLQueryPrefix, 'ID_FL'));
    BQuery.Next;
    end;


    alla fine la vairabile CodePrefix contiene i 3 cicli effettuati (numero corretto) ma con il primo valore pescato ripetuto tre volte!

    la query eseguita sul DB dà come risultato A,B,C

    ma io nella variabile mi ritrovo A,A,A

    dove sbaglio?

    grazie!

  2. #2
    ho semplificato un pò il codice.....giusto per capire meglio....


    SQLQuery := 'select id_fl from FL where CODE_PREFIX like ''' + CodePrefix + '%'' ';
    AQuery := objUtils.GetRecordSet(SQLQuery);
    with AQuery do
    begin
    if not IsEmpty then
    begin
    AQuery.Open;
    while not AQuery.Eof do
    begin
    id_fl := objUtils.GetValueFromField(SQLQuery, 'id_fl');
    SQLQueryOdL := 'select * from WORK_ORDER where id_fl = '+ id_fl + '';
    BQuery := objUtils.GetRecordSet(SQLQueryOdL);

    AQuery.Next;
    end;


    ma anche così non va....

  3. #3
    metti un breakpoint al ciclo while e vedi cosa ti va a scrivere volta per volta su CodePrefix (F8 per avanzare) probabilmente se c'è un errore lo capirai vedendo i valori che assegna ad ogni ciclo. ciao!

  4. #4
    guarda..sono 2 gg che debuggo!

    non mi da nessun errore...

    il valore che associa al code_prefix di volta in volta è sempre il primo....come se il cursore non passasse al record successivo!

  5. #5
    mmm... nn capisco sinceramente dovrebbe funz anche come hai fatto tu... cmq prova così, piuttosto che get.....:
    i:=0;
    while i<>eof do
    begin
    CodePrefix:=CodePrefix+query.fields[i].asstring;
    query.next;
    inc(i);
    end;

  6. #6
    scusami ma in questa tabella esistono doppioni?

  7. #7
    no no nessun doppione.....ora provo il tuo codice...

  8. #8
    scusami ho sbagliato devi aggiun una variabile

    i:=0;
    j:=0;//se nella query il campo che vuoi è nella prima colonna
    while i<>eof do
    begin
    CodePrefix:=CodePrefix+query.fields[j].asstring;
    query.next;
    inc(i);
    end;

  9. #9
    cmq guarda...

    avevo provato anche questo codice...


    begin
    test := 0;
    AQuery := objUtils.GetRecordSet(SQLQuery);
    while not AQuery.Eof do
    begin
    if test = 0 then
    id_fl1 := String(objUtils.GetValueFromField(SQLQuery, 'ID_FL'));

    if test = 1 then
    id_fl2 := String(objUtils.GetValueFromField(SQLQuery, 'ID_FL'));

    if test = 2 then
    id_fl3 := String(objUtils.GetValueFromField(SQLQuery, 'ID_FL'));

    AQuery.Next;
    inc(test);
    end;

    ma niente....il valore è sempre il primo...

  10. #10
    guarda il codice sembra giusto... che nn ci sia qualc che nn va nella query ma è qualkcoisa del genere:
    QryVar.SQL.Clear;
    QryVar.SQL.Add('SELECT * FROM pages_layout WHERE ' +
    'pages_layout.baseline = 2 AND ' +
    'pages_layout.id = 3');
    QryVar.Open;???

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.