[ Bojan Kopanja @ 02.09.2006. 10:46 ] @
Imam jedan upit za koji mi nikako nije jasno zasto ne radi... Radi se o obicnom INSERT INTO upitu. Evo pogledajte pa recite ako neko zna :

Code:
     
    try
      with adoqUlaz do   
      begin
        Close;
        SQL.Clear;
        SQL.Add('INSERT INTO ULAZ(SIFRA, B_PRIJEMA, MAGACIN, B_DOST, S_DOB, KOL, N_CENA, P_CENA, M_CENA, D_PRIJ, R_BROJ, J_ZAV_TR, J_OS_TR, J_RAB_D, J_MAR_D, T_POR, S_PORE, J_POR, PL_POR_R, TR_PAK, VRS_DOK, VALUTA, R+M, J_MERE, NAZIV)');
        SQL.Add('VALUES(:SIFRA, :B_PRIJEMA, :MAGACIN, :B_DOST, :S_DOB, :KOL, :N_CENA, :P_CENA, :M_CENA, :D_PRIJ, :R_BROJ, :J_ZAV_TR, :J_OS_TR, :J_RAB_D, :J_MAR_D, :T_POR, :S_PORE, :J_POR, :PL_POR_R, :TR_PAK, :VRS_DOK, :VALUTA, :R+M, :J_MERE, :NAZIV)');

        Parameters.ParamByName('SIFRA').Value:= ListView1.Items[I].SubItems[0];
        Parameters.ParamByName('B_PRIJEMA').Value:= Edit2.Text;
        Parameters.ParamByName('MAGACIN').Value:= Edit1.Text;
        Parameters.ParamByName('B_DOST').Value:= Edit3.Text;
        Parameters.ParamByName('S_DOB').Value:= IntToStr(SifraPartnera);
        Parameters.ParamByName('KOL').Value:= ListView1.Items[I].SubItems[3];
        Parameters.ParamByName('N_CENA').Value:= ListView1.Items[I].SubItems[4];
        Parameters.ParamByName('P_CENA').Value:= ListView1.Items[I].SubItems[5];
        Parameters.ParamByName('M_CENA').Value:= ListView1.Items[I].SubItems[7];
        Parameters.ParamByName('D_PRIJ').Value:= DateToStr(StrToDate(Edit4.Text));
        Parameters.ParamByName('R_BROJ').Value:= IntToStr(I + 1);
        Parameters.ParamByName('J_ZAV_TR').Value:= ListView1.Items[I].SubItems[8];
        Parameters.ParamByName('J_OS_TR').Value:= ListView1.Items[I].SubItems[9];
        Parameters.ParamByName('J_RAB_D').Value:= ListView1.Items[I].SubItems[10];
        Parameters.ParamByName('J_MAR_D').Value:= ListView1.Items[I].SubItems[11];
        Parameters.ParamByName('T_POR').Value:= ListView1.Items[I].SubItems[12];
        Parameters.ParamByName('S_PORE').Value:= ListView1.Items[I].SubItems[13];
        Parameters.ParamByName('J_POR').Value:= ListView1.Items[I].SubItems[14];
        Parameters.ParamByName('PL_POR_R').Value:= ListView1.Items[I].SubItems[15];
        Parameters.ParamByName('TR_PAK').Value:= ListView1.Items[I].SubItems[16];
        Parameters.ParamByName('VRS_DOK').Value:= ListView1.Items[I].SubItems[17];
        Parameters.ParamByName('VALUTA').Value:= ListView1.Items[I].SubItems[18];
        Parameters.ParamByName('R+M').Value:= ListView1.Items[I].SubItems[6];
        Parameters.ParamByName('J_MERE').Value:= ListView1.Items[I].SubItems[2];
        Parameters.ParamByName('NAZIV').Value:= ListView1.Items[I].SubItems[1];
        ExecSQL;
      end;
    except
      ShowMessage('Poruka o gresci');
    end;


