insertar datos en otra tabla

Hola, quiero poder guardar unos datos desde un formulario.

Tengo tres tablas (cliente, ventas, historial):
Cliente (id_cliente, nombre, seccion)
Ventas (id_venta, producto, precio, id_cliente)
historial (id_venta, seccion)

en el formulario lleno los campos de la tabla venta mas el id del cliente, pero quiero poder guardar en la tabla historial con un onAfterInsert el id_venta (Ventas) y seccion (tabla cliente) pero no me resulta

help!!!

Alli en ese evento debe funcionar, cuentanos como estas haciendo la inserccion?

Si es en el onafterinsert, recuerda que ah? ya no tienes informaci?n sobre los campos del form, por lo que si haces un {id} para la foranea no funcionara.

Peganos el c?digo del evento que le echemos un vistazo

me funciona solo con el id_venta, pero no trae seccion de la otra tabla. Inserto el codigo

$sec=“SELECT seccion from cliente WHERE ‘{id_cliente}’=personal.id_cliente”;

// SQL statement parameters
$insert_table = ‘historial’; // Table name
$insert_fields = array( // Field list, add as many as needed
‘id_venta’ => “’{id_venta}’”,
‘seccion’ =>"$sec"
);

// Insert record
$insert_sql = ‘INSERT INTO ’ . $insert_table
. ’ (’ . implode(’, ‘, array_keys($insert_fields)) . ‘)’
. ’ VALUES (’ . implode(’, ', array_values($insert_fields)) . ‘)’;

sc_exec_sql($insert_sql);

Pero si chequeas los sql los genera bien?

En el beforeinsert haz [glo_cliente] = {id_cliente};
En globales define cliente como salida. En afterinsert usa glo_cliente en vez del campo

El error que tiene es que est? asignando a la variable $sec una cadena: $sec=“SELECT seccion from cliente WHERE ‘{id_cliente}’=personal.id_cliente”;
y NO el INTO de la sentencia sql, alli tiener que hacer la consulta correcta a traves de la macro de Scriptcase. para asignarle a la variable el valor correcto a $sec.

[QUOTE=alvagar;38556]El error que tiene es que est? asignando a la variable $sec una cadena: $sec=“SELECT seccion from cliente WHERE ‘{id_cliente}’=personal.id_cliente”;
y NO el INTO de la sentencia sql, alli tiener que hacer la consulta correcta a traves de la macro de Scriptcase. para asignarle a la variable el valor correcto a $sec.[/QUOTE]

Bien cazado, no me d? cuenta, estaba ofuscado con el SELECT inicial jejeje

lo trate de hacer pero no captura el dato de la otra tabla Cliente, la idea es buscar la seccion de acuerdo al id_cliente y luego insertarla en la tabla historial id_venta y seccion.

cual seria la macro?

ya lo logre!!!:cool:
lo primero utilice la macro de seleccionar campo de otra tabla y luego la macro de insertar registro en otra tabla y funciona de pelos!!

Gracias por la ayuda.

Buen d?a yo tengo un problema parecido, en el c?digo que anexo me logra hacer la consulta por ambas condiciones y me hace la inserci?n del registro pero solo es un registro el que inserta, lo que necesito es pasar todos los registros que cumplan con ambas condiciones pero solo pasa uno, me pueden ayudar? de ante mano les agradezco su tiempo y conocimiento, saludos!

//===============================================================
$check_sql = “SELECT cp.IdCursosPromocion, ct.IdCurso, ct.IdContenidoTematico”
. " FROM cursos_promocion as cp, contenidotematico as ct"
. " WHERE cp.IdCursosPromocion = ‘" . {IdCursosPromocion} . "’ and ct.IdCurso = ‘" . {NombreCurso} . "’";
sc_lookup(rs, $check_sql);

if (isset({rs[0][0]})) // Row found
{
$IdCursosPromocion = {rs[0][0]};
$IdCurso = {rs[0][1]};
$IdContenidoTematico = {rs[0][2]};
}
else // No row found
{
sc_error_message = ‘No hay contenido tem?tico disponible’;
}

// SQL statement parameters
$insert_table = ‘fecha_aplicacion’; // Table name
$insert_fields = array( // Field list, add as many as needed
‘IdCursosPromocion’ => “’$IdCursosPromocion’”,
‘IdCurso’ => “’$IdCurso’”,
‘IdContenidoTematico’ => “’$IdContenidoTematico’”,
);

// Insert record
$insert_sql = ‘INSERT INTO ’ . $insert_table
. ’ (’ . implode(’, ‘, array_keys($insert_fields)) . ‘)’
. ’ VALUES (’ . implode(’, ', array_values($insert_fields)) . ‘)’;

sc_exec_sql($insert_sql);

//===============================================================

Si algui?n esta buscando el c?digo para buscar registros de una tabla y pasarlos a otra tabla aqu? les dejo el c?digo en scriptcase:
A mi me funciono de esta manera:

//=====================================================================
//Buscar los registros de la tabla de “contenidotematico”, insertarlos
//en la tabla “fecha_aplicacion” para poder anexar la fecha de aplicaci?n
//o de evaluaci?n

//Consulta para obtener los registros y guardarlos en variables
$check_sql = ‘SELECT cp.IdCursosPromocion, ct.IdCurso, ct.IdContenidoTematico’
. ’ FROM cursos_promocion as cp, contenidotematico as ct’
. " WHERE cp.IdCursosPromocion = ‘" . {IdCursosPromocion} . "’ and ct.IdCurso = ‘" . {NombreCurso} . "’";

sc_select(rs, $check_sql);
if (false == {rs}) // Error while accessing database
{
sc_error_message(‘Error while accessing database.’);
}
else
{
while(!$rs->EOF)
{
//Almacenar los registros en las variables
$IdCursosPromocion = $rs->fields[0];
$IdCurso = $rs->fields[1];
$IdContenidoTematico = $rs->fields[2];

//Parametros de la consulta en SQL para la inserci?n de registros
$insert_table = ‘fecha_aplicacion’; // Table name
$insert_fields = array( // Field list, add as many as needed
‘IdCursosPromocion’ => “’$IdCursosPromocion’”,
‘IdCurso’ => “’$IdCurso’”,
‘IdContenidoTematico’ => “’$IdContenidoTematico’”,
);

//Ejecuci?n de la consulta en SQL
$insert_sql = ‘INSERT INTO ’ . $insert_table
. ’ (’ . implode(’, ‘, array_keys($insert_fields)) . ‘)’
. ’ VALUES (’ . implode(’, ', array_values($insert_fields)) . ‘)’;
sc_exec_sql($insert_sql);
$rs->MoveNext();
}
$rs->Close();
}

Hola, puedes enviar el código que te funciono porfa, gracias.