Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-07-2003
DaRkBoY DaRkBoY is offline
Miembro
 
Registrado: jun 2003
Posts: 22
Poder: 0
DaRkBoY Va por buen camino
Unhappy Problemas al ingresar datos

amigos:

Nuevamente acudo a ustedes para solicitar ayuda.

Tengo un problema al escribir datos en la DB. Revisé las tablas y estoy seguro que no es problema de ellas. Debe ser un problema con la comunicación o permisos del delphi a la base de datos. Puedo realizar consultas, lo que significa que tengo conexión con ella. ¿Me pueden orientar?
El error que me aparece es :

General SQL error.
[Oracle][ODBC][Ora]ORA-01722: número no válido


Pensé que era un problema de tipo de dato mal ingresado, longitud u otra cosa, pero están bien... No sé que será

Siempre agradecido


DaRk
Responder Con Cita
  #2  
Antiguo 07-07-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Seguramente estas comparando un campo o valor numérico con un varchar o algún tipo de dato diferente.
¿Porqué no nos pasas la consulta que te produce el error?
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 07-07-2003
DaRkBoY DaRkBoY is offline
Miembro
 
Registrado: jun 2003
Posts: 22
Poder: 0
DaRkBoY Va por buen camino
La cuestión está en que no es una consulta SQL directa, sino que es una modificación o ingreso que se realiza en un componente TEdit sacado haciendo doble click en la tabla y seleccionando las columnas. Son esos componentes que se ponen en los forms directamente del componente TTable. No se que ocurre.....
Responder Con Cita
  #4  
Antiguo 07-07-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
¿La tabla no tiene ningún Trigger?
¿Estás usando un TUpdateSQL?'
¿Utilizas campos persistentes? (Pueden estar desactualizados)
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo 07-07-2003
DaRkBoY DaRkBoY is offline
Miembro
 
Registrado: jun 2003
Posts: 22
Poder: 0
DaRkBoY Va por buen camino
Unhappy

La verdad es que no estoy familiarizado con esos componentes... Si pudieras guiarme un poco te lo agradecería.
Personalmente es primera vez que tengo contacto con Delphi aplicado a Oracle, y no onozco todo lo que tiene relacion con eso. Yo solo he usado TTable, TQuery, TDataBase, TDataSource y TDBGrid. Te agradezco la ayuda...
Responder Con Cita
  #6  
Antiguo 07-07-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Ok.. si te animas a enviarme un script para crear tu tabla, y los fuentes de ese Form, yo lo veo y te digo....


Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #7  
Antiguo 07-07-2003
DaRkBoY DaRkBoY is offline
Miembro
 
Registrado: jun 2003
Posts: 22
Poder: 0
DaRkBoY Va por buen camino
Te envío las características de la tabla...

CREATE TABLE RAMOS_MALLA
(RAMO_MALLA VARCHAR2(7),
NOM_RAMO VARCHAR2(50) NOT NULL,
CARRERA1 NUMBER(3) NOT NULL,
CARRERA2 NUMBER(3) NOT NULL,
SEMESTRE NUMBER(1) NOT NULL,
CREDITOS NUMBER(1) NOT NULL,
P_REQTO1 VARCHAR2(7),
P_REQTO2 VARCHAR2(7),
P_REQTO3 VARCHAR2(7),
CONSTRAINT PK_RAMO_MALLA PRIMARY KEY (RAMO_MALLA),
CONSTRAINT FK_CARRERA_1 FOREIGN KEY (CARRERA1) REFERENCES CARRERA(CARRERA),
CONSTRAINT FK_CARRERA_2 FOREIGN KEY (CARRERA2) REFERENCES CARRERA(CARRERA));








El código fuente del programa no te lo puedo enviar, porque trabaja con multiples forms y y los DataSource se refieren a tablas contenidas en otros forms...

Te sirve de algo???

Podrías asesorarme con lo de las Actualizaciones SQL y eso que escribiste antes???
Responder Con Cita
  #8  
Antiguo 07-07-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Ok... pasame solo el código del Form que tienes el DataSet.
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #9  
Antiguo 07-07-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
He probado esto, y funciona perfectamente

Unit1.pas
Código:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, DBCtrls, Db, StdCtrls, Mask, DBTables;