a kada ovako ispisem isti taj kod onda sve radi kako treba i to sa istim podacima:
Code:
    
    try

      with adoqUlaz do
      begin
        Close;
        SQL.Clear;
        SQL.Add('select * from ULAZ where MAGACIN = '+QuotedStr(Edit1.Text)+' and B_PRIJEMA = '+Edit2.Text+' and VRS_DOK = '+QuotedStr(VrstaDokumenta)+';');
        Open;


        Insert;
        FieldByName('SIFRA').Value:= ListView1.Items[i].SubItems[0];
        FieldByName('B_PRIJEMA').Value:= Edit2.Text;
        FieldByName('MAGACIN').Value:= Edit1.Text;
        FieldByName('B_DOST').Value:= Edit3.Text;
        FieldByName('S_DOB').Value:= SifraPartnera;
        FieldByName('KOL').Value:= ListView1.Items[i].SubItems[3];
        FieldByName('N_CENA').Value:= ListView1.Items[i].SubItems[4];
        FieldByName('P_CENA').Value:= ListView1.Items[i].SubItems[5];
        FieldByName('M_CENA').Value:= ListView1.Items[i].SubItems[7];
        FieldByName('D_PRIJ').Value:= Edit4.Text;
        FieldByName('R_BROJ').Value:= I + 1;
        FieldByName('J_ZAV_TR').Value:= ListView1.Items[i].SubItems[8];
        FieldByName('J_OS_TR').Value:= ListView1.Items[i].SubItems[9];
        FieldByName('J_RAB_D').Value:= ListView1.Items[i].SubItems[10];
        FieldByName('J_MAR_D').Value:= ListView1.Items[i].SubItems[11];
        FieldByName('T_POR').Value:= ListView1.Items[i].SubItems[12];
        FieldByName('S_PORE').Value:= ListView1.Items[i].SubItems[13];
        FieldByName('J_POR').Value:= ListView1.Items[i].SubItems[14];
        FieldByName('PL_POR_R').Value:= ListView1.Items[i].SubItems[15];
        FieldByName('TR_PAK').Value:= ListView1.Items[i].SubItems[16];
        FieldByName('VRS_DOK').Value:= VrstaDokumenta;
        FieldByName('J_MERE').Value:= ListView1.Items[i].SubItems[2];
        FieldByName('NAZIV').Value:= ListView1.Items[i].SubItems[1];
        FieldByName('VALUTA').Value:= ListView1.Items[i].SubItems[18];
        FieldByName('R+M').Value:= ListView1.Items[i].SubItems[6];
        Post;
      end;
    except
      ShowMessage('Poruka o gresci');
    end;


E sad meni nije jasno zasto ova prva varijanta ne radi, a ova druga radi bez problema... Mislim nije mi problem ni ovo drugo da koristim, ali me nervira posto mi usporava rad jer radi Open baze sto dodatno usporava umesto da samo Insertuje podatke u nju...

Hvala unapred!

P.S. Zaboravih da napomenem da se ovaj kod izvrsava kroz for petlju ( odatle onaj [ i ] ) koja ide po TListView komponenti od 0 do ListView1.Items.Count - 1 i kod puca vec u prvom prolazu, tako da 100% nije do nepravilnih podataka u ListView-u...
[ marcha @ 02.09.2006. 10:54 ] @
Umesto TADOQuery uzmi TADOCommand. SQL kod njega upisujes u property "CommandText"
[ sasas @ 02.09.2006. 11:30 ] @
Jel mozeš da makneš try..except i da vidiš koja greška je u pitanju?

ss.
[ Bojan Kopanja @ 02.09.2006. 11:39 ] @
@ sasas

Greska koju dobijem je:

Project Project1.exe raised exception class EOleException with message 'Syntax error in INSERT INTO statement'. Process stoped. Use Step or Run to continue.

@ marcha

Mora da radi i sa ADOQuery-em posto 10 linija koda ispod problematicnog koda koristim drugi ADOQuery za upis nekih podataka u drugu bazu i to radi bez ikakvih problema sa onim prvim sto sam gore napisao, tako da je problem izgleda bas u samom upitu, ali meni nije jasno gde je problem...
[ savkic @ 02.09.2006. 11:50 ] @
> Imam jedan upit za koji mi nikako nije jasno zasto ne radi... Radi se o obicnom INSERT INTO upitu. Evo pogledajte pa recite ako neko zna :
> SQL.Add('INSERT INTO ULAZ(SIFRA, B_PRIJEMA, MAGACIN, B_DOST, S_DOB, KOL, N_CENA, P_CENA, M_CENA, D_PRIJ, R_BROJ, J_ZAV_TR, J_OS_TR, J_RAB_D, > J_MAR_D, T_POR, S_PORE, J_POR, PL_POR_R, TR_PAK, VRS_DOK, VALUTA, R+M, J_MERE, NAZIV)');

Koju bazu koristiš? Naziv polja R+M deluje sumnjivo, uglavnom RDBMS zahtevaju takve nazive u navodnicima. Šta se dešava ako tekst otkucaš van programa u nekom isql programu koji dolazi uz RDBMS?
[ Bojan Kopanja @ 02.09.2006. 14:45 ] @
@ savkic

Hvala puno, resio sam problem! Koristim Access bazu i trebalo je staviti naziv polja u [] zagrade...