Eu tenho um codigo que faz uma consulta sql e deve retornar mais de 1000 campos diferentes e preencher uma grid com cada campo, como eu faço isso sem usar o oModel:SetValue() para cada um, porque se fosse desse jeito o codigo iria ficar gigante
Eu tenho um codigo que faz uma consulta sql e deve retornar mais de 1000 campos diferentes e preencher uma grid com cada campo, como eu faço isso sem usar o oModel:SetValue() para cada um, porque se fosse desse jeito o codigo iria ficar gigante
Arthur, você pode fazer algo assim:
Local aStruct := (cAlias)->(DbStruct())
Local nI := 0
While ! (cAlias)->(EOF())
For nI := 1 To Len(aStrunc)
oModelPad:SetValue("SB1MASTER",aStruct[ni][1], ALLTRIM( (cAlias)->(&(aStruct[ni][1])) ) )
Next nI
EndDo
Local aStruct := (cAlias)->(DbStruct()) //Irá pegar todo o alias corrente
Local nI := 0 //contador
While ! (cAlias)->(EOF()) //Passará por aqui nao enquanto nao for fim de arquivo
For nI := 1 To Len(aStrunc) //Contador inicia em 1 ate o fim do array
oModelPad:SetValue("SB1MASTER",aStruct[nI][1], ALLTRIM( (cAlias)->(&(aStruct[nI][1])) ) )
// FuncaoMVC ,Coluna que receberá, Valor que irá receber
Next nI //proximo passada
Enddo
Arrumei aqui.
Mas assim eu teria mais de 1000 linha so de SetValue, não tem nenhum jeito de atualizar todas automaticamente?
— Arthur Dias 06 de May de 2024A resposta do leandro ficou mais correta, vc seta o alias , o while vai percorrer o alias inteiro, só vai parar quando for fim de arquivo.
— Lucas de Paulo Santos 06 de May de 2024Você só vai colocar o setvalue nas colunas que ele vai atualizar.
— Lucas de Paulo Santos 06 de May de 2024E se eu quiser atualizar 1000 coluna por exemplo, vou ter que escrever 1000 SetValue?
— Arthur Dias 06 de May de 2024Não, você terá que usar um vetor Multidimensional, mas não é possivel você ter 1000 colunas em uma tabela do protheus.
— Lucas de Paulo Santos 07 de May de 2024