type
  TForm1 = class(TForm)
    Database1: TDatabase;
    Table1: TTable;
    Table1RAMO_MALLA: TStringField;
    Table1NOM_RAMO: TStringField;
    Table1CARRERA1: TFloatField;
    Table1CARRERA2: TFloatField;
    Table1SEMESTRE: TFloatField;
    Table1CREDITOS: TFloatField;
    Table1P_REQTO1: TStringField;
    Table1P_REQTO2: TStringField;
    Table1P_REQTO3: TStringField;
    Label1: TLabel;
    DBEdit1: TDBEdit;
    DataSource1: TDataSource;
    Label2: TLabel;
    DBEdit2: TDBEdit;
    Label3: TLabel;
    DBEdit3: TDBEdit;
    Label4: TLabel;
    DBEdit4: TDBEdit;
    Label5: TLabel;
    DBEdit5: TDBEdit;
    Label6: TLabel;
    DBEdit6: TDBEdit;
    Label7: TLabel;
    DBEdit7: TDBEdit;
    Label8: TLabel;
    DBEdit8: TDBEdit;
    Label9: TLabel;
    DBEdit9: TDBEdit;
    DBNavigator1: TDBNavigator;
  private
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

end.

Unit1.dfm
Código:
 
object Form1: TForm1
  Left = 207
  Top = 107
  Width = 696
  Height = 480
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Label1: TLabel
    Left = 80
    Top = 8
    Width = 73
    Height = 13
    Caption = 'RAMO_MALLA'
    FocusControl = DBEdit1
  end
  object Label2: TLabel
    Left = 80
    Top = 52
    Width = 63
    Height = 13
    Caption = 'NOM_RAMO'
    FocusControl = DBEdit2
  end
  object Label3: TLabel
    Left = 80
    Top = 96
    Width = 58
    Height = 13
    Caption = 'CARRERA1'
    FocusControl = DBEdit3
  end
  object Label4: TLabel
    Left = 80
    Top = 140
    Width = 58
    Height = 13
    Caption = 'CARRERA2'
    FocusControl = DBEdit4
  end
  object Label5: TLabel
    Left = 80
    Top = 184
    Width = 59
    Height = 13
    Caption = 'SEMESTRE'
    FocusControl = DBEdit5
  end
  object Label6: TLabel
    Left = 80
    Top = 228
    Width = 55
    Height = 13
    Caption = 'CREDITOS'
    FocusControl = DBEdit6
  end
  object Label7: TLabel
    Left = 80
    Top = 272
    Width = 57
    Height = 13
    Caption = 'P_REQTO1'
    FocusControl = DBEdit7
  end
  object Label8: TLabel
    Left = 80
    Top = 316
    Width = 57
    Height = 13
    Caption = 'P_REQTO2'
    FocusControl = DBEdit8
  end
  object Label9: TLabel
    Left = 80
    Top = 360
    Width = 57
    Height = 13
    Caption = 'P_REQTO3'
    FocusControl = DBEdit9
  end
  object DBEdit1: TDBEdit
    Left = 80
    Top = 24
    Width = 46
    Height = 21
    DataField = 'RAMO_MALLA'
    DataSource = DataSource1
    TabOrder = 0
  end
  object DBEdit2: TDBEdit
    Left = 80
    Top = 68
    Width = 304
    Height = 21
    DataField = 'NOM_RAMO'
    DataSource = DataSource1
    TabOrder = 1
  end
  object DBEdit3: TDBEdit
    Left = 80
    Top = 112
    Width = 64
    Height = 21
    DataField = 'CARRERA1'
    DataSource = DataSource1
    TabOrder = 2
  end
  object DBEdit4: TDBEdit
    Left = 80
    Top = 156
    Width = 64
    Height = 21
    DataField = 'CARRERA2'
    DataSource = DataSource1
    TabOrder = 3
  end
  object DBEdit5: TDBEdit
    Left = 80
    Top = 200
    Width = 64
    Height = 21
    DataField = 'SEMESTRE'
    DataSource = DataSource1
    TabOrder = 4
  end
  object DBEdit6: TDBEdit
    Left = 80
    Top = 244
    Width = 64
    Height = 21
    DataField = 'CREDITOS'
    DataSource = DataSource1
    TabOrder = 5
  end
  object DBEdit7: TDBEdit
    Left = 80
    Top = 288
    Width = 46
    Height = 21
    DataField = 'P_REQTO1'
    DataSource = DataSource1
    TabOrder = 6
  end
  object DBEdit8: TDBEdit
    Left = 80
    Top = 332
    Width = 46
    Height = 21
    DataField = 'P_REQTO2'
    DataSource = DataSource1
    TabOrder = 7
  end
  object DBEdit9: TDBEdit
    Left = 80
    Top = 376
    Width = 46
    Height = 21
    DataField = 'P_REQTO3'
    DataSource = DataSource1
    TabOrder = 8
  end
  object DBNavigator1: TDBNavigator
    Left = 364
    Top = 12
    Width = 240
    Height = 25
    DataSource = DataSource1
    TabOrder = 9
  end
  object Database1: TDatabase
    AliasName = 'MIDSN'
    Connected = True
    DatabaseName = 'XXX'
    LoginPrompt = False
    Params.Strings = (
      'USER NAME=MIUSUARIO'
      'PASSWORD=MIPASWORD')
    SessionName = 'Default'
    Left = 8
    Top = 12
  end
  object Table1: TTable
    Active = True
    DatabaseName = 'XXX'
    TableName = 'RAMOS_MALLA'
    Left = 36
    Top = 12
    object Table1RAMO_MALLA: TStringField
      FieldName = 'RAMO_MALLA'
      Required = True
      Size = 7
    end
    object Table1NOM_RAMO: TStringField
      FieldName = 'NOM_RAMO'
      Required = True
      Size = 50
    end
    object Table1CARRERA1: TFloatField
      FieldName = 'CARRERA1'
      Required = True
    end
    object Table1CARRERA2: TFloatField
      FieldName = 'CARRERA2'
      Required = True
    end
    object Table1SEMESTRE: TFloatField
      FieldName = 'SEMESTRE'
      Required = True
    end
    object Table1CREDITOS: TFloatField
      FieldName = 'CREDITOS'
      Required = True
    end
    object Table1P_REQTO1: TStringField
      FieldName = 'P_REQTO1'
      Size = 7
    end
    object Table1P_REQTO2: TStringField
      FieldName = 'P_REQTO2'
      Size = 7
    end
    object Table1P_REQTO3: TStringField
      FieldName = 'P_REQTO3'
      Size = 7
    end
  end
  object DataSource1: TDataSource
    DataSet = Table1
    Left = 156
    Top = 164
  end
