In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Campo Autoincremental en Sql

Foro de Xailer profesional en español
Responder
Avatar de Usuario
gerencia
Mensajes: 282
Registrado: Sab Jun 20, 2009 6:01 pm

Campo Autoincremental en Sql

Mensaje por gerencia »

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body bgcolor="#ffffff" text="#000066">
<font size="-1"><font face="Verdana">Tengo un Campo Autoincremental
llave Primaria definido en una tabla de Sql <br>
<br>
Â[Row_ID] int IDENTITY(1, 1) NOT NULL<br>
<br>
Para facilidad manejo un TMemDataset exactamente igual al Dataset de la
tabla.<br>
En el momento de Grabar uso el metodo SaveFrom(:oMemDataSet), resulta
que SQL se queja por el Campo ROW_ID, como hacer para evitar que los
campos Autoincremental <big>NO</big> se incluyan dentro del grabado o
que el metodo Save() lo ignore ?<br>
<br>
En Mysql no existe este problema si le mando al campo ROW_ID el valor
cero lo ignora y graba correctamente el numero siguiente disponible.<br>
<br>
<br>
</font></font>
<div class="moz-signature">-- <br>
<meta http-equiv="CONTENT-TYPE" content="text/html; ">
<title>Josà David Angulo</title>
<meta name="GENERATOR" content="OpenOffice.org 2.0 (Win32)">
<meta name="CREATED" content="20061023;14550935">
<meta name="CHANGEDBY" content="Jose Angulo">
<meta name="CHANGED" content="20061023;14593800">
<meta name="ProgId" content="Word.Document">
<meta name="Originator" content="Microsoft Word 9">
<style>
<!--
P { color: #000000 }
-->
</style>
<p style="margin-bottom: 0cm;"><font size="2"><span
style="background: transparent none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><b><font
face="Century Gothic"><font color="#000080">JosÃ
David Angulo.</font></font></b></span><font face="Arial"><font
color="#0000ff"><br>
</font></font></font><font face="Arial"><font color="#0000ff"><b><font
style="font-size: 11pt;" size="2">A<span lang="en-GB">uditorÃa
y Sistemas Ltda. </span></font></b><br>
<font style="font-size: 8pt;" size="1">Tel.</font></font></font><font
size="1"><font face="Century Gothic"><font color="#808080">(57)
5- 6643022 – 6644555</font></font></font></p>
<p style="margin-bottom: 0cm;"><font size="1"><font
face="Century Gothic"><font color="#808080">Cartagena - Colombia</font></font></font><br>
<a href="mailto:Gerencia@microexpressltda.com"><font
style="font-size: 9pt;" size="2">jose.angulo@auditoriaysistemas.com</font></a></p>
<p style="margin-bottom: 0cm;"><br>
</p>
</div>
</body>
</html>
Jose David Angulo Urzola
Auditoria y Sistemas Ltda.
Cartagena-Colombia
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Campo Autoincremental en Sql

Mensaje por ignacio »

José David AnguloJosé David,
Prueba con oDataField:OnSetValue := {|| NIL }
Saludos
--
Ignacio Ortiz de Zúñiga
[Soporte Xailer]
[Xailer support]
"José David Angulo" <gerencia@microexpressltda.com> escribió en el mensaje news:48ee0cd5$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
Tengo un Campo Autoincremental llave Primaria definido en una tabla de Sql
[Row_ID] int IDENTITY(1, 1) NOT NULL
Para facilidad manejo un TMemDataset exactamente igual al Dataset de la tabla.
En el momento de Grabar uso el metodo SaveFrom(:oMemDataSet), resulta que SQL se queja por el Campo ROW_ID, como hacer para evitar que los campos Autoincremental NO se incluyan dentro del grabado o que el metodo Save() lo ignore ?
En Mysql no existe este problema si le mando al campo ROW_ID el valor cero lo ignora y graba correctamente el numero siguiente disponible.
--
José David Angulo.
Auditorí­a y Sistemas Ltda.
Tel.(57) 5- 6643022 - 6644555
Cartagena - Colombia
jose.angulo@auditoriaysistemas.com
--
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Campo Autoincremental en Sql

Mensaje por ignacio »

José David AnguloJosé David,
Me temo que no va a funcionar. Hay que cambiar lo siguiente en la clase TDataSet.
//---------------------------------------------------------- ----------------
METHOD SaveFrom( oData ) CLASS XDataSet
LOCAL oTargetField, oSourceField
LOCAL cField
LOCAL nFor, nlen
IF oData:IsKindOf( "TDataSet" )
nLen := Len( oData:aFields )
FOR nFor := 1 TO nLen
oSourceField := oData:aFields[ nFor ]
oTargetField := ::oFieldByName( oSourceField:cName )
IF oTargetField != Nil
oTargetField:VarPut( oSourceField:FieldGet() )
>>>>> oTargetField:SetValue( oSourceField:FieldGet() )
ENDIF
NEXT
ELSE // oRecord
nLen := oData:Len()
FOR nFor := 1 TO nLen
cField := oData:GetName( nFor )
oTargetField := ::oFieldByName( cField )
IF oTargetField != Nil
oTargetField:VarPut( oData:GetValue( nFor ) )
>>>>> oTargetField:SetValuet( oData:GetValue( nFor ) )
ENDIF
NEXT
ENDIF
RETURN Nil
Además es mucho más correcto definir así­ el evento:
oDataField:OnSetValue := {| Value | Value }
Espero que te funcione.
Un saludo
--
Ignacio Ortiz de Zúñiga
[Soporte Xailer]
[Xailer support]
"Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje news:48ee8fc6$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
José David,
Prueba con oDataField:OnSetValue := {|| NIL }
Saludos
--
Ignacio Ortiz de Zúñiga
[Soporte Xailer]
[Xailer support]
"José David Angulo" <gerencia@microexpressltda.com> escribió en el mensaje news:48ee0cd5$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
Tengo un Campo Autoincremental llave Primaria definido en una tabla de Sql
[Row_ID] int IDENTITY(1, 1) NOT NULL
Para facilidad manejo un TMemDataset exactamente igual al Dataset de la tabla.
En el momento de Grabar uso el metodo SaveFrom(:oMemDataSet), resulta que SQL se queja por el Campo ROW_ID, como hacer para evitar que los campos Autoincremental NO se incluyan dentro del grabado o que el metodo Save() lo ignore ?
En Mysql no existe este problema si le mando al campo ROW_ID el valor cero lo ignora y graba correctamente el numero siguiente disponible.
--
José David Angulo.
Auditorí­a y Sistemas Ltda.
Tel.(57) 5- 6643022 - 6644555
Cartagena - Colombia
jose.angulo@auditoriaysistemas.com
--
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
movil
Mensajes: 46
Registrado: Vie Mar 09, 2007 1:12 pm

Campo Autoincremental en Sql

Mensaje por movil »

Pruebo y te comento.
Mil gracias
--
*José David Angulo.*
*Auditorí­a y Sistemas Ltda. *
Cartagena - Colombia
Ignacio Ortiz de Zúñiga escribió:
> José David,
>
> Me temo que no va a funcionar. Hay que cambiar lo siguiente en la
> clase TDataSet.
>
> //---------------------------------------------------------- ----------------
>
> METHOD SaveFrom( oData ) CLASS XDataSet
>
> LOCAL oTargetField, oSourceField
> LOCAL cField
> LOCAL nFor, nlen
>
> IF oData:IsKindOf( "TDataSet" )
> nLen := Len( oData:aFields )
> FOR nFor := 1 TO nLen
> oSourceField := oData:aFields[ nFor ]
> oTargetField := ::oFieldByName( oSourceField:cName )
> IF oTargetField != Nil
> oTargetField:VarPut( oSourceField:FieldGet() )
> >>>>> oTargetField:SetValue( oSourceField:FieldGet() )
> ENDIF
> NEXT
> ELSE // oRecord
> nLen := oData:Len()
> FOR nFor := 1 TO nLen
> cField := oData:GetName( nFor )
> oTargetField := ::oFieldByName( cField )
> IF oTargetField != Nil
> oTargetField:VarPut( oData:GetValue( nFor ) )
> >>>>> oTargetField:SetValuet( oData:GetValue( nFor ) )
> ENDIF
> NEXT
> ENDIF
>
> RETURN Nil
>
> Además es mucho más correcto definir así­ el evento:
>
> oDataField:OnSetValue := {| Value | Value }
>
> Espero que te funcione.
> Un saludo
>
> --
> Ignacio Ortiz de Zúñiga
> [Soporte Xailer]
> [Xailer support]
>
>
>
> "Ignacio Ortiz de Zúñiga" <NoName@xailer.com
> <mailto:NoName@xailer.com>> escribió en el mensaje
> news:48ee8fc6$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> José David,
>
> Prueba con oDataField:OnSetValue := {|| NIL }
>
> Saludos
>
> --
> Ignacio Ortiz de Zúñiga
> [Soporte Xailer]
> [Xailer support]
>
>
>
> "José David Angulo" <gerencia@microexpressltda.com
> <mailto:gerencia@microexpressltda.com>> escribió en el mensaje
> news:48ee0cd5$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Tengo un Campo Autoincremental llave Primaria definido en una
> tabla de Sql
>
> [Row_ID] int IDENTITY(1, 1) NOT NULL
>
> Para facilidad manejo un TMemDataset exactamente igual al
> Dataset de la tabla.
> En el momento de Grabar uso el metodo SaveFrom(:oMemDataSet),
> resulta que SQL se queja por el Campo ROW_ID, como hacer para
> evitar que los campos Autoincremental NO se incluyan dentro
> del grabado o que el metodo Save() lo ignore ?
>
> En Mysql no existe este problema si le mando al campo ROW_ID
> el valor cero lo ignora y graba correctamente el numero
> siguiente disponible.
>
>
> --
>
> *José David Angulo.*
> *Auditorí­a y Sistemas Ltda. *
> Tel.(57) 5- 6643022 -- 6644555
>
> Cartagena - Colombia
> jose.angulo@auditoriaysistemas.com
> <mailto:Gerencia@microexpressltda.com>
>
>
--
movil
Mensajes: 46
Registrado: Vie Mar 09, 2007 1:12 pm

Campo Autoincremental en Sql

Mensaje por movil »

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
<title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Ignacio,<br>
<br>
Agregue la modificaciÃn del MÃtodo Savefrom() pero me genera el error
siguiente<br>
<br>
ÂÂÂÂÂ Subsistema: BASE<br>
ÂCÃdigo de error: 1004<br>
ÂÂÂÂÂÂ ÂÂÂ Estado: .F.<br>
ÂÂÂÂ DescripciÃn: Scope Violation <PROTECTED><br>
ÂÂÂÂÂÂ OperaciÃn: SETVALUE<br>
ÂÂÂÂÂ Argumentos:Â [ 1] = Tipo: O Valor: <br>
ÂÂÂÂÂÂ ÂÂ Fichero: <br>
ÂCÃdigo error SO: 0<br>
<br>
<br>
<br>
Ignacio Ortiz de ZÃÃiga escribiÃ:
<blockquote cite="mid:48ee916f$1@ozsrv2.ozlan.local" type="cite">
<title>Josà David Angulo</title>
<meta http-equiv="Content-Type" content="text/html; ">
<meta content="MSHTML 6.00.6000.16705" name="GENERATOR">
<div><font color="#000000" face="Arial" size="2">Josà David, </font></div>
<div>Â</div>
<div><font color="#000000" face="Arial" size="2">Me temo que no va a
funcionar. Hay que cambiar lo siguiente en la clase TDataSet. </font></div>
<div>Â</div>
<div><font color="#000000" face="Arial" size="2"> //---------------------------------------------------------- ---------------- </font></div>
<div>Â</div>
<div><font color="#000000" face="Arial" size="2">METHOD SaveFrom(
oData ) CLASS XDataSet</font></div>
<div>Â</div>
<div><font color="#000000" face="Arial" size="2">ÂÂ LOCAL
oTargetField, oSourceField<br>
ÂÂ LOCAL cField<br>
ÂÂ LOCAL nFor, nlen</font></div>
<div>Â</div>
<div><font color="#000000" face="Arial" size="2">ÂÂ IF
oData:IsKindOf( "TDataSet" )<br>
ÂÂÂÂÂ nLen := Len( oData:aFields )<br>
ÂÂÂÂÂ FOR nFor := 1 TO nLen<br>
ÂÂÂÂÂÂ ÂÂ oSourceField := oData:aFields[ nFor ]<br>
ÂÂÂÂÂÂ ÂÂ oTargetField := ::oFieldByName( oSourceField:cName )<br>
ÂÂÂÂÂÂ ÂÂ IF oTargetField != Nil<br>
ÂÂÂÂÂÂ ÂÂÂÂÂ oTargetField:VarPut( oSourceField:FieldGet() )<br>
>>>>>ÂÂ ÂÂÂÂÂÂ ÂÂÂ oTargetField:SetValue(
oSourceField:FieldGet() )<br>
ÂÂÂÂÂÂ ÂÂ ENDIF<br>
ÂÂÂÂÂ NEXT<br>
ÂÂ ELSE // oRecord<br>
ÂÂÂÂÂ nLen := oData:Len()<br>
ÂÂÂÂÂ FOR nFor := 1 TO nLen<br>
ÂÂÂÂÂÂ ÂÂ cField := oData:GetName( nFor )<br>
ÂÂÂÂÂÂ ÂÂ oTargetField := ::oFieldByName( cField )<br>
ÂÂÂÂÂÂ ÂÂ IF oTargetField != Nil<br>
ÂÂÂÂÂÂ ÂÂÂÂÂ oTargetField:VarPut( oData:GetValue( nFor ) )<br>
>>>>>ÂÂ ÂÂÂÂÂÂ ÂÂÂ oTargetField:SetValuet( oData:GetValue(
nFor ) )<br>
ÂÂÂÂÂÂ ÂÂ ENDIF<br>
ÂÂÂÂÂ NEXT<br>
ÂÂ ENDIF</font></div>
<div>Â</div>
<div><font color="#000000" face="Arial" size="2">RETURN Nil</font></div>
<div>Â</div>
<div><font color="#000000" face="Arial" size="2">AdemÃs es mucho mÃs
correcto definir asà el evento:</font></div>
<div>Â</div>
<div><font color="#000000" face="Arial" size="2">
</font>
<div><font color="#000000" face="Arial" size="2"><font color="#000000"
face="Arial" size="2">oDataField:OnSetValue := {| Value |ÂValue }</font></font></div>
</div>
<div><font color="#000000" face="Arial" size="2">Â</font></div>
<div><font color="#000000" face="Arial" size="2">Espero que te
funcione.<br>
</font></div>
<div><font color="#000000" face="Arial" size="2">Un saludo</font></div>
<div>Â</div>
<div>-- <br>
Ignacio Ortiz de ZÃÃiga<br>
[Soporte Xailer]<br>
[Xailer support]</div>
<div>Â</div>
<div>Â</div>
<blockquote dir="ltr"
style="border-left: 2px solid rgb(0, 0, 0); padding-right: 0px; padding-left: 5px; margin-left: 5px; margin-right: 0px;">
<div>"Ignacio Ortiz de ZÃÃiga" <<a moz-do-not-send="true"
href="mailto:NoName@xailer.com">NoName@xailer.com</a>> escribià en
el mensaje <a moz-do-not-send="true"
href="news:48ee8fc6$1@ozsrv2.ozlan.local">news:48ee8fc6$1@ozsrv2.ozlan.local</a>...</div>
<div><font color="#000000" face="Arial" size="2">Josà David, </font></div>
<div>Â</div>
<div><font color="#000000" face="Arial" size="2">Prueba con
oDataField:OnSetValue := {|| NIL }</font></div>
<div>Â</div>
<div><font color="#000000" face="Arial" size="2">Saludos</font></div>
<div><br>
-- <br>
Ignacio Ortiz de ZÃÃiga<br>
[Soporte Xailer]<br>
[Xailer support]</div>
<div>Â</div>
<div>Â</div>
<blockquote dir="ltr"
style="border-left: 2px solid rgb(0, 0, 0); padding-right: 0px; padding-left: 5px; margin-left: 5px; margin-right: 0px;">
<div>"Josà David Angulo" <<a moz-do-not-send="true"
href="mailto:gerencia@microexpressltda.com">gerencia@microexpressltda.com</a>>
escribià en el mensaje <a moz-do-not-send="true"
href="news:48ee0cd5$1@ozsrv2.ozlan.local">news:48ee0cd5$1@ozsrv2.ozlan.local</a>...</div>
<font size="-1"><font face="Verdana">Tengo un Campo
Autoincremental llave Primaria definido en una tabla de Sql <br>
<br>
Â[Row_ID] int IDENTITY(1, 1) NOT NULL<br>
<br>
Para facilidad manejo un TMemDataset exactamente igual al Dataset de la
tabla.<br>
En el momento de Grabar uso el metodo SaveFrom(:oMemDataSet), resulta
que SQL se queja por el Campo ROW_ID, como hacer para evitar que los
campos Autoincremental <big>NO</big> se incluyan dentro del grabado o
que el metodo Save() lo ignore ?<br>
<br>
En Mysql no existe este problema si le mando al campo ROW_ID el valor
cero lo ignora y graba correctamente el numero siguiente disponible.<br>
<br>
<br>
</font></font>
<div class="moz-signature">-- <br>
<meta content="OpenOffice.org 2.0 (Win32)" name="GENERATOR">
<meta content="20061023;14550935" name="CREATED">
<meta content="Jose Angulo" name="CHANGEDBY">
<meta content="20061023;14593800" name="CHANGED">
<meta content="Word.Document" name="ProgId">
<meta content="Microsoft Word 9" name="Originator">
<style>P {
COLOR: #000000
}
</style>
<p style="margin-bottom: 0cm;"><font size="2"><span
style="background: transparent none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><b><font
face="Century Gothic"><font color="#000080">Josà David Angulo.</font></font></b></span><font
face="Arial"><font color="#0000ff"><br>
</font></font></font><font face="Arial"><font color="#0000ff"><b><font
style="font-size: 11pt;" size="2">A<span lang="en-GB">uditorÃa y
Sistemas Ltda. </span></font></b><br>
<font style="font-size: 8pt;" size="1">Tel.</font></font></font><font
size="1"><font face="Century Gothic"><font color="#808080">(57) 5-
6643022 – 6644555</font></font></font></p>
<p style="margin-bottom: 0cm;"><font size="1"><font
face="Century Gothic"><font color="#808080">Cartagena - Colombia</font></font></font><br>
<a moz-do-not-send="true"
href="mailto:Gerencia@microexpressltda.com"><font
style="font-size: 9pt;" size="2">jose.angulo@auditoriaysistemas.com</font></a></p>
<p style="margin-bottom: 0cm;"><br>
</p>
</div>
</blockquote>
</blockquote>
</blockquote>
<br>
<div class="moz-signature">-- <br>
<meta http-equiv="CONTENT-TYPE" content="text/html; ">
<title>Josà David Angulo</title>
<meta name="GENERATOR" content="OpenOffice.org 2.0 (Win32)">
<meta name="CREATED" content="20060220;11005750">
<meta name="CHANGED" content="20061028;16242395">
<meta name="ProgId" content="Word.Document">
<meta name="Originator" content="Microsoft Word 9">
<style>
<!--
P { color: #000000 }
A:link { color: #0000ff }
A:visited { color: #800080 }
-->
</style>
<p style="margin-bottom: 0cm;"><font size="2"><span
style="background: transparent none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><b><font
face="Century Gothic"><font color="#000080">JosÃ
David Angulo.</font></font></b></span><font face="Arial"><font
color="#0000ff"><br>
</font></font></font><font face="Arial"><font color="#0000ff"><b><font
style="font-size: 11pt;" size="2">A<span lang="en-GB">uditorÃa
y Sistemas Ltda. </span></font></b></font></font>
</p>
<p style="margin-bottom: 0cm;"><font style="font-size: 8pt;" size="1"><font
face="Arial"><font color="#0000ff">Cartagena
- Colombia</font></font></font></p>
</div>
</body>
</html>
Responder