PDA

Ver la Versión Completa : EOleException???


carmelina
18-06-2008, 18:00:02
Hola a todos!!!!

Tengo un problema y no se como resolverlo, la cosa es que tengo una conexion a una base de datos mysql. Utilizo los componentes Query y Tabla pero me da un error:

"Project Project1.exe raised exception class EOleException with message 'Argumentos incorrectos fuera del intervalo permitido o en conflicto con otros'. Proceso stopped. Use Step or Run to Continue"

Y no se porque puede ser. Voy a adjuntaros el código por si veis que es lo que hago mal.

procedure InsertarEnTabla(nombrevideo : String; Tabla : TADOTable; Query1 : TADOQuery);
var
fech : String;
begin
Tabla.Insert;
fech:=GetLocalT;
Query1.SQL.Add('INSERT INTO misvideos VALUES (:fecha, :nombrevideo, :ruta)');
Query1.Parameters.ParamByName('fecha').value:=StrToDate(fech);
Query1.Parameters.ParamByName('nombrevideo').value:=nombrevideo;
Query1.Parameters.ParamByName('ruta').value:='c:\videos';
Query1.ExecSQL;
end;
procedure Insertar(nombrevideo : String; Tabla : TADOTable; Query1 : TADOQuery);
begin
If Tabla.Active then
begin
nombrevideo:=form2.SaveDialog1.FileName;
InsertarEnTabla(nombrevideo,Tabla,Query1);
end
Else
begin
Tabla.open;
nombrevideo:=form2.SaveDialog1.FileName;
InsertarEnTabla(nombrevideo,Tabla,Query1);
end;
end;

procedure TForm1.ControlClick(Sender: TObject);
begin
If Control.Caption='Abrir' then
begin
OK:=True;
Control.Caption:='Cerrar';
Tabla.open;
Insertar(nombrevideo,Tabla,Query1);
end
Else
begin
Control.Caption:='Abrir';
Tabla.Close;
end;
end;

Cuando da el fallo, me señala la linea:InsertarEnTabla(nombrevideo,Tabla,Query1);

El codigo tiene más lineas pero yo creo que el problema está en esta parte que os he puesto.


La cosa es que si cada vez que me sale el error, le doy a run y al final si me termina insertando los datos bien, pero no se porque sale el error ni como quitarlo.

Si pudieseis ayudarme os lo agradecería.

Un saludo y gracias de antemano.

enecumene
18-06-2008, 18:06:30
Hola, cambia esta linea:

fech:=GetLocalT;

Por

fech:= DateToStr(Date);

Luego me comentas.

Saludos.

carmelina
18-06-2008, 18:18:08
Hola,
Lo acabo de probar pero me sigue saliendo el mismo error. Podría ser algo del query y la tabla????O por Query1.Parameters.ParamByName().value????

Gracias de todos modos:-)

Delphius
18-06-2008, 18:44:33
Hola carmelina,
No se cual puede ser el cuasante del error, prueba poniendo puntos de interrupción y haciendo paso a paso con F7 y F8 para descubrir cual de todas las líneas de el código es la que te produce el error.

Si dices que el código es mayor todavía, y de que el error está en InsertarEnTabla habrá que ver en que parte de todo el código es lo que falla.

Por otro lado, en vez de emplear las etiquetas CODE sería mejor que usas la etiqueta DELPHI.

Saludos,

carmelina
18-06-2008, 18:57:37
Hola Delphius;

OK!!La proxima vez usaré la etiqueta Delphi.
Un pregunta: cómo se ponen los puntos de interrupcion?m podias poner un ejemplo??Gracias

Saludos

Delphius
18-06-2008, 19:32:37
Hola Delphius;

OK!!La proxima vez usaré la etiqueta Delphi.
Un pregunta: cómo se ponen los puntos de interrupcion?m podias poner un ejemplo??Gracias

Saludos
La forma más directa y fácil es hacer clic sobre el costado o margen gris de la página del código a la altura de la línea en donde deseas poner un punto de interrupción. Con otro clic lo quitas.

Otra manera es ubicarte en la línea y presionar F5. Una tercera, con el botón secundario: Debug -> Toggle breackpoint.

Una vez que hayas puesto el punto de interrupción presiona en RUN y se detendrá en cuanto llegue al punto. De allí en adelante prosigue con F7 para ir linea por linea, y/o con F8 para ir de un "bloque" a otro.

Saludos,

carmelina
18-06-2008, 19:35:04
Muchas gracias Delphius:-)

Caro
19-06-2008, 14:04:43
Hola carmelina, yo creo que el error debe ser por la primera linea de tu procedimiento InsertarEnTabla "Tabla.Insert", para insertar debes utilizar o un Query o una Table, pero no ambos.

Saluditos

tcp_ip_es
26-06-2008, 08:29:37
Intenta cambiar los parambyname.value por su correspondiente tipo.

Query1.Parameters.ParamByName('fecha').asdatetime;
Query1.Parameters.ParamByName('nombrevideo').asstring:=nombrevideo;
Query1.Parameters.ParamByName('ruta').asstring:='c:\videos';


A parte como dice Caro, no hace falta que pongas un Table.insert si luego insertas el registro mediante un tquery.

Saludos, Tony