Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-11-2019
Antonio Cardero Antonio Cardero is offline
Miembro
 
Registrado: ago 2007
Ubicación: Ciudad de la Habana, Cuba
Posts: 26
Poder: 0
Antonio Cardero Va por buen camino
Error al insertar artículos

Hola. ( moderador por favor quite el anterior tema, que me dío problemas la etiqueta delphi.)

Estoy trabajando con Delphi 10.2, dbExpress accediendo con lib de Mysql a una base de datos Maria DB. Servidor Apache (Versión del cliente de base de datos: libmysql - mysqlnd 5.0.12-dev - 20150407 - $Id:.) Tengo una tabla llamada Role, donde:

Código:
    id : es autoincrement,
    Nombre: es requerido.
Me conecto así: TSQLConnection->TSQLTable->TDataSetProvider->TClientDataSet->TDataSource.

Data controls y Action de control para Dataset.

Mi problema es que, haciendo la inserción de Roles desde Delphi, llenando solo el Nombre, me da error al hacer el post:

“Project Project2.exe raised exception class EDatabaseError with message 'Field 'id' must have a value'.”

El código del Post es el siguiente:

Código Delphi [-]
(sender as TDataSetAction).DataSource.DataSet.Post; 
if dsCteDSetRol.ApplyUpdates(0) > 0 then    
begin     
  dsCteDSetRol.CancelUpdates;  
end;

Se supone que el id, al ser autoincremento, de el se ocupe gestor de base.
Del id tengo el ProviderFlags[pfInKey], el provider: ResolveToDataSet:=True;

¿Cómo debo configurar, para poder adicionar?

De antemano muchas gracias.
Antonio
Responder Con Cita

Última edición por Casimiro Notevi fecha: 05-11-2019 a las 16:56:00.
Responder Con Cita
  #2  
Antiguo 05-11-2019
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Hola, El mensaje de error lo genera cuando el campo requiere que se le asigne un valor.

Puede que tengas el campo creado en el dataset, en este caso prueba a desmarcar la opción de required.
Puede que no esté creado en el dataset y esté asignando true automaticamente a esta opción al abrir el dataset y esto puede deberse a un not null en la tabla.

Te recomiendo nos muestres como está el dataset (Ctrl+C sobre el dataset, Ctrl+V en un editor de texto) y la estructura de la tabla para poderte dar una mejor guía.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #3  
Antiguo 05-11-2019
Antonio Cardero Antonio Cardero is offline
Miembro
 
Registrado: ago 2007
Ubicación: Ciudad de la Habana, Cuba
Posts: 26
Poder: 0
Antonio Cardero Va por buen camino
Gracias por la atención. Disculpa la Demora, movorack. Es que aquí hay Apagón Empresarial de 11 am a 1pm (Cuba).


Aquí está el diseño del clientedataset:


Código Delphi [-]
 

object dsCteDSetRol: TClientDataSet
  Active = True
  Aggregates = <>
  Params = <>
  ProviderName = 'dtstprvdr1'
  Left = 616
  Top = 536
  object intgrfldCteDSet1id: TIntegerField
    FieldName = 'id'
    ProviderFlags = [pfInKey, pfHidden]
  end
  object strngfldCteDSet1nombre: TStringField
    FieldName = 'nombre'
    Required = True
    Size = 255
  end
end




Ahora, como ves desmarqué el requerido del id; y en efecto no da error, pero al insertar el segundo, me da un error de : Key violation.
y comoo único puedo seguir insertanto es alternándolo con un Refres.



Y ahora qué será??
Responder Con Cita
  #4  
Antiguo 05-11-2019
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
No se. Puedes probar con la opción AutoApply en True?
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #5  
Antiguo 05-11-2019
Antonio Cardero Antonio Cardero is offline
Miembro
 
Registrado: ago 2007
Ubicación: Ciudad de la Habana, Cuba
Posts: 26
Poder: 0
Antonio Cardero Va por buen camino
Ok. probaré y le diré mañana.

Gracias
Responder Con Cita
  #6  
Antiguo 06-11-2019
Antonio Cardero Antonio Cardero is offline
Miembro
 
Registrado: ago 2007
Ubicación: Ciudad de la Habana, Cuba
Posts: 26
Poder: 0
Antonio Cardero Va por buen camino
Si, dio resultado resultado.



Ahora lo que abandonamos dbexpress y escogimos FireDAC, por estar mejor documentado, e hicimos prueba y es estable.


Saludos y gracias, que tengan buen día colegas.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
error al Insertar sidneyb SQL 3 10-03-2008 18:22:29
Error al insertar registro egostar Firebird e Interbase 22 07-07-2007 20:54:20
Error al Insertar con ADO trex2000 Conexión con bases de datos 1 18-01-2007 11:16:52
error al insertar beatriz g SQL 3 24-08-2006 10:29:33


La franja horaria es GMT +2. Ahora son las 01:31:49.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi