primary key?

How do u auto increment a primary key in vfp

Answer this question

primary key?

  • jbattat

    You just INSERT into the table and it happens automatically. For example here's a chunk of code that creates a database of my Windows Media Player music library.

    close databases all

    create database c:\temp\musiclib
    create table c:\temp\band ( iBand i autoinc, cBand c(60) )
    create table c:\temp\album ( iAlbum i autoinc, iBand i, cTitle c(80), dAdded d, cGuid c(38), iYear i )
    create table c:\temp\songs ( iSong i autoinc, iAlbum i, cTitle c(128), iLength i )
    set safety off

    lcRootPath = "C:\Documents and Settings\David\My Documents\My Music\"
    lnBands = adir( laBands, lcRootPath + "*.*", "D", 1 )

    for i = 3 to lnBands
    if ( ! "D" $ laBands[i,5] )
    loop
    endif
    if ( "My Playlists" $ laBands[i,1] )
    loop
    endif
    if ( "License Backup" $ laBands[i,1] )
    loop
    endif

    lcBand = alltrim( laBands[i,1] )
    @0,0 say lcBand + " "
    insert into band ( cBand ) values ( laBands[i,1] )
    lnAlbums = adir( laAlbums, lcRootPath + lcBand + "\*.*", "D", 1 )
    for j = 3 to lnAlbums
    lcAlbumPath = lcBand + "\" + alltrim( laAlbums[j,1] )
    @1,0 say lcAlbumPath + " "
    insert into album ( iBand, cTitle, dAdded, cGUID, iYear ) values ( band.iBand, ;
    laAlbums[j,1], ;
    {}, ;
    "", 0 )
    lnSongs = adir( laSongs, lcRootPath + lcAlbumPath + "\*.*", "HS", 1 )
    ldAdded = date() + 1000
    for k = 1 to lnSongs
    l = at( "{", laSongs[k,1] )
    if ( ( l > 0 ) and empty( album.cGUID ) and ( ".jpg" $ lower( laSongs[k,1] ) ) )
    lcStr = substr( laSongs[k,1], l, 38 )
    replace album.cGUID with lcStr, dAdded with laSongs[k,3] in album
    ldAdded = min( ldAdded, laSongs[k,3] )
    else
    if ( ( "custom.jpg" $ lower( laSongs[k,1] ) ) and empty( album.cGUID ) )
    replace cGUID with "custom.jpg" in album
    endif
    if ( ( ".wma" $ lower( laSongs[k,1] ) ) or ( ".mp3" $ lower( laSongs[k,1] ) ) )
    insert into songs ( iAlbum, cTitle, iLength ) values ;
    ( album.iAlbum, laSongs[k,1], 0 )
    ldAdded = min( ldAdded, laSongs[k,3] )
    endif
    endif
    if ( empty( album.dAdded ) )
    replace album.dAdded with ldAdded in album
    endif
    endfor
    endfor
    endfor



  • Raihan Iqbal

    Autoinc fields are a feature in newer versions (8+ )

    Before that you needed to do it in code. Here's a sample counter program to increment PKs.


  • Leonard Lee

    thanx for da help
  • primary key?