Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-12-2006
Saltamontes Saltamontes is offline
Registrado
 
Registrado: dic 2006
Posts: 6
Poder: 0
Saltamontes Va por buen camino
Como inserto valores de varias tuplas en un Query???

Uso Delphi 7 y Zeos Access 6.5.1 Apha y MySQL Server5, Query Browser 1.1.20.

Estoy tratando de guardar de un solo golpe valores de varios capos de una forma a una tabla de SQL, son datos para 6 tupas quiero hacer algo asi:
INSERT INTO table2 VALUES('id1','text','text'),
('id2','text','text'),
('id2','text','text');

y le intente de esta manera:
DM.ZQ_Materias.Close;
DM.ZQ_Materias.SQL.Clear;
DM.ZQ_Materias.SQL.Add('insert into materias');
DM.ZQ_Materias.SQL.Add('VALUES(' " ' + clave1.Text + ',' + DBLCBox_Especialidad.KeyValue + ',' + materia1.Text + ',' + StrToInt(c1.Text) + ' " '),
(' + clave2.Text + ',' + DBLCBox_Especialidad.KeyValue + ',' + materia2.Text + ',' + StrToInt(c2.Text) + '),
(' + clave3.Text + ',' + DBLCBox_Especialidad.KeyValue + ',' + materia3.Text + ',' + StrToInt(c3.Text) + '),
(' + clave4.Text + ',' + DBLCBox_Especialidad.KeyValue + ',' + materia4.Text + ',' + StrToInt(c4.Text) + '),
(' + clave5.Text + ',' + DBLCBox_Especialidad.KeyValue + ',' + materia5.Text + ',' + StrToInt(c5.Text) + '),
(' + clave6.Text + ',' + DBLCBox_Especialidad.KeyValue + ',' + materia6.Text + ',' + StrToInt(c6.Text) + ')
');
DM.ZQ_Materias.ExecSQL;
DM.ZQ_Materias.Open;

Es la primera vez que intento hacer esto, siempre habia insertado datos a una tupla, y ya busque ayuda pero me quede igual,
incluso baje el manual de SQL y he checado paginas de internet.

Les agradezco su ayuda de antemano.
Sales pues
Responder Con Cita
  #2  
Antiguo 15-12-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pero olvidaste mencionar cuál es el problema. Visto por encima, me parece que ni siquiera compila

Código Delphi [-]
DM.ZQ_Materias.SQL.Add('VALUES(' " ' + clave1.Text + ',' + DBLCBox_Especialidad.KeyValue + ',' + materia1.Text + ',' + StrToInt(c1.Text) + ' " '),

El mismo resaltado desintaxis te lo indica.

// Saludos
Responder Con Cita
  #3  
Antiguo 15-12-2006
Saltamontes Saltamontes is offline
Registrado
 
Registrado: dic 2006
Posts: 6
Poder: 0
Saltamontes Va por buen camino
Pos de hecho asi es, no le encuetro el error y me dice que o falta cerrar la cadena, o los " " no estan colocados adecuadamente o se esperaba (END) y se encontro ,.

Ya le estuve probando como dos horas seguidas y no encuentro que me falla, por eso copie el codigo de lo que habia probado.
Es lo que me marca:
[Hint] Value assigned to 'no_cuatrim' never used
[Error] Illegal character in input file: '"' ($22)
[Error] Too many actual parameters
[Error] Too many actual parameters
[Error] Too many actual parameters
[Error] Illegal character in input file: '"' ($22)
[Error] Missing operator or semicolon
[Error] Too many actual parameters
[Error] ')' expected but ',' found
[Error] Too many actual parameters
[Error] Too many actual parameters
[Error] 'END' expected but ',' found
[Error] Unterminated string
[Error] '.' expected but ';' found
[Fatal Error] CURTV.dpr Could not compile used unit 'FRM_AgreMat.pas'

Les agradeceria si me ayudan con un ejemplo del orden en que deben ir los " " y ' ' para delimitar bien las ordenes, ya que solo habia usado algo como SQL.Add(' where id_especialidad = " ' + txt_clave_esp.Text + ' " ');

Y otra vez, gracias
Responder Con Cita
  #4  
Antiguo 15-12-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pues lo primero es usar ' para las cadenas en Delphi y " para las cadenas en SQL. Pero es incluso mejor usar la función QuotedStr, que si bien alarga el código, lo aclara bastante. Por ejemplo, en lugar de poner

Código Delphi [-]
'where id_especialidad = "' + txt_clave_esp.Text + '"'

poner

Código Delphi [-]
'where id_especialidad = ' + QuotedStr(txt_clave_esp.Text)

La función QuotedStr se encargará de colocar las " alrededor del texto.

Mejor aún sería usar parámetros:

Código Delphi [-]
'where id_especialidad = :EspecialidadId'

y sustituirlos al momento de lanzar la consulta:

Código Delphi [-]
ZQ_Materias.ParamByName('EspecialidadId').AsString := txt_clave_esp.Text;

Si no puedes usar parámetros, por ejemplo porque no sepas de antemano cuantas líneas vasa insertar, podrías, por lo menos usar Format:

Código Delphi [-]
Format('where id_especialidad = %s', [QuotedStr(txt_clave_esp.Text)]);

En fin, que hay varias opciones, pero lo esencial es no intentar construir la cadena de un sólo golpe porque puede uno volverse loco.

// Saludos
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
como inserto un SubMenu? lpaburto Varios 1 14-10-2005 16:49:07
como inserto una imagen karlita_cb SQL 2 07-03-2005 22:45:10
¿Cómo inserto, mediante un query, un registro en paradox con un campo autoincrement? molarte Tablas planas 2 18-11-2004 17:27:30
Como modificar valores desde un dbgrid q esta asociado a un QUERY? fmonte SQL 12 26-08-2004 22:25:22
¿Como inserto una imagen en un texto? Adrix Gráficos 5 02-09-2003 00:00:21


La franja horaria es GMT +2. Ahora son las 09:32:08.


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