Wilke1 0 Denunciar post Postado Abril 27, 2007 ola pessoal e esse loop ele ta dando esse error 'Qrypromotor:dataset not in edit or insert', voces tem alguma ideia de como eu posso resolver.estou fazendo assimif QryDivisaoENTRE.RecordCount > 1 then begin IF (QRYPROMOTORFORNEC.STATE = DSINSERT) THEN BEGIN While not QryDivisaoentre.eof do begin QRYPROMOTORFORNEC.FieldByName('CD_PROMOTOR').AsString:=codpromotor; QRYPROMOTORFORNEC.FIELDBYNAME('CD_FORNECEDOR').AsString:=fornecpromotor; QRYPROMOTORFORNEC.FIELDBYNAME('CD_DIVISAO').AsString:=QrydivisaoENTRE.FieldByName('CD_DIVISAO').AsString; QRYPROMOTORFORNEC.ApplyUpdates; QRYPROMOTORFORNEC.CommitUpdates; Qrydivisaoentre.Next; end; end;end; Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Abril 27, 2007 Vai dar erro, pq você verifica se ela esta em inserção, entra no while, da um post e depois não coloca novamente em edit. Compartilhar este post Link para o post Compartilhar em outros sites
Wilke1 0 Denunciar post Postado Abril 27, 2007 Vai dar erro, pq você verifica se ela esta em inserção, entra no while, da um post e depois não coloca novamente em edit.marcio ainda continua o mesmo error, estou utilizando um updatesql, será que pode ser ele? Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Abril 27, 2007 Mas vai sempre continuar o erro, se você deixar no while desta forma vai ocorrer, visto que a primeira vez vai funcionar, mas depois não vai mais, pois você já efetuou o post sobre a tabela, e quando for para a segunda vez a query não esta nem em inserção e nem em edição, gerando assim o erro. Compartilhar este post Link para o post Compartilhar em outros sites
Wilke1 0 Denunciar post Postado Abril 27, 2007 Mas vai sempre continuar o erro, se você deixar no while desta forma vai ocorrer, visto que a primeira vez vai funcionar, mas depois não vai mais, pois você já efetuou o post sobre a tabela, e quando for para a segunda vez a query não esta nem em inserção e nem em edição, gerando assim o erro.estou fazendo assim if QryDivisaoENTRE.RecordCount > 1 then begin While not QryDivisaoentre.eof do begin QRYPROMOTORFORNEC.FieldByName('CD_PROMOTOR').AsString:=Qrypromotores.FieldByName('cd_promotor').AsString; QRYPROMOTORFORNEC.FIELDBYNAME('CD_FORNECEDOR').AsString:=Qrymostrafornecedores.FieldByName('cd_fornecedor').AsString; QRYPROMOTORFORNEC.FIELDBYNAME('CD_DIVISAO').AsString:=QrydivisaoENTRE.FieldByName('CD_DIVISAO').AsString; QRYPROMOTORFORNEC.post; Qrydivisaoentre.Next; end;end; Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Abril 27, 2007 Veja que você ficar executando .POST no final, e antes fica atribuíndo valores aos campos, é preciso que antes ainda, logo após o begin do while tenha a edição ou a inserção do registro na query, ou seja, qry.Insert ou qry.Edit, para que consiga atribuir os campos e depois salvar. Compartilhar este post Link para o post Compartilhar em outros sites
Wilke1 0 Denunciar post Postado Abril 30, 2007 ola pessoal e esse loop ele ta dando esse error 'Qrypromotor:dataset not in edit or insert', voces tem alguma ideia de como eu posso resolver.estou fazendo assimif QryDivisaoENTRE.RecordCount > 1 then begin IF (QRYPROMOTORFORNEC.STATE = DSINSERT) THEN BEGIN While not QryDivisaoentre.eof do begin QRYPROMOTORFORNEC.FieldByName('CD_PROMOTOR').AsString:=codpromotor; QRYPROMOTORFORNEC.FIELDBYNAME('CD_FORNECEDOR').AsString:=fornecpromotor; QRYPROMOTORFORNEC.FIELDBYNAME('CD_DIVISAO').AsString:=QrydivisaoENTRE.FieldByName('CD_DIVISAO').AsString; QRYPROMOTORFORNEC.ApplyUpdates; QRYPROMOTORFORNEC.CommitUpdates; Qrydivisaoentre.Next; end; end;end;eu fiz assim e deu certo. IF (QRYPROMOTORFORNEC.STATE = DSINSERT) THEN BEGIN While not QryDivisaoentre.eof do begin QRYPROMOTORFORNEC.Close; QRYPROMOTORFORNEC.SQL.Clear; QRYPROMOTORFORNEC.SQL.Add('INSERT INTO TB_PROMOTORES_FORNEC'); QRYPROMOTORFORNEC.SQL.ADD('(CD_PROMOTOR,CD_FORNECEDOR,CD_DIVISAO)'); QRYPROMOTORFORNEC.SQL.Add('VALUES(:CODPROMOTOR,:CODFORNECEDOR,:CODDIVISAO)'); QRYPROMOTORFORNEC.ParamByName('CODPROMOTOR').Value:=Qrypromotores.FieldByName('cd_promotor').AsString; QRYPROMOTORFORNEC.ParamByName('CODFORNECEDOR').Value:=Qrymostrafornecedores.FieldByName('cd_fornecedor').AsString; QRYPROMOTORFORNEC.ParamByName('CODDIVISAO').Value:= QrydivisaoENTRE.FieldByName('CD_DIVISAO').AsString; QRYPROMOTORFORNEC.ExecSQL; Qrydivisaoentre.Next; end; end;marcio estou com outra duvida eo seguinte na hora de incluir outro promotor ele dar error ora-00001dizendo que ja foi inserido o codigo, tem como eu evitar isso ? Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Abril 30, 2007 Teria que fazer antes uma consulta para ver se o mesmo já não esta inserido. Compartilhar este post Link para o post Compartilhar em outros sites
Wilke1 0 Denunciar post Postado Maio 4, 2007 Teria que fazer antes uma consulta para ver se o mesmo já não esta inserido.Resolvidoeu fiz assim e deu certoif QryDivisao.RecordCount > 1 then begin IF (QRYPROMOTORFORNEC.STATE = DSINSERT) THEN BEGIN While not QryDivisao.eof do begin QRYPROMOTORFORNEC.FieldByName('CD_PROMOTOR').ASINTEGER := Qrypromotores.FieldByName('CD_PROMOTOR').AsInteger; QRYPROMOTORFORNEC.FIELDBYNAME('CD_FORNECEDOR').ASSTRING := QrymostraFornecedores.FieldByName('CD_FORNECEDOR').AsString; QRYPROMOTORFORNEC.FIELDBYNAME('CD_DIVISAO').ASSTRING := Qrydivisao.FieldByName('CD_DIVISAO').AsString; QRYPROMOTORFORNEC.Post; QRYPROMOTORFORNEC.Edit; QRYPROMOTORFORNEC.ApplyUpdates; QRYPROMOTORFORNEC.CommitUpdates; QRYPROMOTORFORNEC.Append; Qrydivisao.Next; end; end;end; Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Maio 4, 2007 beleza... Acho que somente pode ainda remover a linha: QRYPROMOTORFORNEC.Edit; Compartilhar este post Link para o post Compartilhar em outros sites