end
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #10  
Antiguo 07-07-2003
DaRkBoY DaRkBoY is offline
Miembro
 
Registrado: jun 2003
Posts: 22
Poder: 0
DaRkBoY Va por buen camino
Sabes que estoy usando lo que me enviaste, pero igual me envia un error.... el mismo... para poder modificar o ingresar los datos. No tengo idea que está pasando....
La propiedad Active de TTable debe estar en true para poder modificar ¿verdad?

Responder Con Cita
  #11  
Antiguo 07-07-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Si, pero tu no tienes ese problema, ya que el error que informaste es un ORA-01722, que es un error del servidor, por lo tanto estas conectado.
Repito una Pregunta: ¿Tienes Triggers en la tabla?
Agrego: ¿Alguna Constraint del tipo Check?
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #12  
Antiguo 07-07-2003
DaRkBoY DaRkBoY is offline
Miembro
 
Registrado: jun 2003
Posts: 22
Poder: 0
DaRkBoY Va por buen camino
La tabla está definida como te lo escribí anteriormente. Los unicos constraint son las llaves primarias y foraneas. Acerca de triggers, no se... Todas las tablas están definidas tan simples como la que te presenté..
Responder Con Cita
  #13  
Antiguo 07-07-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Te puedo recomendar utilizar estas consultas, para ver si tienes un trigger/check:
Código:
SELECT *
FROM SYS.USER_TRIGGERS
WHERE TABLE_NAME = 'RAMOS_MALLA'
Código:
 
SELECT *
FROM SYS.USER_CONSTRAINTS
WHERE TABLE_NAME = 'RAMOS_MALLA'
AND CONSTRAINT_TYPE = 'C'
¿Qué versión de Delphi y Oracle utilizas?'
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #14  
Antiguo 07-07-2003
DaRkBoY DaRkBoY is offline
Miembro
 
Registrado: jun 2003
Posts: 22
Poder: 0
DaRkBoY Va por buen camino
Uso Delphi 6 y Oracle 9i

los triggers me devolvieron:


ninguna fila seleccionada





Los constriants:

