× Linguagem de Programação ADVPL

Perguntas Gravação de campo criado pelo ponto de entrada MT110TEL

Mais
9 anos 3 meses atrás #28857 por gustavo
Galera desenvolvi um fonte MT110TEL para colocar um campo na tela. Até ai beleza o campo aparece porém não consigo grava-lo já utilizei o P.E MTA110OK ,porém não grava.

Segue o fonte.

#INCLUDE "PROTHEUS.CH"
#INCLUDE "rwmake.ch"

User function MT110TEL()

Local oNewDialog := PARAMIXB[1],;
aPosGet := PARAMIXB[2],;
nOpcx := PARAMIXB[3],;
nReg := PARAMIXB[4]

If nOpcx == 3

Public cTpComp := CriaVar('C1_XTPCOMP')

Else

Public cTpComp := SC1->C1_XTPCOMP

Endif

AADD(aPosGet[1],0)
AADD(aPosGet[1],0)

@ 32,22 SAY 'Tipo de compra' PIXEL SIZE 45,11 Of oNewDialog
@ 32,78 MSCOMBOBOX cTpComp ITEMS{'','P=Processo de compras','D=Direta'} SIZE 075, 010 Of oNewDialog Pixel Valid !Vazio()

Return

User Function MT110GET()

Local aRet:= PARAMIXB[1]

aRet[2,1] := 49 //78Abaixando o começo da linha da getdados
aRet[1,3] := 50 // Abaixando a linha de contorno dos campos do cabeçalho

Return(aRet)

User Function MTA110OK(cTpComp)

Local cNumsc := PARAMIXB[1],;
cUser := PARAMIXB[2],;
dDtaSol:= PARAMIXB[3]
lRet := .F.
cTpComp:= SC1->C1_XTPCOMP

DbSelectArea('SC1')
DbSetOrder(1)

RecLock('SC1',.T.)
SC1->C1_XTPCOMP := cTpComp
SC1->(MsUnlock())

Return

Obrigado.

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 3 meses atrás #28860 por will3698
Ola boa noite.

Você precisa fazer um Seek ai nesse fonte... você ta abrindo a tabela SC1 e setando a ordem, mas não esta filtrando nada nela .

segue exemplo .

DbSeek(xFilial('SC1') + nNumSc)


att

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 3 meses atrás #28863 por gustavo
Willian, obrigado por me responder!!!

Coloquei o Seek porém na hora que o programa vai gravar da um erro de duplicate key.

THREAD ERROR (gustavo.rodrigues, MC-ETC-1005) 11/08/2015 09:05:26
DB error (Insert): -37 File: SC1010 - Error : 2601 (23000) - [Microsoft][SQL Server Native Client 10.0][SQL Server]Cannot insert duplicate key row in object 'dbo.SC1010' with unique index 'SC1010_UNQ'. The duplicate key value is ( , , , , 0).( SQL Statement : INSERT INTO dbo.SC1010(R_E_C_N_O_) VALUES ( 55162) ) ( From tISAMFile::Write )
Thread ID [51028] User [gustavo] IO [949] Tables [17] MaxTables [17] Comment [MATA110 - TCPIP] Status [] SP [ ] Traced [No] InTran [No] DBEnv [MSSQL/UJ0OXD_TESTE] DBThread [(SPID: 76) ] Started [11/08/2015 09:10:51] LastIO [] IP [192.168.5.129] RCV [231359] SND [1024483] TCBuild [20120327]
- Integrity failure. in file .\top.cpp at line 2317
on MSUNLOCK(APLIB060.PRW) 08/01/2015 11:30:42 line : 682

Se eu retirar o p.e MTA110OK ele grava.

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 3 meses atrás #28864 por will3698
posta ai o codigo completo como esta agora dando esse rrro ai .
você esta tentando editar um campo de chave unica.

posta ai

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 3 meses atrás #28865 por gustavo
#INCLUDE "PROTHEUS.CH"
#INCLUDE "rwmake.ch"

User function MT110TEL()

Local oNewDialog := PARAMIXB[1],;
aPosGet := PARAMIXB[2],;
nOpcx := PARAMIXB[3],;
nReg := PARAMIXB[4]

If nOpcx == 3

Public cTpComp := CriaVar('C1_XTPCOMP')

Else

Public cTpComp := SC1->C1_XTPCOMP

Endif

AADD(aPosGet[1],0)
AADD(aPosGet[1],0)

@ 32,22 SAY 'Tipo de compra' PIXEL SIZE 45,11 Of oNewDialog
@ 32,78 MSCOMBOBOX cTpComp ITEMS{'','P=Processo de compras','D=Direta'} SIZE 075, 010 Of oNewDialog Pixel Valid !Vazio()

Return

User Function MT110GET()

Local aRet:= PARAMIXB[1]

aRet[2,1] := 47 //78Abaixando o começo da linha da getdados
aRet[1,3] := 50 // Abaixando a linha de contorno dos campos do cabeçalho

Return(aRet)

User Function MTA110OK()

Local cNumsc := PARAMIXB[1],;
cUser := PARAMIXB[2],;
dDtaSol:= PARAMIXB[3]

Local lRet := .T.,;
cTpComp:= SC1->C1_XTPCOMP,;
cSC := SC1->C1_NUM

Local aAreaSC1:= GetArea()

DbSelectArea('SC1')
DbSetOrder(1)
DbSeek(xFilial('SC1')+cSC)

RecLock('SC1',.T.)
SC1->C1_XTPCOMP := cTpComp
SC1->(MsUnlock())
RestArea(aAreaSC1)

Return lRet

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 3 meses atrás #28867 por will3698
Mude o recklok para .F.

.T. é para insert, .F. é para Alter

att

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.084 segundos
Joomla templates by a4joomla