 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
snupoo Lt Cmdr


Registrado: 19 Feb 2004Mensajes: 108Ubicación: Merida yucatan Mexico
|
Publicado: Vie 12 Jul, 2019 9:17 pm Asunto: Problema con BSTR |
|
|
Antes que nada, un saludo para todos hace tiempo que no pasaba por aquí.
Mi problema es el siguiente tengo unos objetos COM los cuales proviene de un SDK para generar unas pólizas, todo funcionaba de manera correcta y de un día para otro dejo de trabajar. Concretamente cual es el problema.
El objeto TSdkMovimientoPolizaPtr tiene una propiedad __property BSTR CodigoCuenta = {read = get_CodigoCuenta, write = set_CodigoCuenta}; en algunas ocasiones (no sé porque) cuando se asigna el código de la cuenta la propiedad SdkMovimientoPoliza1->CodigoCuenta = WideString(L”510200054I0020” ).c_bstr(); no toma el valor de la cuenta y se queda en NULL y al querer guardar el movimiento el SDK me regresa el error “La cuenta es obligatoria”.
Según mi escaso conocimiento podría ser algún problema con las declaraciones o la asignación de memoria, pero no logro encontrar la solución.
Agradezco de antemano la ayuda o sugerencia.
Dejo el código completó.
Objeto COM
| Código: |
// *********************************************************************//
// Interface: ITSdkMovimientoPoliza
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {17E8C375-D8DC-4CC7-A4D3-B4558B39E388}
// *********************************************************************//
interface ITSdkMovimientoPoliza : public IDispatch
{
public:
// [1] Id: obtiene el identificador �nico del movimiento.
virtual HRESULT STDMETHODCALLTYPE get_Id(long* pValRet/*[out,retval]*/) = 0;
// [2] IdPoliza: obtiene el identificador �nico de la p�liza.
virtual HRESULT STDMETHODCALLTYPE get_IdPoliza(long* pValRet/*[out,retval]*/) = 0;
// [3] NumMovto: obtiene el n�mero consecutivo del movimiento en la p�liza.
virtual HRESULT STDMETHODCALLTYPE get_NumMovto(long* pValRet/*[out,retval]*/) = 0;
// [3] NumMovto: obtiene el n�mero consecutivo del movimiento en la p�liza.
virtual HRESULT STDMETHODCALLTYPE set_NumMovto(long pValRet/*[in]*/) = 0;
// [4] CodigoCuenta: obtiene el c�digo de la cuenta del movimiento de la p�liza.
virtual HRESULT STDMETHODCALLTYPE get_CodigoCuenta(BSTR* pValRet/*[out,retval]*/) = 0;
// [4] CodigoCuenta: obtiene el c�digo de la cuenta del movimiento de la p�liza.
virtual HRESULT STDMETHODCALLTYPE set_CodigoCuenta(BSTR pValRet/*[in]*/) = 0;
// [5] TipoMovto: obtiene el tipo de movimiento de la p�liza.
virtual HRESULT STDMETHODCALLTYPE get_TipoMovto(Sdkcontpaqnglib_tlb::ETIPOIMPORTEMOVPOLIZA* pValRet/*[out,retval]*/) = 0;
// [5] TipoMovto: obtiene el tipo de movimiento de la p�liza.
virtual HRESULT STDMETHODCALLTYPE set_TipoMovto(Sdkcontpaqnglib_tlb::ETIPOIMPORTEMOVPOLIZA pValRet/*[in]*/) = 0;
// [6] Importe: obtiene el importe en moneda base del movimiento.
virtual HRESULT STDMETHODCALLTYPE get_Importe(CURRENCY* pValRet/*[out,retval]*/) = 0;
// [6] Importe: obtiene el importe en moneda base del movimiento.
virtual HRESULT STDMETHODCALLTYPE set_Importe(CURRENCY pValRet/*[in]*/) = 0;
// [7] ImporteME: obtiene el importe en moneda extranjera del movimiento.
virtual HRESULT STDMETHODCALLTYPE get_ImporteME(CURRENCY* pValRet/*[out,retval]*/) = 0;
// [7] ImporteME: obtiene el importe en moneda extranjera del movimiento.
virtual HRESULT STDMETHODCALLTYPE set_ImporteME(CURRENCY pValRet/*[in]*/) = 0;
// [8] Referencia: obtiene la referencia del movimiento de la p�liza.
virtual HRESULT STDMETHODCALLTYPE get_Referencia(BSTR* pValRet/*[out,retval]*/) = 0;
// [8] Referencia: obtiene la referencia del movimiento de la p�liza.
virtual HRESULT STDMETHODCALLTYPE set_Referencia(BSTR pValRet/*[in]*/) = 0;
// [9] Concepto: obtiene el concepto del movimiento de la p�liza.
virtual HRESULT STDMETHODCALLTYPE get_Concepto(BSTR* pValRet/*[out,retval]*/) = 0;
// [9] Concepto: obtiene el concepto del movimiento de la p�liza.
virtual HRESULT STDMETHODCALLTYPE set_Concepto(BSTR pValRet/*[in]*/) = 0;
// [10] Diario: obtiene el n�mero del diario especial del movimiento de la p�liza.
virtual HRESULT STDMETHODCALLTYPE get_Diario(long* pValRet/*[out,retval]*/) = 0;
// [10] Diario: obtiene el n�mero del diario especial del movimiento de la p�liza.
virtual HRESULT STDMETHODCALLTYPE set_Diario(long pValRet/*[in]*/) = 0;
// [11] SegmentoNegocio: obtiene el n�mero del segmento de negocio del movimiento de la p�liza.
virtual HRESULT STDMETHODCALLTYPE get_SegmentoNegocio(BSTR* pValRet/*[out,retval]*/) = 0;
// [11] SegmentoNegocio: obtiene el n�mero del segmento de negocio del movimiento de la p�liza.
virtual HRESULT STDMETHODCALLTYPE set_SegmentoNegocio(BSTR pValRet/*[in]*/) = 0;
// [12] setId
virtual HRESULT STDMETHODCALLTYPE set_setId(long Param1/*[in]*/) = 0;
// [13] setIdPoliza
virtual HRESULT STDMETHODCALLTYPE set_setIdPoliza(long Param1/*[in]*/) = 0;
// [14] setNumMovto
virtual HRESULT STDMETHODCALLTYPE set_setNumMovto(long Param1/*[in]*/) = 0;
// [15] iniciarInfo: inicializa los datos del objeto del Sdk de movimientos de p�lizas
virtual HRESULT STDMETHODCALLTYPE iniciarInfo(void) = 0;
// [16] setCuenta: busca la informaci�n de la cuenta de un movimiento de p�liza.
virtual HRESULT STDMETHODCALLTYPE set_setCuenta(long Param1/*[in]*/) = 0;
// [17] getCuenta: copia la informaci�n de la cuenta en un nuevo objeto TSdkCuenta.
virtual HRESULT STDMETHODCALLTYPE getCuenta(Sdkcontpaqnglib_tlb::ITSdkCuenta* aSdkCuenta/*[in]*/,
long* pValRet/*[out,retval]*/) = 0;
// [18] setDiario: busca la informaci�n del diario especial de un movimiento de p�liza.
virtual HRESULT STDMETHODCALLTYPE set_setDiario(long Param1/*[in]*/) = 0;
// [19] getDiario: copia la informaci�n del diario especial de un movimiento de p�liza
virtual HRESULT STDMETHODCALLTYPE getDiario(Sdkcontpaqnglib_tlb::ITSdkDiarioEspecial* aSdkDiario/*[in]*/,
long* pValRet/*[out,retval]*/) = 0;
// [20] setSegNeg: busca la informaci�n del segmento de negocio de un movimiento de p�liza.
virtual HRESULT STDMETHODCALLTYPE set_setSegNeg(long Param1/*[in]*/) = 0;
// [21] getSegNeg: copia la informaci�n del segmento de negocio de un movimiento de p�liza.
virtual HRESULT STDMETHODCALLTYPE getSegNeg(Sdkcontpaqnglib_tlb::ITSdkSegmentoNegocio* aSdkSegNeg/*[in]*/,
long* pValRet/*[out,retval]*/) = 0;
// [22] IdCuenta: obtiene el n�mero �nico de los datos de la cuenta del movimiento de p�liza.
virtual HRESULT STDMETHODCALLTYPE get_IdCuenta(long* pValRet/*[out,retval]*/) = 0;
// [23] IdDiario: obtiene el n�mero �nico de los datos del diario especial del movimiento de p�liza.
virtual HRESULT STDMETHODCALLTYPE get_IdDiario(long* pValRet/*[out,retval]*/) = 0;
// [24] IdSegNeg: obtiene el n�mero �nico de los datos del segmento de negocio del movimiento de p�liza.
virtual HRESULT STDMETHODCALLTYPE get_IdSegNeg(long* pValRet/*[out,retval]*/) = 0;
// [25] setSesion
virtual HRESULT STDMETHODCALLTYPE setSesion(Sdkcontpaqnglib_tlb::ITSdkSesion* newVal) = 0;
// [26] buscaPorCuentaRangoFechas
virtual HRESULT STDMETHODCALLTYPE buscaPorCuentaRangoFechas_buscaPrimero(BSTR aCodigoCuenta,
DATE aFechaInicial,
DATE aFechaFinal,
long* pValRet/*[out,retval]*/) = 0;
// [27] buscaPorCuentaRangoFechas_buscaSiguiente
virtual HRESULT STDMETHODCALLTYPE buscaPorCuentaRangoFechas_buscaSiguiente(long* pValRet/*[out,retval]*/) = 0;
// [28] buscaPorCuentaRangoFechas_buscaAnterior
virtual HRESULT STDMETHODCALLTYPE buscaPorCuentaRangoFechas_buscaAnterior(long* pValRet/*[out,retval]*/) = 0;
// [29] buscaPorCuentaRangoFechas_buscaUltimo
virtual HRESULT STDMETHODCALLTYPE buscaPorCuentaRangoFechas_buscaUltimo(long* pValRet/*[out,retval]*/) = 0;
// [30] method setSdkCuenta
virtual HRESULT STDMETHODCALLTYPE setSdkCuenta(Sdkcontpaqnglib_tlb::ITSdkCuenta* aSdkCuenta) = 0;
// [31] property CodigoDiario
virtual HRESULT STDMETHODCALLTYPE get_CodigoDiario(BSTR* pVal/*[out,retval]*/) = 0;
// [31] property CodigoDiario
virtual HRESULT STDMETHODCALLTYPE set_CodigoDiario(BSTR pVal/*[in]*/) = 0;
// [32] method getCodigoError
virtual HRESULT STDMETHODCALLTYPE getCodigoError(BSTR* pValRet/*[out,retval]*/) = 0;
// [33] method getMensajeError
virtual HRESULT STDMETHODCALLTYPE getMensajeError(BSTR* pValRet/*[out,retval]*/) = 0;
// [34] Guid: obtiene el guid del movimiento de la p�liza.
virtual HRESULT STDMETHODCALLTYPE get_Guid(BSTR* pValRet/*[out,retval]*/) = 0;
// [34] Guid: obtiene el guid del movimiento de la p�liza.
virtual HRESULT STDMETHODCALLTYPE set_Guid(BSTR pValRet/*[in]*/) = 0;
#if !defined(__TLB_NO_INTERFACE_WRAPPERS)
long __fastcall get_Id(void)
{
long pValRet;
OLECHECK(this->get_Id((long*)&pValRet));
return pValRet;
}
long __fastcall get_IdPoliza(void)
{
long pValRet;
OLECHECK(this->get_IdPoliza((long*)&pValRet));
return pValRet;
}
long __fastcall get_NumMovto(void)
{
long pValRet;
OLECHECK(this->get_NumMovto((long*)&pValRet));
return pValRet;
}
BSTR __fastcall get_CodigoCuenta(void)
{
BSTR pValRet = 0;
OLECHECK(this->get_CodigoCuenta((BSTR*)&pValRet));
return pValRet;
}
Sdkcontpaqnglib_tlb::ETIPOIMPORTEMOVPOLIZA __fastcall get_TipoMovto(void)
{
Sdkcontpaqnglib_tlb::ETIPOIMPORTEMOVPOLIZA pValRet;
OLECHECK(this->get_TipoMovto((Sdkcontpaqnglib_tlb::ETIPOIMPORTEMOVPOLIZA*)&pValRet));
return pValRet;
}
CURRENCY __fastcall get_Importe(void)
{
CURRENCY pValRet;
OLECHECK(this->get_Importe((CURRENCY*)&pValRet));
return pValRet;
}
CURRENCY __fastcall get_ImporteME(void)
{
CURRENCY pValRet;
OLECHECK(this->get_ImporteME((CURRENCY*)&pValRet));
return pValRet;
}
BSTR __fastcall get_Referencia(void)
{
BSTR pValRet = 0;
OLECHECK(this->get_Referencia((BSTR*)&pValRet));
return pValRet;
}
BSTR __fastcall get_Concepto(void)
{
BSTR pValRet = 0;
OLECHECK(this->get_Concepto((BSTR*)&pValRet));
return pValRet;
}
long __fastcall get_Diario(void)
{
long pValRet;
OLECHECK(this->get_Diario((long*)&pValRet));
return pValRet;
}
BSTR __fastcall get_SegmentoNegocio(void)
{
BSTR pValRet = 0;
OLECHECK(this->get_SegmentoNegocio((BSTR*)&pValRet));
return pValRet;
}
long __fastcall getCuenta(Sdkcontpaqnglib_tlb::ITSdkCuenta* aSdkCuenta/*[in]*/)
{
long pValRet;
OLECHECK(this->getCuenta(aSdkCuenta, (long*)&pValRet));
return pValRet;
}
long __fastcall getDiario(Sdkcontpaqnglib_tlb::ITSdkDiarioEspecial* aSdkDiario/*[in]*/)
{
long pValRet;
OLECHECK(this->getDiario(aSdkDiario, (long*)&pValRet));
return pValRet;
}
long __fastcall getSegNeg(Sdkcontpaqnglib_tlb::ITSdkSegmentoNegocio* aSdkSegNeg/*[in]*/)
{
long pValRet;
OLECHECK(this->getSegNeg(aSdkSegNeg, (long*)&pValRet));
return pValRet;
}
long __fastcall get_IdCuenta(void)
{
long pValRet;
OLECHECK(this->get_IdCuenta((long*)&pValRet));
return pValRet;
}
long __fastcall get_IdDiario(void)
{
long pValRet;
OLECHECK(this->get_IdDiario((long*)&pValRet));
return pValRet;
}
long __fastcall get_IdSegNeg(void)
{
long pValRet;
OLECHECK(this->get_IdSegNeg((long*)&pValRet));
return pValRet;
}
long __fastcall buscaPorCuentaRangoFechas_buscaPrimero(BSTR aCodigoCuenta, DATE aFechaInicial,
DATE aFechaFinal)
{
long pValRet;
OLECHECK(this->buscaPorCuentaRangoFechas_buscaPrimero(aCodigoCuenta, aFechaInicial, aFechaFinal, (long*)&pValRet));
return pValRet;
}
long __fastcall buscaPorCuentaRangoFechas_buscaSiguiente(void)
{
long pValRet;
OLECHECK(this->buscaPorCuentaRangoFechas_buscaSiguiente((long*)&pValRet));
return pValRet;
}
long __fastcall buscaPorCuentaRangoFechas_buscaAnterior(void)
{
long pValRet;
OLECHECK(this->buscaPorCuentaRangoFechas_buscaAnterior((long*)&pValRet));
return pValRet;
}
long __fastcall buscaPorCuentaRangoFechas_buscaUltimo(void)
{
long pValRet;
OLECHECK(this->buscaPorCuentaRangoFechas_buscaUltimo((long*)&pValRet));
return pValRet;
}
BSTR __fastcall get_CodigoDiario(void)
{
BSTR pVal = 0;
OLECHECK(this->get_CodigoDiario((BSTR*)&pVal));
return pVal;
}
BSTR __fastcall getCodigoError(void)
{
BSTR pValRet = 0;
OLECHECK(this->getCodigoError((BSTR*)&pValRet));
return pValRet;
}
BSTR __fastcall getMensajeError(void)
{
BSTR pValRet = 0;
OLECHECK(this->getMensajeError((BSTR*)&pValRet));
return pValRet;
}
BSTR __fastcall get_Guid(void)
{
BSTR pValRet = 0;
OLECHECK(this->get_Guid((BSTR*)&pValRet));
return pValRet;
}
__property long Id = {read = get_Id};
__property long IdPoliza = {read = get_IdPoliza};
__property long NumMovto = {read = get_NumMovto, write = set_NumMovto};
__property BSTR CodigoCuenta = {read = get_CodigoCuenta, write = set_CodigoCuenta};
__property Sdkcontpaqnglib_tlb::ETIPOIMPORTEMOVPOLIZA TipoMovto = {read = get_TipoMovto, write = set_TipoMovto};
__property CURRENCY Importe = {read = get_Importe, write = set_Importe};
__property CURRENCY ImporteME = {read = get_ImporteME, write = set_ImporteME};
__property BSTR Referencia = {read = get_Referencia, write = set_Referencia};
__property BSTR Concepto = {read = get_Concepto, write = set_Concepto};
__property long Diario = {read = get_Diario, write = set_Diario};
__property BSTR SegmentoNegocio = {read = get_SegmentoNegocio, write = set_SegmentoNegocio};
__property long setId = {write = set_setId};
__property long setIdPoliza = {write = set_setIdPoliza};
__property long setNumMovto = {write = set_setNumMovto};
__property long setCuenta = {write = set_setCuenta};
__property long setDiario = {write = set_setDiario};
__property long setSegNeg = {write = set_setSegNeg};
__property long IdCuenta = {read = get_IdCuenta};
__property long IdDiario = {read = get_IdDiario};
__property long IdSegNeg = {read = get_IdSegNeg};
__property BSTR CodigoDiario = {read = get_CodigoDiario, write = set_CodigoDiario};
__property BSTR Guid = {read = get_Guid, write = set_Guid};
#endif // __TLB_NO_INTERFACE_WRAPPERS
};
|
Mi Codigo
| Código: |
//---------------------------------------------------------------------------
void TForm1::crea_movimientos_poliza(TSdkPolizaPtr SdkPoliza1)
{
TSdkMovimientoPolizaPtr SdkMovimientoPoliza1;
//Nos posicionamos en la poliza y la ponemos en modo edicion
SdkPoliza1->buscaPorId(SdkPoliza1->Id);
SdkPoliza1->modifica();
ADOQuery2->First();
while (!ADOQuery2->Eof)
{
SdkMovimientoPoliza1.CreateInstance(CLSID_TSdkMovimientoPoliza);
SdkMovimientoPoliza1->setSesion(SdkSesion1);
SdkMovimientoPoliza1->iniciarInfo();
SdkMovimientoPoliza1->NumMovto = ADOQuery2->FieldByName("nmov")->AsInteger;
SdkMovimientoPoliza1->CodigoCuenta = WideString(ADOQuery2->FieldByName("cuenta")->AsString.Trim()).c_bstr();
if( ADOQuery2->FieldByName("tipo")->AsBoolean ) //Cargo o Abono
{
SdkMovimientoPoliza1->TipoMovto = ETIPOIMPORTEMOVPOLIZA::MOVPOLIZA_CARGO;
SdkMovimientoPoliza1->Importe = ADOQuery2->FieldByName("cargo")->AsVariant;
}
else
{
SdkMovimientoPoliza1->TipoMovto = ETIPOIMPORTEMOVPOLIZA::MOVPOLIZA_ABONO;
SdkMovimientoPoliza1->Importe = ADOQuery2->FieldByName("abono")->AsVariant;
}
SdkMovimientoPoliza1->ImporteME = Variant(0);
SdkMovimientoPoliza1->Diario = 0;
SdkMovimientoPoliza1->SegmentoNegocio = 0;
SdkMovimientoPoliza1->Concepto = WideString(ADOQuery2->FieldByName("concepto")->AsString.Trim()).c_bstr();
SdkMovimientoPoliza1->Referencia = WideString(ADOQuery2->FieldByName("referencia")->AsString.Trim()).c_bstr();
SdkMovimientoPoliza1->Guid = WideString(ADOQuery2->FieldByName("guid")->AsString.Trim()).c_bstr();
SdkPoliza1->creaMovimiento(SdkMovimientoPoliza1);
ADOQuery2->Next();
SdkMovimientoPoliza1.Release();
}
return;
}
//---------------------------------------------------------------------------
|
_________________ [img]http://folding.extremeoverclocking.com/sigs/sigimage.php?un=snupoo&t=86565/sigimage.gif[/img]
A programar se aprende programando |
|
| Volver arriba |
|
 |
snupoo Lt Cmdr


Registrado: 19 Feb 2004Mensajes: 108Ubicación: Merida yucatan Mexico
|
Publicado: Mar 16 Jul, 2019 10:43 pm Asunto: |
|
|
Buscando me encontré con este articulo pero obtengo los mismos resultados.  _________________ [img]http://folding.extremeoverclocking.com/sigs/sigimage.php?un=snupoo&t=86565/sigimage.gif[/img]
A programar se aprende programando |
|
| Volver arriba |
|
 |
snupoo Lt Cmdr


Registrado: 19 Feb 2004Mensajes: 108Ubicación: Merida yucatan Mexico
|
Publicado: Mar 23 Jul, 2019 10:37 pm Asunto: |
|
|
Hola a todos.
Después de muchas vueltas y romperme la cabeza por fin me respondió el fabricante que es un erro de ellos con su SDK, por lo que no me queda mas que agradecerles su tiempo y esperar a que liberen el parche que corrige el problema.
Saludos. _________________ [img]http://folding.extremeoverclocking.com/sigs/sigimage.php?un=snupoo&t=86565/sigimage.gif[/img]
A programar se aprende programando |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|