OWNER CONSTRAINT_NAME C
------------------------------ ------------------------------ -
TABLE_NAME
------------------------------
SEARCH_CONDITION
--------------------------------------------------------------------------------
R_OWNER R_CONSTRAINT_NAME DELETE_RU STATUS
------------------------------ ------------------------------ --------- --------
DEFERRABLE DEFERRED VALIDATED GENERATED BAD RELY LAST_CHA
-------------- --------- ------------- -------------- --- ---- --------
INDEX_OWNER INDEX_NAME INVALID
------------------------------ ------------------------------ -------
VIEW_RELATED
--------------
ADMINISTRADOR SYS_C002747 C
RAMOS_MALLA
"NOM_RAMO" IS NOT NULL
NOT DEFERRABLE IMMEDIATE VALIDATED GENERATED NAME 05/06/03



ADMINISTRADOR SYS_C002748 C
RAMOS_MALLA
"CARRERA1" IS NOT NULL
NOT DEFERRABLE IMMEDIATE VALIDATED GENERATED NAME 05/06/03



ADMINISTRADOR SYS_C002750 C
RAMOS_MALLA
"SEMESTRE" IS NOT NULL
NOT DEFERRABLE IMMEDIATE VALIDATED GENERATED NAME 05/06/03



ADMINISTRADOR SYS_C002751 C
RAMOS_MALLA
"CREDITOS" IS NOT NULL
NOT DEFERRABLE IMMEDIATE VALIDATED GENERATED NAME 05/06/03
Responder Con Cita
  #15  
Antiguo 07-07-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Ok... Acabo de probar el código que te envié anteriormente en Delphi 6, y funciona bárbaro.
Ahora, estas seguro que el error se produce al guardar los datos, probaste en un EXE nuevo sin nada extra el código que te envié?
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #16  
Antiguo 07-07-2003
DaRkBoY DaRkBoY is offline
Miembro
 
Registrado: jun 2003
Posts: 22
Poder: 0
DaRkBoY Va por buen camino
Debo cambiarle el alias name al TDataBase.
Le pondré el nombre del alias que uso...
Le pondré el user name y el password...


Contruiré el poyecto...



y....


El mismo error.... WAAAAAA!!!!!!!



Solo modifiqué un valor...
Ojo que me pasó cuando modifiqué el valor de creditos (cambié 6 por 7) pero cuando edité el valor del ramo no hizo problema....

(Haré una subrutina de suicidio )
Responder Con Cita
  #17  
Antiguo 08-07-2003
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cool

Y porque no das un vistazo con el SQL Explorer para ver que sentencias está generando. Quizas hay algún lio con el tipo de datos que el bde interpreta de tu estructura.

Como consejo, si pensas hacer sistemas exclusivos para oracle, será mejor que busques otros componentes de acceso nativo (ncOCI8 por ejemplo), pues suele ir mucho mejor y no hay esta serie de complicaciones del BDE, que parece que fue "chapuseado" para soportar Oracle.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #18  
Antiguo 08-07-2003
DaRkBoY DaRkBoY is offline
Miembro
 
Registrado: jun 2003
Posts: 22
Poder: 0
DaRkBoY Va por buen camino
Por el momento cambiaré a generar SQL por lineas de código.

Bajaré el ncOCI8 para analizarlo....

Muchas gracias....
Responder Con Cita
  #19  
Antiguo 08-07-2003
DaRkBoY DaRkBoY is offline
Miembro
 
Registrado: jun 2003
Posts: 22
Poder: 0
DaRkBoY Va por buen camino
Amigos:

Me acabo de percatar de una cosa....

Los datos que no me permiten ser modificados son lo numéricos, los Varchar lo hacen sin problemas, pero el error aparece cuando lo hago con datos numéricos...

Sigo estudiando el problema. ¿Se les ocurre que puede ser?
Responder Con Cita
  #20  
Antiguo 08-07-2003
DaRkBoY DaRkBoY is offline
Miembro
 
Registrado: jun 2003
Posts: 22
Poder: 0
DaRkBoY Va por buen camino
Ya:

El problema está localizado... eso creo...

Con tipos de datos number no tengo problema, solo si se definen como NUMBER(Nº)...

En:

Tabla.FieldDefs tengo como tipo Float, pero solo lo acepta para NUMBER y no NUMBER(Nº)...

¿Hay que definirlo como Integer u otro????
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


La franja horaria es GMT +2. Ahora son las 01:16:17.


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